SPIRV-Tools/source/spirv_validator_options.h
Lei Zhang 44f27f9289 Allow relaxing validation of pointers in logical addressing mode
In HLSL structured buffer legalization, pointer to pointer types
are emitted to indicate a structured buffer variable should be
treated as an alias of some other variable. We need an option to
relax the check of pointer types in logical addressing mode to
catch other validation errors.
2018-01-08 10:36:23 -05:00

51 lines
1.8 KiB
C

// Copyright (c) 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef LIBSPIRV_SPIRV_VALIDATOR_OPTIONS_H_
#define LIBSPIRV_SPIRV_VALIDATOR_OPTIONS_H_
#include "spirv-tools/libspirv.h"
// Return true if the command line option for the validator limit is valid (Also
// returns the Enum for option in this case). Returns false otherwise.
bool spvParseUniversalLimitsOptions(const char* s, spv_validator_limit* limit);
// Default initialization of this structure is to the default Universal Limits
// described in the SPIR-V Spec.
struct validator_universal_limits_t {
uint32_t max_struct_members{16383};
uint32_t max_struct_depth{255};
uint32_t max_local_variables{524287};
uint32_t max_global_variables{65535};
uint32_t max_switch_branches{16383};
uint32_t max_function_args{255};
uint32_t max_control_flow_nesting_depth{1023};
uint32_t max_access_chain_indexes{255};
};
// Manages command line options passed to the SPIR-V Validator. New struct
// members may be added for any new option.
struct spv_validator_options_t {
spv_validator_options_t()
: universal_limits_(),
relax_struct_store(false),
relax_logcial_pointer(false) {}
validator_universal_limits_t universal_limits_;
bool relax_struct_store;
bool relax_logcial_pointer;
};
#endif // LIBSPIRV_SPIRV_VALIDATOR_OPTIONS_H_