/src/spirv-tools/source/spirv_validator_options.h
Line | Count | Source |
1 | | // Copyright (c) 2017 Google Inc. |
2 | | // |
3 | | // Licensed under the Apache License, Version 2.0 (the "License"); |
4 | | // you may not use this file except in compliance with the License. |
5 | | // You may obtain a copy of the License at |
6 | | // |
7 | | // http://www.apache.org/licenses/LICENSE-2.0 |
8 | | // |
9 | | // Unless required by applicable law or agreed to in writing, software |
10 | | // distributed under the License is distributed on an "AS IS" BASIS, |
11 | | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 | | // See the License for the specific language governing permissions and |
13 | | // limitations under the License. |
14 | | |
15 | | #ifndef SOURCE_SPIRV_VALIDATOR_OPTIONS_H_ |
16 | | #define SOURCE_SPIRV_VALIDATOR_OPTIONS_H_ |
17 | | |
18 | | #include "spirv-tools/libspirv.h" |
19 | | |
20 | | // Return true if the command line option for the validator limit is valid (Also |
21 | | // returns the Enum for option in this case). Returns false otherwise. |
22 | | bool spvParseUniversalLimitsOptions(const char* s, spv_validator_limit* limit); |
23 | | |
24 | | // Default initialization of this structure is to the default Universal Limits |
25 | | // described in the SPIR-V Spec. |
26 | | struct validator_universal_limits_t { |
27 | | uint32_t max_struct_members{16383}; |
28 | | uint32_t max_struct_depth{255}; |
29 | | uint32_t max_local_variables{524287}; |
30 | | uint32_t max_global_variables{65535}; |
31 | | uint32_t max_switch_branches{16383}; |
32 | | uint32_t max_function_args{255}; |
33 | | uint32_t max_control_flow_nesting_depth{1023}; |
34 | | uint32_t max_access_chain_indexes{255}; |
35 | | uint32_t max_id_bound{0x3FFFFF}; |
36 | | }; |
37 | | |
38 | | // Manages command line options passed to the SPIR-V Validator. New struct |
39 | | // members may be added for any new option. |
40 | | struct spv_validator_options_t { |
41 | | spv_validator_options_t() |
42 | 90.4k | : universal_limits_(), |
43 | 90.4k | relax_struct_store(false), |
44 | 90.4k | relax_logical_pointer(false), |
45 | 90.4k | relax_block_layout(false), |
46 | 90.4k | uniform_buffer_standard_layout(false), |
47 | 90.4k | scalar_block_layout(false), |
48 | 90.4k | workgroup_scalar_block_layout(false), |
49 | 90.4k | skip_block_layout(false), |
50 | 90.4k | allow_localsizeid(false), |
51 | 90.4k | allow_offset_texture_operand(false), |
52 | 90.4k | allow_vulkan_32_bit_bitwise(false), |
53 | 90.4k | before_hlsl_legalization(false), |
54 | 90.4k | use_friendly_names(true) {} |
55 | | |
56 | | validator_universal_limits_t universal_limits_; |
57 | | bool relax_struct_store; |
58 | | bool relax_logical_pointer; |
59 | | bool relax_block_layout; |
60 | | bool uniform_buffer_standard_layout; |
61 | | bool scalar_block_layout; |
62 | | bool workgroup_scalar_block_layout; |
63 | | bool skip_block_layout; |
64 | | bool allow_localsizeid; |
65 | | bool allow_offset_texture_operand; |
66 | | bool allow_vulkan_32_bit_bitwise; |
67 | | bool before_hlsl_legalization; |
68 | | bool use_friendly_names; |
69 | | }; |
70 | | |
71 | | #endif // SOURCE_SPIRV_VALIDATOR_OPTIONS_H_ |