Coverage Report

Created: 2026-05-16 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/spirv-tools/source/spirv_validator_options.h
Line
Count
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
90.4k
      : universal_limits_(),
43
90.4k
        relax_struct_store(false),
44
90.4k
        relax_logical_pointer(false),
45
90.4k
        relax_block_layout(false),
46
90.4k
        uniform_buffer_standard_layout(false),
47
90.4k
        scalar_block_layout(false),
48
90.4k
        workgroup_scalar_block_layout(false),
49
90.4k
        skip_block_layout(false),
50
90.4k
        allow_localsizeid(false),
51
90.4k
        allow_offset_texture_operand(false),
52
90.4k
        allow_vulkan_32_bit_bitwise(false),
53
90.4k
        before_hlsl_legalization(false),
54
90.4k
        use_friendly_names(true) {}
55
56
  validator_universal_limits_t universal_limits_;
57
  bool relax_struct_store;
58
  bool relax_logical_pointer;
59
  bool relax_block_layout;
60
  bool uniform_buffer_standard_layout;
61
  bool scalar_block_layout;
62
  bool workgroup_scalar_block_layout;
63
  bool skip_block_layout;
64
  bool allow_localsizeid;
65
  bool allow_offset_texture_operand;
66
  bool allow_vulkan_32_bit_bitwise;
67
  bool before_hlsl_legalization;
68
  bool use_friendly_names;
69
};
70
71
#endif  // SOURCE_SPIRV_VALIDATOR_OPTIONS_H_