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 | : universal_limits_(), |
43 | relax_struct_store(false), |
44 | relax_logical_pointer(false), |
45 | relax_block_layout(false), |
46 | uniform_buffer_standard_layout(false), |
47 | scalar_block_layout(false), |
48 | skip_block_layout(false), |
49 | before_hlsl_legalization(false) {} |
50 | |
51 | validator_universal_limits_t universal_limits_; |
52 | bool relax_struct_store; |
53 | bool relax_logical_pointer; |
54 | bool relax_block_layout; |
55 | bool uniform_buffer_standard_layout; |
56 | bool scalar_block_layout; |
57 | bool skip_block_layout; |
58 | bool before_hlsl_legalization; |
59 | }; |
60 | |
61 | #endif // SOURCE_SPIRV_VALIDATOR_OPTIONS_H_ |
62 | |