Home | History | Annotate | Download | only in 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       : universal_limits_(),
     43         relax_struct_store(false),
     44         relax_logical_pointer(false),
     45         relax_block_layout(false),
     46         scalar_block_layout(false),
     47         skip_block_layout(false) {}
     48 
     49   validator_universal_limits_t universal_limits_;
     50   bool relax_struct_store;
     51   bool relax_logical_pointer;
     52   bool relax_block_layout;
     53   bool scalar_block_layout;
     54   bool skip_block_layout;
     55 };
     56 
     57 #endif  // SOURCE_SPIRV_VALIDATOR_OPTIONS_H_
     58