Update path-to-regexp to address CVE-2024-45296 (#5895)
[KhronosGroup/SPIRV-Tools.git] / source / spirv_validator_options.h
blob01450480c91073794ab058f89f1e8989384f3ed3
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.
15 #ifndef SOURCE_SPIRV_VALIDATOR_OPTIONS_H_
16 #define SOURCE_SPIRV_VALIDATOR_OPTIONS_H_
18 #include "spirv-tools/libspirv.h"
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);
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};
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 workgroup_scalar_block_layout(false),
49 skip_block_layout(false),
50 allow_localsizeid(false),
51 before_hlsl_legalization(false),
52 use_friendly_names(true) {}
54 validator_universal_limits_t universal_limits_;
55 bool relax_struct_store;
56 bool relax_logical_pointer;
57 bool relax_block_layout;
58 bool uniform_buffer_standard_layout;
59 bool scalar_block_layout;
60 bool workgroup_scalar_block_layout;
61 bool skip_block_layout;
62 bool allow_localsizeid;
63 bool before_hlsl_legalization;
64 bool use_friendly_names;
67 #endif // SOURCE_SPIRV_VALIDATOR_OPTIONS_H_