1 // Copyright (c) 2017 Google Inc.
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
7 // http://www.apache.org/licenses/LICENSE-2.0
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_