• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
spv_validator_options_tspv_validator_options_t41   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         workgroup_scalar_block_layout(false),
49         skip_block_layout(false),
50         before_hlsl_legalization(false) {}
51 
52   validator_universal_limits_t universal_limits_;
53   bool relax_struct_store;
54   bool relax_logical_pointer;
55   bool relax_block_layout;
56   bool uniform_buffer_standard_layout;
57   bool scalar_block_layout;
58   bool workgroup_scalar_block_layout;
59   bool skip_block_layout;
60   bool before_hlsl_legalization;
61 };
62 
63 #endif  // SOURCE_SPIRV_VALIDATOR_OPTIONS_H_
64