aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-autoroll <android-autoroll@skia-public.iam.gserviceaccount.com>2023-12-06 20:15:24 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-12-06 20:15:24 +0000
commita61ba5dc070c52487ba146fa4e710d695a708d4d (patch)
tree0f855a1162f13c8c715e698b3590f2f650e5e1aa
parent60bad7277d4b97a743cc2f5415783d8aeb6a7941 (diff)
parenta4137bf2c5832b1382eeb9876d813eceb3602c38 (diff)
downloadangle-a61ba5dc070c52487ba146fa4e710d695a708d4d.tar.gz
Roll ANGLE from d7077e9f33d3 to bc7af34c5492 (6 revisions) am: a4137bf2c5
Original change: https://android-review.googlesource.com/c/platform/external/angle/+/2862287 Change-Id: I93c2568eecc478703a6824675a8ba757e3915508 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--DEPS36
-rw-r--r--build/config/mac/BUILD.gn9
-rw-r--r--build/config/sanitizers/sanitizers.gni4
-rwxr-xr-xbuild/get_landmines.py2
-rw-r--r--build/toolchain/nacl/BUILD.gn13
-rw-r--r--build/util/LASTCHANGE2
-rw-r--r--build/util/LASTCHANGE.committime2
-rw-r--r--build/util/lastchange.gni2
-rw-r--r--scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json2
-rw-r--r--scripts/code_generation_hashes/restricted_traces.json2
-rw-r--r--src/libANGLE/renderer/vulkan/vk_helpers.cpp10
-rw-r--r--src/tests/restricted_traces/restricted_traces.json1
-rw-r--r--src/tests/test_utils/runner/TestSuite.cpp2
-rw-r--r--third_party/vulkan-deps/DEPS16
-rw-r--r--third_party/vulkan-deps/glslang/src/.github/workflows/continuous_deployment.yml6
-rw-r--r--third_party/vulkan-deps/glslang/src/.github/workflows/continuous_integration.yml28
-rw-r--r--third_party/vulkan-deps/glslang/src/CMakeLists.txt72
-rw-r--r--third_party/vulkan-deps/glslang/src/External/CMakeLists.txt4
-rw-r--r--third_party/vulkan-deps/glslang/src/README.md8
-rw-r--r--third_party/vulkan-deps/glslang/src/SPIRV/CMakeLists.txt2
-rw-r--r--third_party/vulkan-deps/glslang/src/StandAlone/CMakeLists.txt2
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/CMakeLists.txt2
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/Include/intermediate.h11
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang.y7
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang_tab.cpp2951
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/preprocessor/PpContext.h5
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/OSDependent/Unix/CMakeLists.txt2
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/OSDependent/Windows/CMakeLists.txt2
-rw-r--r--third_party/vulkan-deps/glslang/src/glslang/ResourceLimits/resource_limits_c.cpp16
-rw-r--r--third_party/vulkan-deps/glslang/src/gtests/CMakeLists.txt19
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/.github/workflows/ios.yml2
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/instrument.hpp70
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/fold_spec_constant_op_and_composite_pass.cpp5
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/inst_bindless_check_pass.h2
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/inst_buff_addr_check_pass.h5
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.cpp39
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.h33
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.cpp72
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.h13
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/test/opt/fold_spec_const_op_composite_test.cpp25
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/test/opt/inst_bindless_check_test.cpp253
-rw-r--r--third_party/vulkan-deps/spirv-tools/src/test/opt/inst_debug_printf_test.cpp47
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.cppm23
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.hpp86
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_core.h93
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp21
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_extension_inspection.hpp22
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_handles.hpp12
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_hash.hpp152
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_static_assertions.hpp56
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_structs.hpp1167
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_to_string.hpp25
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/registry/validusage.json1306
-rw-r--r--third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml105
54 files changed, 4319 insertions, 2555 deletions
diff --git a/DEPS b/DEPS
index f5a1ce1bda..4ca5592eff 100644
--- a/DEPS
+++ b/DEPS
@@ -45,7 +45,7 @@ vars = {
'checkout_angle_mesa': False,
# Version of Chromium our Chromium-based DEPS are mirrored from.
- 'chromium_revision': '624a7aa7a0538a6ca2324faacb2023722a807c58',
+ 'chromium_revision': 'd6f0715fbaaf8489d7d6c45a6ee50233678f5318',
# We never want to checkout chromium,
# but need a dummy DEPS entry for the autoroller
'dummy_checkout_chromium': False,
@@ -90,7 +90,7 @@ vars = {
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling catapult
# and whatever else without interference from each other.
- 'catapult_revision': 'e9e09fc19c2f7be8ce55110dfb938fdd5b3b9543',
+ 'catapult_revision': '093f85fdf881a3136ccbde54828438814120af96',
# the commit queue can handle CLs rolling Fuchsia sdk
# and whatever else without interference from each other.
@@ -145,12 +145,12 @@ vars = {
deps = {
'build': {
- 'url': Var('chromium_git') + '/chromium/src/build.git@b2f7b933832963a3a544dca9300266242fed599e',
+ 'url': Var('chromium_git') + '/chromium/src/build.git@7d0812ef48f15b342cee12535fcf7f8f7583b343',
'condition': 'not build_with_chromium',
},
'buildtools': {
- 'url': Var('chromium_git') + '/chromium/src/buildtools.git@0ac67b7cef80e421283f633ee9c2ce652f6e42cc',
+ 'url': Var('chromium_git') + '/chromium/src/buildtools.git@894e045303a623914a36c083d4df4fe70b24fc97',
'condition': 'not build_with_chromium',
},
@@ -204,7 +204,7 @@ deps = {
},
'testing': {
- 'url': '{chromium_git}/chromium/src/testing@4837aac5d8901df4ce0e4733136c1b1801f2152d',
+ 'url': '{chromium_git}/chromium/src/testing@dbd7cb3e68da17567164a74b48a833db2e779819',
'condition': 'not build_with_chromium',
},
@@ -375,7 +375,7 @@ deps = {
},
'third_party/depot_tools': {
- 'url': Var('chromium_git') + '/chromium/tools/depot_tools.git@963000950bc08f9dca9dde2d7a40e71079d606ae',
+ 'url': Var('chromium_git') + '/chromium/tools/depot_tools.git@916dda0a0b15bc08af8a8877593d9ddf94e8a610',
'condition': 'not build_with_chromium',
},
@@ -489,7 +489,7 @@ deps = {
},
'third_party/libc++/src': {
- 'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git@caccdb0407e84357ca6490165e88dcad64e47d17',
+ 'url': Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git@7f2dd14f5de9f8de0c5380a048cf552288c83e2b',
'condition': 'not build_with_chromium',
},
@@ -576,7 +576,7 @@ deps = {
'packages': [
{
'package': 'chromium/third_party/r8',
- 'version': 'RVHUDXQq4bO_rJwe8vsZtb57_mnqCVm0WNcp0H9bLecC',
+ 'version': 'ntZT6d-gLBdyTo-D6ie-hZXbQqDe_YNG3RK5ah85jBsC',
},
],
'condition': 'checkout_android and not build_with_chromium',
@@ -643,7 +643,7 @@ deps = {
},
'third_party/vulkan-deps': {
- 'url': Var('chromium_git') + '/vulkan-deps@66a2496b8cff320fdc5aa4df77a33106fcc1e67e',
+ 'url': Var('chromium_git') + '/vulkan-deps@bc34fe665e8478f92d64bd2f3d054a5bc838df34',
'condition': 'not build_with_chromium',
},
@@ -663,12 +663,12 @@ deps = {
},
'tools/android': {
- 'url': Var('chromium_git') + '/chromium/src/tools/android@60751d2b6f7f9a445b04431cb9542c9caabd14c8',
+ 'url': Var('chromium_git') + '/chromium/src/tools/android@925b4391a16758e605b901f45e6a00ccbdd3a7e0',
'condition': 'checkout_android and not build_with_chromium',
},
'tools/clang': {
- 'url': Var('chromium_git') + '/chromium/src/tools/clang.git@90bafacea8b63686eb658a8249a9f719e0df9981',
+ 'url': Var('chromium_git') + '/chromium/src/tools/clang.git@991b697d2c50e34d66e435ae5fbed21dbd140735',
'condition': 'not build_with_chromium',
},
@@ -699,7 +699,7 @@ deps = {
},
'tools/mb': {
- 'url': Var('chromium_git') + '/chromium/src/tools/mb@55f4b3f9c48f7906820073ca572c82b9ee49e6b5',
+ 'url': Var('chromium_git') + '/chromium/src/tools/mb@2206f69ffdbbae9e171a2012445d3d04664ad943',
'condition': 'not build_with_chromium',
},
@@ -714,7 +714,7 @@ deps = {
},
'tools/perf': {
- 'url': Var('chromium_git') + '/chromium/src/tools/perf@569c4f0b27903b7ea2f287d08c970389f9e429cd',
+ 'url': Var('chromium_git') + '/chromium/src/tools/perf@3044fe1fd31cfc2713c45ea971f0b89032242240',
'condition': 'not build_with_chromium',
},
@@ -3148,6 +3148,16 @@ deps = {
'dep_type': 'cipd',
'condition': 'checkout_angle_restricted_traces',
},
+ 'src/tests/restricted_traces/warcraft_rumble': {
+ 'packages': [
+ {
+ 'package': 'angle/traces/warcraft_rumble',
+ 'version': 'version:1',
+ },
+ ],
+ 'dep_type': 'cipd',
+ 'condition': 'checkout_angle_restricted_traces',
+ },
'src/tests/restricted_traces/wayward_souls': {
'packages': [
{
diff --git a/build/config/mac/BUILD.gn b/build/config/mac/BUILD.gn
index 85a668d330..73f50eabdb 100644
--- a/build/config/mac/BUILD.gn
+++ b/build/config/mac/BUILD.gn
@@ -26,14 +26,7 @@ config("compiler") {
} else {
assert(false, "unknown current_cpu $current_cpu")
}
- if (host_os == "mac") {
- common_mac_flags += [
- "-arch",
- clang_arch,
- ]
- } else {
- common_mac_flags += [ "--target=$clang_arch-apple-macos" ]
- }
+ common_mac_flags += [ "--target=$clang_arch-apple-macos" ]
# This is here so that all files get recompiled after an Xcode update.
# (defines are passed via the command line, and build system rebuild things
diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni
index 928c9a4573..0cf761ab2c 100644
--- a/build/config/sanitizers/sanitizers.gni
+++ b/build/config/sanitizers/sanitizers.gni
@@ -199,9 +199,7 @@ use_prebuilt_instrumented_libraries = is_msan
use_fuzzing_engine =
use_libfuzzer || use_afl || use_centipede || use_external_fuzzing_engine
-# Whether the current fuzzing engine supports libprotobuf_mutator. Right now
-# this is just libfuzzer, but others are likely to support this in future,
-# so it's preferable to check this.
+# Whether the current fuzzing engine supports libprotobuf_mutator.
use_fuzzing_engine_with_lpm = use_libfuzzer || use_centipede
# Whether the fuzzing engine supports fuzzers which supply their own
diff --git a/build/get_landmines.py b/build/get_landmines.py
index 6155d71dec..0c3cf4ca44 100755
--- a/build/get_landmines.py
+++ b/build/get_landmines.py
@@ -80,6 +80,8 @@ def print_landmines():
print('Clobber to flush stale generated files. See crbug.com/1406628')
print('Clobber to flush old .ninja_log files for updating ninja. '
'See crbug.com/1406628#c14')
+ if host_os() == 'mac':
+ print('Clobber to clear old nocompile targets. See crbug.com/1497005.')
def main():
diff --git a/build/toolchain/nacl/BUILD.gn b/build/toolchain/nacl/BUILD.gn
index 2f159a17b8..08cde5ee9f 100644
--- a/build/toolchain/nacl/BUILD.gn
+++ b/build/toolchain/nacl/BUILD.gn
@@ -250,6 +250,19 @@ template("nacl_irt_toolchain") {
# so we need to link w/ the C++ linker.
ld = "${python_path} ${link_irt} --tls-edit=${tls_edit} --link-cmd=${cxx} --readelf-cmd=${readelf}"
+ # reclient requires explicit upload of toolchain lib
+ if (is_chromeos_ash && use_remoteexec) {
+ if (defined(invoker.extra_cppflags) && invoker.extra_cppflags != "") {
+ extra_cppflags = " " + invoker.extra_cppflags
+ } else {
+ extra_cppflags = ""
+ }
+
+ libdir = rebase_path("${nacl_toolchain_dir}/${toolchain_package}/lib",
+ root_build_dir)
+ extra_cppflags += " -B${libdir}"
+ }
+
toolchain_args = {
current_cpu = toolchain_cpu
is_clang = true
diff --git a/build/util/LASTCHANGE b/build/util/LASTCHANGE
index 0ed48dd90b..d8597fe401 100644
--- a/build/util/LASTCHANGE
+++ b/build/util/LASTCHANGE
@@ -1,2 +1,2 @@
-LASTCHANGE=b2f7b933832963a3a544dca9300266242fed599e-refs/heads/main@{#1233162}
+LASTCHANGE=7d0812ef48f15b342cee12535fcf7f8f7583b343-refs/heads/main@{#1233759}
LASTCHANGE_YEAR=2023
diff --git a/build/util/LASTCHANGE.committime b/build/util/LASTCHANGE.committime
index ee7c0b38ec..086658199e 100644
--- a/build/util/LASTCHANGE.committime
+++ b/build/util/LASTCHANGE.committime
@@ -1 +1 @@
-1701746444 \ No newline at end of file
+1701837197 \ No newline at end of file
diff --git a/build/util/lastchange.gni b/build/util/lastchange.gni
index 909b9789ff..8ed577a20b 100644
--- a/build/util/lastchange.gni
+++ b/build/util/lastchange.gni
@@ -6,7 +6,7 @@
# reproducible binaries.
declare_args() {
- use_dummy_lastchange = false
+ use_dummy_lastchange = !is_official_build
}
if (use_dummy_lastchange) {
diff --git a/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json b/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
index ad13964aa4..dbcd3f2e4a 100644
--- a/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
+++ b/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
@@ -10,5 +10,5 @@
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
"96ac9e08704b7a086f7c8db5d213de2b",
"third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml":
- "9be3b6805f55e1735e3106fdc06edd5e"
+ "3c78a5526494a2a25dff01d0f5f314a3"
}
diff --git a/scripts/code_generation_hashes/restricted_traces.json b/scripts/code_generation_hashes/restricted_traces.json
index 666c8041d4..99e951e723 100644
--- a/scripts/code_generation_hashes/restricted_traces.json
+++ b/scripts/code_generation_hashes/restricted_traces.json
@@ -4,5 +4,5 @@
"src/tests/restricted_traces/gen_restricted_traces.py":
"e2fdeb9840527e3d0dc959a67bafdd0e",
"src/tests/restricted_traces/restricted_traces.json":
- "338eef86efffa78fcc684edb0e5a82c6"
+ "01f21a3b2dbeeee47f026544f6263d14"
}
diff --git a/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/src/libANGLE/renderer/vulkan/vk_helpers.cpp
index 66e494839e..419800416e 100644
--- a/src/libANGLE/renderer/vulkan/vk_helpers.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_helpers.cpp
@@ -9857,6 +9857,8 @@ angle::Result ImageHelper::readPixelsImpl(ContextVk *contextVk,
uint32_t layer,
void *pixels)
{
+ ANGLE_TRACE_EVENT0("gpu.angle", "ImageHelper::readPixelsImpl");
+
RendererVk *renderer = contextVk->getRenderer();
bool isExternalFormat = getExternalFormat() != 0;
@@ -10002,6 +10004,8 @@ angle::Result ImageHelper::readPixelsImpl(ContextVk *contextVk,
// If PBO and if possible, copy directly on the GPU.
if (packPixelsParams.packBuffer)
{
+ ANGLE_TRACE_EVENT0("gpu.angle", "ImageHelper::readPixelsImpl - PBO");
+
const ptrdiff_t pixelsOffset = reinterpret_cast<ptrdiff_t>(pixels);
if (canCopyWithTransformForReadPixels(packPixelsParams, readFormat, pixelsOffset))
{
@@ -10036,6 +10040,8 @@ angle::Result ImageHelper::readPixelsImpl(ContextVk *contextVk,
}
}
+ ANGLE_TRACE_EVENT0("gpu.angle", "ImageHelper::readPixelsImpl - CPU Readback");
+
RendererScoped<vk::BufferHelper> readBuffer(renderer);
vk::BufferHelper *stagingBuffer = &readBuffer.get();
@@ -10101,6 +10107,8 @@ angle::Result ImageHelper::packReadPixelBuffer(ContextVk *contextVk,
if (readFormat.isBlock)
{
+ ANGLE_TRACE_EVENT0("gpu.angle", "ImageHelper::packReadPixelBuffer - Block");
+
ASSERT(readFormat == aspectFormat);
const LevelIndex levelVk = toVkLevel(levelGL);
@@ -10115,6 +10123,8 @@ angle::Result ImageHelper::packReadPixelBuffer(ContextVk *contextVk,
}
else if (packPixelsParams.packBuffer)
{
+ ANGLE_TRACE_EVENT0("gpu.angle", "ImageHelper::packReadPixelBuffer - PBO");
+
// Must map the PBO in order to read its contents (and then unmap it later)
BufferVk *packBufferVk = GetImpl(packPixelsParams.packBuffer);
void *mapPtr = nullptr;
diff --git a/src/tests/restricted_traces/restricted_traces.json b/src/tests/restricted_traces/restricted_traces.json
index 45e9759639..81518c52e6 100644
--- a/src/tests/restricted_traces/restricted_traces.json
+++ b/src/tests/restricted_traces/restricted_traces.json
@@ -245,6 +245,7 @@
"vainglory 1",
"walking_dead_survivors 1",
"war_planet_online 1",
+ "warcraft_rumble 1",
"wayward_souls 1",
"whatsapp 5",
"words_crush 1",
diff --git a/src/tests/test_utils/runner/TestSuite.cpp b/src/tests/test_utils/runner/TestSuite.cpp
index d313e7aab4..2be88dc9b3 100644
--- a/src/tests/test_utils/runner/TestSuite.cpp
+++ b/src/tests/test_utils/runner/TestSuite.cpp
@@ -992,7 +992,7 @@ TestSuite::TestSuite(int *argc, char **argv, std::function<void()> registerTests
#endif
#if defined(ANGLE_PLATFORM_WINDOWS)
- testing::GTEST_FLAG(catch_exceptions) = false;
+ GTEST_FLAG_SET(catch_exceptions, false);
#endif
if (*argc <= 0)
diff --git a/third_party/vulkan-deps/DEPS b/third_party/vulkan-deps/DEPS
index d546f271e1..df144ab559 100644
--- a/third_party/vulkan-deps/DEPS
+++ b/third_party/vulkan-deps/DEPS
@@ -10,31 +10,31 @@ vars = {
'chromium_git': 'https://chromium.googlesource.com',
# Current revision of glslang, the Khronos SPIRV compiler.
- 'glslang_revision': 'a1138bacff8069c77bd9a303edd99b5f5712409d',
+ 'glslang_revision': '0fedf7d95ad9c183279c279f3912c2da6d7fd0a5',
# Current revision of spirv-cross, the Khronos SPIRV cross compiler.
- 'spirv_cross_revision': 'a3da0e87fa1a6aacdf32c5e729a653b60afe82af',
+ 'spirv_cross_revision': '7c335edc663c3cb4dc2cf1babde987d9a8f9d15b',
# Current revision fo the SPIRV-Headers Vulkan support library.
'spirv_headers_revision': 'cca08c63cefa129d082abca0302adcb81610b465',
# Current revision of SPIRV-Tools for Vulkan.
- 'spirv_tools_revision': '0d87845532579ec3787165cc55635c95180463e0',
+ 'spirv_tools_revision': '6b4f0c9d0b7d02db5ed0b03433ae62c03bbff722',
# Current revision of Khronos Vulkan-Headers.
- 'vulkan_headers_revision': '9d27c893cdfc8d96bc8ad5f6f4d88743f958305e',
+ 'vulkan_headers_revision': '19a863ccce773ff393b186329478b1eb1a519fd3',
# Current revision of Khronos Vulkan-Loader.
- 'vulkan_loader_revision': 'f4ae60be27a7068494ff2be9cf434e3a322330e9',
+ 'vulkan_loader_revision': 'b79c10bac1d311cc16891f9a1f29ab58c602760f',
# Current revision of Khronos Vulkan-Tools.
- 'vulkan_tools_revision': '98d168c168041bc026bb55b11c59b256f8162791',
+ 'vulkan_tools_revision': '67cda9672b97daa9a3eb6d74639e5d87dd6ef463',
# Current revision of Khronos Vulkan-Utility-Libraries.
- 'vulkan_utility_libraries_revision': '1fb77ad1d40ee127834436d92efc3a0e626dd91f',
+ 'vulkan_utility_libraries_revision': '2feac587338c7e1b631b2ef9bd6e894d7ad7f56d',
# Current revision of Khronos Vulkan-ValidationLayers.
- 'vulkan_validation_revision': '7add1ebaaf489685519b04d67831194f93592223',
+ 'vulkan_validation_revision': '8739b87fcf30c631c0193546b6420cd2f9e7c6a9',
}
deps = {
diff --git a/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_deployment.yml b/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_deployment.yml
index 08305d5e80..fd0b964412 100644
--- a/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_deployment.yml
+++ b/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_deployment.yml
@@ -42,7 +42,7 @@ jobs:
cmake_build_type: [Debug, Release]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
@@ -106,7 +106,7 @@ jobs:
cmake_build_type: [Debug, Release]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
@@ -163,7 +163,7 @@ jobs:
cmake_build_type: [Debug, Release]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
diff --git a/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_integration.yml b/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_integration.yml
index 8838f5bd15..5e3bd4270b 100644
--- a/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_integration.yml
+++ b/third_party/vulkan-deps/glslang/src/.github/workflows/continuous_integration.yml
@@ -18,7 +18,7 @@ jobs:
cmake_build_type: [Debug, Release]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
@@ -28,7 +28,7 @@ jobs:
key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}
- run: ./update_glslang_sources.py
- name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON
+ run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON
env:
CC: ${{matrix.compiler.cc}}
CXX: ${{matrix.compiler.cxx}}
@@ -54,7 +54,7 @@ jobs:
flags: ['-fsanitize=address', '-fsanitize=thread']
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
@@ -64,7 +64,7 @@ jobs:
key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}}
- run: ./update_glslang_sources.py
- name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
+ run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -D GLSLANG_TESTS=ON
env:
CC: ${{matrix.compiler.cc}}
CXX: ${{matrix.compiler.cxx}}
@@ -92,7 +92,7 @@ jobs:
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
with:
cmakeVersion: 3.17.2
- name: Setup ccache
@@ -101,7 +101,7 @@ jobs:
key: linux_backcompat
- run: ./update_glslang_sources.py
- name: Configure
- run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
+ run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release -D GLSLANG_TESTS=ON
env:
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
@@ -124,9 +124,9 @@ jobs:
cmake_build_type: [Debug, Release]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- run: ./update_glslang_sources.py
- - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON
+ - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON
env:
CC: ${{matrix.compiler.cc}}
CXX: ${{matrix.compiler.cxx}}
@@ -148,14 +148,14 @@ jobs:
cmake_build_type: [Debug, Release]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
- run: python update_glslang_sources.py
- name: Build
run: |
- cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON
+ cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON
cmake --build build --config ${{matrix.cmake_build_type}} --target install
- name: Test
run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build
@@ -166,7 +166,7 @@ jobs:
runs-on: macos-13
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- name: Setup ccache
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
with:
@@ -195,7 +195,7 @@ jobs:
LEGACY: [ON, OFF]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- name: Setup ccache
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
with:
@@ -221,7 +221,7 @@ jobs:
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
with:
python-version: '3.7'
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- name: Setup ccache
uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10
with:
@@ -230,7 +230,7 @@ jobs:
- name: Update Glslang Sources
run: ./update_glslang_sources.py
- name: Configure
- run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DBUILD_TESTING=OFF -DENABLE_OPT=OFF
+ run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DENABLE_OPT=OFF
env:
CMAKE_GENERATOR: Ninja
CMAKE_C_COMPILER_LAUNCHER: ccache
diff --git a/third_party/vulkan-deps/glslang/src/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/CMakeLists.txt
index e0802af80a..5cdd3e31ab 100644
--- a/third_party/vulkan-deps/glslang/src/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/CMakeLists.txt
@@ -33,6 +33,11 @@
cmake_minimum_required(VERSION 3.17.2)
project(glslang)
+if (CMAKE_VERSION VERSION_LESS "3.21")
+ # https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
+ string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL)
+endif()
+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Adhere to GNU filesystem layout conventions
@@ -70,16 +75,9 @@ endif()
# Furthermore testing is equally problematic.
if (IOS OR ANDROID)
set(ENABLE_GLSLANG_BINARIES OFF)
-
- set(ENABLE_CTEST OFF)
- set(BUILD_TESTING OFF)
+ set(GLSLANG_TESTS OFF)
endif()
-option(SKIP_GLSLANG_INSTALL "Skip installation")
-
-if(NOT ${SKIP_GLSLANG_INSTALL})
- set(ENABLE_GLSLANG_INSTALL ON)
-endif()
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON)
option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON)
@@ -107,11 +105,6 @@ if(MINGW OR (APPLE AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU"))
endif()
option(ENABLE_PCH "Enables Precompiled header" ON)
-option(ENABLE_CTEST "Enables testing" ON)
-
-if(ENABLE_CTEST)
- include(CTest)
-endif()
if(ENABLE_HLSL)
add_compile_definitions(ENABLE_HLSL)
@@ -306,34 +299,39 @@ if(ENABLE_GLSLANG_BINARIES)
add_subdirectory(StandAlone)
endif()
add_subdirectory(SPIRV)
-if(ENABLE_CTEST)
- add_subdirectory(gtests)
-endif()
-if(ENABLE_CTEST AND BUILD_TESTING)
- # glslang-testsuite runs a bash script on Windows.
- # Make sure to use '-o igncr' flag to ignore carriage returns (\r).
- set(IGNORE_CR_FLAG "")
- if(WIN32)
- set(IGNORE_CR_FLAG -o igncr)
- endif()
+# Testing / installation only makes sense when the project is top level.
+#
+# Otherwise add_subdirectory users have a harder time consuming the library.
+# Since glslang will pollute the installation and add undesirable testing.
+if(PROJECT_IS_TOP_LEVEL)
+ option(GLSLANG_TESTS "Enable glslang testing")
+ if(GLSLANG_TESTS)
+ enable_testing()
+ add_subdirectory(gtests)
+
+ # glslang-testsuite runs a bash script on Windows.
+ # Make sure to use '-o igncr' flag to ignore carriage returns (\r).
+ set(IGNORE_CR_FLAG "")
+ if(WIN32)
+ set(IGNORE_CR_FLAG -o igncr)
+ endif()
- if (CMAKE_CONFIGURATION_TYPES)
- set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/localResults)
- set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/glslang)
- set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/spirv-remap)
- else()
- set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
- set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang)
- set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
- endif()
+ if (CMAKE_CONFIGURATION_TYPES)
+ set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/localResults)
+ set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/glslang)
+ set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIG>/spirv-remap)
+ else()
+ set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
+ set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang)
+ set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
+ endif()
- add_test(NAME glslang-testsuite
- COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/)
-endif()
+ add_test(NAME glslang-testsuite
+ COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/)
+ endif()
-if(ENABLE_GLSLANG_INSTALL)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
@PACKAGE_INIT@
@INSTALL_CONFIG_UNIX@
diff --git a/third_party/vulkan-deps/glslang/src/External/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/External/CMakeLists.txt
index cbabd2e3b4..46284fd5ba 100644
--- a/third_party/vulkan-deps/glslang/src/External/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/External/CMakeLists.txt
@@ -34,7 +34,7 @@
# Suppress all warnings from external projects.
set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w)
-if(BUILD_TESTING)
+if(GLSLANG_TESTS)
if(TARGET gmock)
message(STATUS "Google Mock already configured - use it")
elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
@@ -71,7 +71,7 @@ endif()
if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools)
+ add_subdirectory(spirv-tools)
endif()
endif()
diff --git a/third_party/vulkan-deps/glslang/src/README.md b/third_party/vulkan-deps/glslang/src/README.md
index 2ea6c1b72b..443881083a 100644
--- a/third_party/vulkan-deps/glslang/src/README.md
+++ b/third_party/vulkan-deps/glslang/src/README.md
@@ -171,6 +171,10 @@ cmake --build . --config Release --target install
If using MSVC, after running CMake to configure, use the
Configuration Manager to check the `INSTALL` project.
+If you want to enable testing via CMake set `GLSLANG_TESTS=ON` when configuring the build.
+
+`GLSLANG_TESTS` is off by default to streamline the packaging / Vulkan SDK process.
+
### Building (GN)
glslang can also be built with the [GN build system](https://gn.googlesource.com/gn/).
@@ -228,7 +232,7 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception
Bash-like environments:
+ [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
* Wrap cmake call: `emcmake cmake`
-* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF`.
+* Set `-DENABLE_OPT=OFF`.
* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
* To get a fully minimized build, make sure to use `brotli` to compress the .js
@@ -238,7 +242,7 @@ Example:
```sh
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
- -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF ..
+ -DENABLE_HLSL=OFF -DENABLE_OPT=OFF ..
```
## Building glslang - Using vcpkg
diff --git a/third_party/vulkan-deps/glslang/src/SPIRV/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/SPIRV/CMakeLists.txt
index 9918b1de27..61c7a266fc 100644
--- a/third_party/vulkan-deps/glslang/src/SPIRV/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/SPIRV/CMakeLists.txt
@@ -118,7 +118,7 @@ if(WIN32)
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif()
-if(ENABLE_GLSLANG_INSTALL)
+if(PROJECT_IS_TOP_LEVEL)
if (ENABLE_SPVREMAPPER)
install(TARGETS SPVRemapper EXPORT glslang-targets)
endif()
diff --git a/third_party/vulkan-deps/glslang/src/StandAlone/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/StandAlone/CMakeLists.txt
index 45ad26ef42..459657ab98 100644
--- a/third_party/vulkan-deps/glslang/src/StandAlone/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/StandAlone/CMakeLists.txt
@@ -87,7 +87,7 @@ if(WIN32)
source_group("Source" FILES ${SOURCES})
endif()
-if(ENABLE_GLSLANG_INSTALL)
+if(PROJECT_IS_TOP_LEVEL)
install(TARGETS glslang-standalone EXPORT glslang-targets)
# Backward compatibility
diff --git a/third_party/vulkan-deps/glslang/src/glslang/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/glslang/CMakeLists.txt
index 6552290bfd..37eecaadd4 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/glslang/CMakeLists.txt
@@ -227,7 +227,7 @@ endif()
################################################################################
# install
################################################################################
-if(ENABLE_GLSLANG_INSTALL)
+if(PROJECT_IS_TOP_LEVEL)
install(TARGETS glslang EXPORT glslang-targets)
if(NOT BUILD_SHARED_LIBS)
install(TARGETS MachineIndependent EXPORT glslang-targets)
diff --git a/third_party/vulkan-deps/glslang/src/glslang/Include/intermediate.h b/third_party/vulkan-deps/glslang/src/glslang/Include/intermediate.h
index 9d311d60b5..b0e154e92b 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/Include/intermediate.h
+++ b/third_party/vulkan-deps/glslang/src/glslang/Include/intermediate.h
@@ -48,14 +48,9 @@
#ifndef __INTERMEDIATE_H
#define __INTERMEDIATE_H
-#if defined(_MSC_VER) && _MSC_VER >= 1900
- #pragma warning(disable : 4464) // relative include path contains '..'
- #pragma warning(disable : 5026) // 'glslang::TIntermUnary': move constructor was implicitly defined as deleted
-#endif
-
-#include "../Include/Common.h"
-#include "../Include/Types.h"
-#include "../Include/ConstantUnion.h"
+#include "Common.h"
+#include "Types.h"
+#include "ConstantUnion.h"
namespace glslang {
diff --git a/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang.y b/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang.y
index 2ee155ac3d..167cdca053 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang.y
+++ b/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang.y
@@ -110,13 +110,6 @@ using namespace glslang;
%{
-/* windows only pragma */
-#ifdef _MSC_VER
- #pragma warning(disable : 4065)
- #pragma warning(disable : 4127)
- #pragma warning(disable : 4244)
-#endif
-
#define parseContext (*pParseContext)
#define yyerror(context, msg) context->parserError(msg)
diff --git a/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang_tab.cpp b/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang_tab.cpp
index 618d15dc25..5038bebe5b 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang_tab.cpp
+++ b/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/glslang_tab.cpp
@@ -726,20 +726,13 @@ typedef enum yysymbol_kind_t yysymbol_kind_t;
#line 111 "MachineIndependent/glslang.y"
-/* windows only pragma */
-#ifdef _MSC_VER
- #pragma warning(disable : 4065)
- #pragma warning(disable : 4127)
- #pragma warning(disable : 4244)
-#endif
-
#define parseContext (*pParseContext)
#define yyerror(context, msg) context->parserError(msg)
extern int yylex(YYSTYPE*, TParseContext&);
-#line 743 "MachineIndependent/glslang_tab.cpp"
+#line 736 "MachineIndependent/glslang_tab.cpp"
#ifdef short
@@ -1167,77 +1160,77 @@ static const yytype_int16 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 362, 362, 368, 371, 376, 379, 382, 386, 389,
- 392, 396, 400, 404, 408, 412, 416, 422, 429, 432,
- 435, 438, 441, 446, 454, 461, 468, 474, 478, 485,
- 488, 494, 512, 534, 542, 547, 574, 582, 588, 592,
- 596, 616, 617, 618, 619, 625, 626, 631, 636, 645,
- 646, 651, 659, 660, 666, 675, 676, 681, 686, 691,
- 699, 700, 709, 721, 722, 731, 732, 741, 742, 751,
- 752, 760, 761, 769, 770, 778, 779, 779, 797, 798,
- 814, 818, 822, 826, 831, 835, 839, 843, 847, 851,
- 855, 862, 865, 876, 883, 888, 895, 900, 905, 912,
- 916, 920, 924, 929, 934, 943, 943, 954, 958, 965,
- 970, 976, 982, 992, 995, 1002, 1015, 1038, 1061, 1076,
- 1101, 1112, 1122, 1132, 1142, 1151, 1154, 1158, 1162, 1167,
- 1175, 1180, 1185, 1190, 1195, 1204, 1214, 1241, 1250, 1257,
- 1264, 1271, 1278, 1286, 1294, 1304, 1314, 1321, 1331, 1337,
- 1340, 1347, 1351, 1355, 1363, 1372, 1375, 1386, 1389, 1392,
- 1396, 1400, 1404, 1408, 1411, 1416, 1420, 1425, 1433, 1437,
- 1442, 1448, 1454, 1461, 1466, 1471, 1479, 1484, 1496, 1510,
- 1516, 1521, 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585,
- 1593, 1600, 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641,
- 1645, 1649, 1653, 1657, 1663, 1669, 1679, 1686, 1689, 1697,
- 1704, 1715, 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1762,
- 1770, 1780, 1784, 1788, 1792, 1797, 1801, 1806, 1811, 1816,
- 1821, 1826, 1831, 1836, 1841, 1846, 1852, 1858, 1864, 1869,
- 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919,
- 1924, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971,
- 1976, 1981, 1986, 1994, 2002, 2010, 2016, 2022, 2028, 2034,
- 2040, 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094,
- 2100, 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154,
- 2160, 2166, 2172, 2178, 2184, 2190, 2196, 2202, 2208, 2216,
- 2224, 2232, 2240, 2248, 2256, 2264, 2272, 2280, 2288, 2296,
- 2304, 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358,
- 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418,
- 2424, 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478,
- 2484, 2490, 2496, 2502, 2508, 2514, 2520, 2524, 2528, 2532,
- 2537, 2542, 2547, 2552, 2557, 2562, 2567, 2572, 2577, 2582,
- 2587, 2592, 2597, 2602, 2608, 2614, 2620, 2626, 2632, 2638,
- 2644, 2650, 2656, 2662, 2668, 2674, 2680, 2685, 2690, 2695,
- 2700, 2705, 2710, 2715, 2720, 2725, 2730, 2735, 2740, 2745,
- 2750, 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795,
- 2800, 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840, 2845,
- 2851, 2857, 2862, 2867, 2872, 2878, 2883, 2888, 2893, 2899,
- 2904, 2909, 2914, 2920, 2925, 2930, 2935, 2941, 2947, 2953,
- 2959, 2964, 2970, 2976, 2982, 2987, 2992, 2997, 3002, 3007,
- 3013, 3018, 3023, 3028, 3034, 3039, 3044, 3049, 3055, 3060,
- 3065, 3070, 3076, 3081, 3086, 3091, 3097, 3102, 3107, 3112,
- 3118, 3123, 3128, 3133, 3139, 3144, 3149, 3154, 3160, 3165,
- 3170, 3175, 3181, 3186, 3191, 3196, 3202, 3207, 3212, 3217,
- 3223, 3228, 3233, 3238, 3244, 3249, 3254, 3259, 3265, 3270,
- 3275, 3280, 3286, 3291, 3296, 3301, 3307, 3312, 3317, 3322,
- 3327, 3332, 3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372,
- 3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412, 3417, 3422,
- 3427, 3433, 3439, 3445, 3451, 3457, 3463, 3469, 3476, 3483,
- 3489, 3495, 3501, 3507, 3514, 3521, 3528, 3535, 3539, 3543,
- 3548, 3564, 3569, 3574, 3582, 3582, 3599, 3599, 3609, 3612,
- 3625, 3647, 3674, 3678, 3684, 3689, 3700, 3703, 3709, 3715,
- 3724, 3727, 3733, 3737, 3738, 3744, 3745, 3746, 3747, 3748,
- 3749, 3750, 3751, 3755, 3763, 3764, 3768, 3764, 3780, 3781,
- 3785, 3785, 3792, 3792, 3806, 3809, 3817, 3825, 3836, 3837,
- 3841, 3844, 3851, 3858, 3862, 3870, 3874, 3887, 3890, 3897,
- 3897, 3917, 3920, 3926, 3938, 3950, 3953, 3960, 3960, 3975,
- 3975, 3993, 3993, 4014, 4017, 4023, 4026, 4032, 4036, 4043,
- 4048, 4053, 4060, 4063, 4067, 4071, 4075, 4084, 4088, 4097,
- 4100, 4103, 4111, 4111, 4153, 4158, 4161, 4166, 4169, 4174,
- 4177, 4182, 4185, 4190, 4193, 4198, 4201, 4206, 4210, 4215,
- 4219, 4224, 4228, 4235, 4238, 4243, 4246, 4249, 4252, 4255,
- 4260, 4269, 4280, 4285, 4293, 4297, 4302, 4306, 4311, 4315,
- 4320, 4324, 4331, 4334, 4339, 4342, 4345, 4348, 4353, 4356,
- 4361, 4367, 4370, 4373, 4376, 4381, 4385, 4390, 4394, 4399,
- 4403, 4410, 4413, 4418, 4421, 4426, 4429, 4435, 4438, 4443,
- 4446
+ 0, 355, 355, 361, 364, 369, 372, 375, 379, 382,
+ 385, 389, 393, 397, 401, 405, 409, 415, 422, 425,
+ 428, 431, 434, 439, 447, 454, 461, 467, 471, 478,
+ 481, 487, 505, 527, 535, 540, 567, 575, 581, 585,
+ 589, 609, 610, 611, 612, 618, 619, 624, 629, 638,
+ 639, 644, 652, 653, 659, 668, 669, 674, 679, 684,
+ 692, 693, 702, 714, 715, 724, 725, 734, 735, 744,
+ 745, 753, 754, 762, 763, 771, 772, 772, 790, 791,
+ 807, 811, 815, 819, 824, 828, 832, 836, 840, 844,
+ 848, 855, 858, 869, 876, 881, 888, 893, 898, 905,
+ 909, 913, 917, 922, 927, 936, 936, 947, 951, 958,
+ 963, 969, 975, 985, 988, 995, 1008, 1031, 1054, 1069,
+ 1094, 1105, 1115, 1125, 1135, 1144, 1147, 1151, 1155, 1160,
+ 1168, 1173, 1178, 1183, 1188, 1197, 1207, 1234, 1243, 1250,
+ 1257, 1264, 1271, 1279, 1287, 1297, 1307, 1314, 1324, 1330,
+ 1333, 1340, 1344, 1348, 1356, 1365, 1368, 1379, 1382, 1385,
+ 1389, 1393, 1397, 1401, 1404, 1409, 1413, 1418, 1426, 1430,
+ 1435, 1441, 1447, 1454, 1459, 1464, 1472, 1477, 1489, 1503,
+ 1509, 1514, 1522, 1530, 1538, 1546, 1554, 1562, 1570, 1578,
+ 1586, 1593, 1600, 1604, 1609, 1614, 1619, 1624, 1629, 1634,
+ 1638, 1642, 1646, 1650, 1656, 1662, 1672, 1679, 1682, 1690,
+ 1697, 1708, 1713, 1721, 1725, 1735, 1738, 1744, 1750, 1755,
+ 1763, 1773, 1777, 1781, 1785, 1790, 1794, 1799, 1804, 1809,
+ 1814, 1819, 1824, 1829, 1834, 1839, 1845, 1851, 1857, 1862,
+ 1867, 1872, 1877, 1882, 1887, 1892, 1897, 1902, 1907, 1912,
+ 1917, 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964,
+ 1969, 1974, 1979, 1987, 1995, 2003, 2009, 2015, 2021, 2027,
+ 2033, 2039, 2045, 2051, 2057, 2063, 2069, 2075, 2081, 2087,
+ 2093, 2099, 2105, 2111, 2117, 2123, 2129, 2135, 2141, 2147,
+ 2153, 2159, 2165, 2171, 2177, 2183, 2189, 2195, 2201, 2209,
+ 2217, 2225, 2233, 2241, 2249, 2257, 2265, 2273, 2281, 2289,
+ 2297, 2303, 2309, 2315, 2321, 2327, 2333, 2339, 2345, 2351,
+ 2357, 2363, 2369, 2375, 2381, 2387, 2393, 2399, 2405, 2411,
+ 2417, 2423, 2429, 2435, 2441, 2447, 2453, 2459, 2465, 2471,
+ 2477, 2483, 2489, 2495, 2501, 2507, 2513, 2517, 2521, 2525,
+ 2530, 2535, 2540, 2545, 2550, 2555, 2560, 2565, 2570, 2575,
+ 2580, 2585, 2590, 2595, 2601, 2607, 2613, 2619, 2625, 2631,
+ 2637, 2643, 2649, 2655, 2661, 2667, 2673, 2678, 2683, 2688,
+ 2693, 2698, 2703, 2708, 2713, 2718, 2723, 2728, 2733, 2738,
+ 2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778, 2783, 2788,
+ 2793, 2798, 2803, 2808, 2813, 2818, 2823, 2828, 2833, 2838,
+ 2844, 2850, 2855, 2860, 2865, 2871, 2876, 2881, 2886, 2892,
+ 2897, 2902, 2907, 2913, 2918, 2923, 2928, 2934, 2940, 2946,
+ 2952, 2957, 2963, 2969, 2975, 2980, 2985, 2990, 2995, 3000,
+ 3006, 3011, 3016, 3021, 3027, 3032, 3037, 3042, 3048, 3053,
+ 3058, 3063, 3069, 3074, 3079, 3084, 3090, 3095, 3100, 3105,
+ 3111, 3116, 3121, 3126, 3132, 3137, 3142, 3147, 3153, 3158,
+ 3163, 3168, 3174, 3179, 3184, 3189, 3195, 3200, 3205, 3210,
+ 3216, 3221, 3226, 3231, 3237, 3242, 3247, 3252, 3258, 3263,
+ 3268, 3273, 3279, 3284, 3289, 3294, 3300, 3305, 3310, 3315,
+ 3320, 3325, 3330, 3335, 3340, 3345, 3350, 3355, 3360, 3365,
+ 3370, 3375, 3380, 3385, 3390, 3395, 3400, 3405, 3410, 3415,
+ 3420, 3426, 3432, 3438, 3444, 3450, 3456, 3462, 3469, 3476,
+ 3482, 3488, 3494, 3500, 3507, 3514, 3521, 3528, 3532, 3536,
+ 3541, 3557, 3562, 3567, 3575, 3575, 3592, 3592, 3602, 3605,
+ 3618, 3640, 3667, 3671, 3677, 3682, 3693, 3696, 3702, 3708,
+ 3717, 3720, 3726, 3730, 3731, 3737, 3738, 3739, 3740, 3741,
+ 3742, 3743, 3744, 3748, 3756, 3757, 3761, 3757, 3773, 3774,
+ 3778, 3778, 3785, 3785, 3799, 3802, 3810, 3818, 3829, 3830,
+ 3834, 3837, 3844, 3851, 3855, 3863, 3867, 3880, 3883, 3890,
+ 3890, 3910, 3913, 3919, 3931, 3943, 3946, 3953, 3953, 3968,
+ 3968, 3986, 3986, 4007, 4010, 4016, 4019, 4025, 4029, 4036,
+ 4041, 4046, 4053, 4056, 4060, 4064, 4068, 4077, 4081, 4090,
+ 4093, 4096, 4104, 4104, 4146, 4151, 4154, 4159, 4162, 4167,
+ 4170, 4175, 4178, 4183, 4186, 4191, 4194, 4199, 4203, 4208,
+ 4212, 4217, 4221, 4228, 4231, 4236, 4239, 4242, 4245, 4248,
+ 4253, 4262, 4273, 4278, 4286, 4290, 4295, 4299, 4304, 4308,
+ 4313, 4317, 4324, 4327, 4332, 4335, 4338, 4341, 4346, 4349,
+ 4354, 4360, 4363, 4366, 4369, 4374, 4378, 4383, 4387, 4392,
+ 4396, 4403, 4406, 4411, 4414, 4419, 4422, 4428, 4431, 4436,
+ 4439
};
#endif
@@ -5210,260 +5203,260 @@ yyreduce:
switch (yyn)
{
case 2: /* variable_identifier: IDENTIFIER */
-#line 362 "MachineIndependent/glslang.y"
+#line 355 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
}
-#line 5218 "MachineIndependent/glslang_tab.cpp"
+#line 5211 "MachineIndependent/glslang_tab.cpp"
break;
case 3: /* primary_expression: variable_identifier */
-#line 368 "MachineIndependent/glslang.y"
+#line 361 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5226 "MachineIndependent/glslang_tab.cpp"
+#line 5219 "MachineIndependent/glslang_tab.cpp"
break;
case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */
-#line 371 "MachineIndependent/glslang.y"
+#line 364 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
-#line 5236 "MachineIndependent/glslang_tab.cpp"
+#line 5229 "MachineIndependent/glslang_tab.cpp"
break;
case 5: /* primary_expression: FLOATCONSTANT */
-#line 376 "MachineIndependent/glslang.y"
+#line 369 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 5244 "MachineIndependent/glslang_tab.cpp"
+#line 5237 "MachineIndependent/glslang_tab.cpp"
break;
case 6: /* primary_expression: INTCONSTANT */
-#line 379 "MachineIndependent/glslang.y"
+#line 372 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5252 "MachineIndependent/glslang_tab.cpp"
+#line 5245 "MachineIndependent/glslang_tab.cpp"
break;
case 7: /* primary_expression: UINTCONSTANT */
-#line 382 "MachineIndependent/glslang.y"
+#line 375 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5261 "MachineIndependent/glslang_tab.cpp"
+#line 5254 "MachineIndependent/glslang_tab.cpp"
break;
case 8: /* primary_expression: BOOLCONSTANT */
-#line 386 "MachineIndependent/glslang.y"
+#line 379 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 5269 "MachineIndependent/glslang_tab.cpp"
+#line 5262 "MachineIndependent/glslang_tab.cpp"
break;
case 9: /* primary_expression: STRING_LITERAL */
-#line 389 "MachineIndependent/glslang.y"
+#line 382 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
}
-#line 5277 "MachineIndependent/glslang_tab.cpp"
+#line 5270 "MachineIndependent/glslang_tab.cpp"
break;
case 10: /* primary_expression: INT32CONSTANT */
-#line 392 "MachineIndependent/glslang.y"
+#line 385 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5286 "MachineIndependent/glslang_tab.cpp"
+#line 5279 "MachineIndependent/glslang_tab.cpp"
break;
case 11: /* primary_expression: UINT32CONSTANT */
-#line 396 "MachineIndependent/glslang.y"
+#line 389 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5295 "MachineIndependent/glslang_tab.cpp"
+#line 5288 "MachineIndependent/glslang_tab.cpp"
break;
case 12: /* primary_expression: INT64CONSTANT */
-#line 400 "MachineIndependent/glslang.y"
+#line 393 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
}
-#line 5304 "MachineIndependent/glslang_tab.cpp"
+#line 5297 "MachineIndependent/glslang_tab.cpp"
break;
case 13: /* primary_expression: UINT64CONSTANT */
-#line 404 "MachineIndependent/glslang.y"
+#line 397 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
}
-#line 5313 "MachineIndependent/glslang_tab.cpp"
+#line 5306 "MachineIndependent/glslang_tab.cpp"
break;
case 14: /* primary_expression: INT16CONSTANT */
-#line 408 "MachineIndependent/glslang.y"
+#line 401 "MachineIndependent/glslang.y"
{
parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5322 "MachineIndependent/glslang_tab.cpp"
+#line 5315 "MachineIndependent/glslang_tab.cpp"
break;
case 15: /* primary_expression: UINT16CONSTANT */
-#line 412 "MachineIndependent/glslang.y"
+#line 405 "MachineIndependent/glslang.y"
{
parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5331 "MachineIndependent/glslang_tab.cpp"
+#line 5324 "MachineIndependent/glslang_tab.cpp"
break;
case 16: /* primary_expression: DOUBLECONSTANT */
-#line 416 "MachineIndependent/glslang.y"
+#line 409 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal");
if (! parseContext.symbolTable.atBuiltInLevel())
parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
}
-#line 5342 "MachineIndependent/glslang_tab.cpp"
+#line 5335 "MachineIndependent/glslang_tab.cpp"
break;
case 17: /* primary_expression: FLOAT16CONSTANT */
-#line 422 "MachineIndependent/glslang.y"
+#line 415 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
}
-#line 5351 "MachineIndependent/glslang_tab.cpp"
+#line 5344 "MachineIndependent/glslang_tab.cpp"
break;
case 18: /* postfix_expression: primary_expression */
-#line 429 "MachineIndependent/glslang.y"
+#line 422 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5359 "MachineIndependent/glslang_tab.cpp"
+#line 5352 "MachineIndependent/glslang_tab.cpp"
break;
case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */
-#line 432 "MachineIndependent/glslang.y"
+#line 425 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
}
-#line 5367 "MachineIndependent/glslang_tab.cpp"
+#line 5360 "MachineIndependent/glslang_tab.cpp"
break;
case 20: /* postfix_expression: function_call */
-#line 435 "MachineIndependent/glslang.y"
+#line 428 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5375 "MachineIndependent/glslang_tab.cpp"
+#line 5368 "MachineIndependent/glslang_tab.cpp"
break;
case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */
-#line 438 "MachineIndependent/glslang.y"
+#line 431 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
}
-#line 5383 "MachineIndependent/glslang_tab.cpp"
+#line 5376 "MachineIndependent/glslang_tab.cpp"
break;
case 22: /* postfix_expression: postfix_expression INC_OP */
-#line 441 "MachineIndependent/glslang.y"
+#line 434 "MachineIndependent/glslang.y"
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 5393 "MachineIndependent/glslang_tab.cpp"
+#line 5386 "MachineIndependent/glslang_tab.cpp"
break;
case 23: /* postfix_expression: postfix_expression DEC_OP */
-#line 446 "MachineIndependent/glslang.y"
+#line 439 "MachineIndependent/glslang.y"
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 5403 "MachineIndependent/glslang_tab.cpp"
+#line 5396 "MachineIndependent/glslang_tab.cpp"
break;
case 24: /* integer_expression: expression */
-#line 454 "MachineIndependent/glslang.y"
+#line 447 "MachineIndependent/glslang.y"
{
parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5412 "MachineIndependent/glslang_tab.cpp"
+#line 5405 "MachineIndependent/glslang_tab.cpp"
break;
case 25: /* function_call: function_call_or_method */
-#line 461 "MachineIndependent/glslang.y"
+#line 454 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
delete (yyvsp[0].interm).function;
}
-#line 5421 "MachineIndependent/glslang_tab.cpp"
+#line 5414 "MachineIndependent/glslang_tab.cpp"
break;
case 26: /* function_call_or_method: function_call_generic */
-#line 468 "MachineIndependent/glslang.y"
+#line 461 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5429 "MachineIndependent/glslang_tab.cpp"
+#line 5422 "MachineIndependent/glslang_tab.cpp"
break;
case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */
-#line 474 "MachineIndependent/glslang.y"
+#line 467 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5438 "MachineIndependent/glslang_tab.cpp"
+#line 5431 "MachineIndependent/glslang_tab.cpp"
break;
case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */
-#line 478 "MachineIndependent/glslang.y"
+#line 471 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5447 "MachineIndependent/glslang_tab.cpp"
+#line 5440 "MachineIndependent/glslang_tab.cpp"
break;
case 29: /* function_call_header_no_parameters: function_call_header VOID */
-#line 485 "MachineIndependent/glslang.y"
+#line 478 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 5455 "MachineIndependent/glslang_tab.cpp"
+#line 5448 "MachineIndependent/glslang_tab.cpp"
break;
case 30: /* function_call_header_no_parameters: function_call_header */
-#line 488 "MachineIndependent/glslang.y"
+#line 481 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5463 "MachineIndependent/glslang_tab.cpp"
+#line 5456 "MachineIndependent/glslang_tab.cpp"
break;
case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */
-#line 494 "MachineIndependent/glslang.y"
+#line 487 "MachineIndependent/glslang.y"
{
if (parseContext.spvVersion.vulkan > 0
&& parseContext.spvVersion.vulkanRelaxed
@@ -5482,11 +5475,11 @@ yyreduce:
(yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 5486 "MachineIndependent/glslang_tab.cpp"
+#line 5479 "MachineIndependent/glslang_tab.cpp"
break;
case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */
-#line 512 "MachineIndependent/glslang.y"
+#line 505 "MachineIndependent/glslang.y"
{
if (parseContext.spvVersion.vulkan > 0
&& parseContext.spvVersion.vulkanRelaxed
@@ -5506,29 +5499,29 @@ yyreduce:
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
}
}
-#line 5510 "MachineIndependent/glslang_tab.cpp"
+#line 5503 "MachineIndependent/glslang_tab.cpp"
break;
case 33: /* function_call_header: function_identifier LEFT_PAREN */
-#line 534 "MachineIndependent/glslang.y"
+#line 527 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 5518 "MachineIndependent/glslang_tab.cpp"
+#line 5511 "MachineIndependent/glslang_tab.cpp"
break;
case 34: /* function_identifier: type_specifier */
-#line 542 "MachineIndependent/glslang.y"
+#line 535 "MachineIndependent/glslang.y"
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 5528 "MachineIndependent/glslang_tab.cpp"
+#line 5521 "MachineIndependent/glslang_tab.cpp"
break;
case 35: /* function_identifier: postfix_expression */
-#line 547 "MachineIndependent/glslang.y"
+#line 540 "MachineIndependent/glslang.y"
{
//
// Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -5556,50 +5549,50 @@ yyreduce:
(yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
-#line 5560 "MachineIndependent/glslang_tab.cpp"
+#line 5553 "MachineIndependent/glslang_tab.cpp"
break;
case 36: /* function_identifier: non_uniform_qualifier */
-#line 574 "MachineIndependent/glslang.y"
+#line 567 "MachineIndependent/glslang.y"
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 5570 "MachineIndependent/glslang_tab.cpp"
+#line 5563 "MachineIndependent/glslang_tab.cpp"
break;
case 37: /* unary_expression: postfix_expression */
-#line 582 "MachineIndependent/glslang.y"
+#line 575 "MachineIndependent/glslang.y"
{
parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
}
-#line 5581 "MachineIndependent/glslang_tab.cpp"
+#line 5574 "MachineIndependent/glslang_tab.cpp"
break;
case 38: /* unary_expression: INC_OP unary_expression */
-#line 588 "MachineIndependent/glslang.y"
+#line 581 "MachineIndependent/glslang.y"
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 5590 "MachineIndependent/glslang_tab.cpp"
+#line 5583 "MachineIndependent/glslang_tab.cpp"
break;
case 39: /* unary_expression: DEC_OP unary_expression */
-#line 592 "MachineIndependent/glslang.y"
+#line 585 "MachineIndependent/glslang.y"
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 5599 "MachineIndependent/glslang_tab.cpp"
+#line 5592 "MachineIndependent/glslang_tab.cpp"
break;
case 40: /* unary_expression: unary_operator unary_expression */
-#line 596 "MachineIndependent/glslang.y"
+#line 589 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm).op != EOpNull) {
char errorOp[2] = {0, 0};
@@ -5616,179 +5609,179 @@ yyreduce:
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
-#line 5620 "MachineIndependent/glslang_tab.cpp"
+#line 5613 "MachineIndependent/glslang_tab.cpp"
break;
case 41: /* unary_operator: PLUS */
-#line 616 "MachineIndependent/glslang.y"
+#line 609 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 5626 "MachineIndependent/glslang_tab.cpp"
+#line 5619 "MachineIndependent/glslang_tab.cpp"
break;
case 42: /* unary_operator: DASH */
-#line 617 "MachineIndependent/glslang.y"
+#line 610 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 5632 "MachineIndependent/glslang_tab.cpp"
+#line 5625 "MachineIndependent/glslang_tab.cpp"
break;
case 43: /* unary_operator: BANG */
-#line 618 "MachineIndependent/glslang.y"
+#line 611 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 5638 "MachineIndependent/glslang_tab.cpp"
+#line 5631 "MachineIndependent/glslang_tab.cpp"
break;
case 44: /* unary_operator: TILDE */
-#line 619 "MachineIndependent/glslang.y"
+#line 612 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 5645 "MachineIndependent/glslang_tab.cpp"
+#line 5638 "MachineIndependent/glslang_tab.cpp"
break;
case 45: /* multiplicative_expression: unary_expression */
-#line 625 "MachineIndependent/glslang.y"
+#line 618 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5651 "MachineIndependent/glslang_tab.cpp"
+#line 5644 "MachineIndependent/glslang_tab.cpp"
break;
case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */
-#line 626 "MachineIndependent/glslang.y"
+#line 619 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5661 "MachineIndependent/glslang_tab.cpp"
+#line 5654 "MachineIndependent/glslang_tab.cpp"
break;
case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */
-#line 631 "MachineIndependent/glslang.y"
+#line 624 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5671 "MachineIndependent/glslang_tab.cpp"
+#line 5664 "MachineIndependent/glslang_tab.cpp"
break;
case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */
-#line 636 "MachineIndependent/glslang.y"
+#line 629 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5682 "MachineIndependent/glslang_tab.cpp"
+#line 5675 "MachineIndependent/glslang_tab.cpp"
break;
case 49: /* additive_expression: multiplicative_expression */
-#line 645 "MachineIndependent/glslang.y"
+#line 638 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5688 "MachineIndependent/glslang_tab.cpp"
+#line 5681 "MachineIndependent/glslang_tab.cpp"
break;
case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */
-#line 646 "MachineIndependent/glslang.y"
+#line 639 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5698 "MachineIndependent/glslang_tab.cpp"
+#line 5691 "MachineIndependent/glslang_tab.cpp"
break;
case 51: /* additive_expression: additive_expression DASH multiplicative_expression */
-#line 651 "MachineIndependent/glslang.y"
+#line 644 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5708 "MachineIndependent/glslang_tab.cpp"
+#line 5701 "MachineIndependent/glslang_tab.cpp"
break;
case 52: /* shift_expression: additive_expression */
-#line 659 "MachineIndependent/glslang.y"
+#line 652 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5714 "MachineIndependent/glslang_tab.cpp"
+#line 5707 "MachineIndependent/glslang_tab.cpp"
break;
case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */
-#line 660 "MachineIndependent/glslang.y"
+#line 653 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5725 "MachineIndependent/glslang_tab.cpp"
+#line 5718 "MachineIndependent/glslang_tab.cpp"
break;
case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */
-#line 666 "MachineIndependent/glslang.y"
+#line 659 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5736 "MachineIndependent/glslang_tab.cpp"
+#line 5729 "MachineIndependent/glslang_tab.cpp"
break;
case 55: /* relational_expression: shift_expression */
-#line 675 "MachineIndependent/glslang.y"
+#line 668 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5742 "MachineIndependent/glslang_tab.cpp"
+#line 5735 "MachineIndependent/glslang_tab.cpp"
break;
case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */
-#line 676 "MachineIndependent/glslang.y"
+#line 669 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5752 "MachineIndependent/glslang_tab.cpp"
+#line 5745 "MachineIndependent/glslang_tab.cpp"
break;
case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */
-#line 681 "MachineIndependent/glslang.y"
+#line 674 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5762 "MachineIndependent/glslang_tab.cpp"
+#line 5755 "MachineIndependent/glslang_tab.cpp"
break;
case 58: /* relational_expression: relational_expression LE_OP shift_expression */
-#line 686 "MachineIndependent/glslang.y"
+#line 679 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5772 "MachineIndependent/glslang_tab.cpp"
+#line 5765 "MachineIndependent/glslang_tab.cpp"
break;
case 59: /* relational_expression: relational_expression GE_OP shift_expression */
-#line 691 "MachineIndependent/glslang.y"
+#line 684 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5782 "MachineIndependent/glslang_tab.cpp"
+#line 5775 "MachineIndependent/glslang_tab.cpp"
break;
case 60: /* equality_expression: relational_expression */
-#line 699 "MachineIndependent/glslang.y"
+#line 692 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5788 "MachineIndependent/glslang_tab.cpp"
+#line 5781 "MachineIndependent/glslang_tab.cpp"
break;
case 61: /* equality_expression: equality_expression EQ_OP relational_expression */
-#line 700 "MachineIndependent/glslang.y"
+#line 693 "MachineIndependent/glslang.y"
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
@@ -5798,11 +5791,11 @@ yyreduce:
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5802 "MachineIndependent/glslang_tab.cpp"
+#line 5795 "MachineIndependent/glslang_tab.cpp"
break;
case 62: /* equality_expression: equality_expression NE_OP relational_expression */
-#line 709 "MachineIndependent/glslang.y"
+#line 702 "MachineIndependent/glslang.y"
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
@@ -5812,124 +5805,124 @@ yyreduce:
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5816 "MachineIndependent/glslang_tab.cpp"
+#line 5809 "MachineIndependent/glslang_tab.cpp"
break;
case 63: /* and_expression: equality_expression */
-#line 721 "MachineIndependent/glslang.y"
+#line 714 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5822 "MachineIndependent/glslang_tab.cpp"
+#line 5815 "MachineIndependent/glslang_tab.cpp"
break;
case 64: /* and_expression: and_expression AMPERSAND equality_expression */
-#line 722 "MachineIndependent/glslang.y"
+#line 715 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5833 "MachineIndependent/glslang_tab.cpp"
+#line 5826 "MachineIndependent/glslang_tab.cpp"
break;
case 65: /* exclusive_or_expression: and_expression */
-#line 731 "MachineIndependent/glslang.y"
+#line 724 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5839 "MachineIndependent/glslang_tab.cpp"
+#line 5832 "MachineIndependent/glslang_tab.cpp"
break;
case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */
-#line 732 "MachineIndependent/glslang.y"
+#line 725 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5850 "MachineIndependent/glslang_tab.cpp"
+#line 5843 "MachineIndependent/glslang_tab.cpp"
break;
case 67: /* inclusive_or_expression: exclusive_or_expression */
-#line 741 "MachineIndependent/glslang.y"
+#line 734 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5856 "MachineIndependent/glslang_tab.cpp"
+#line 5849 "MachineIndependent/glslang_tab.cpp"
break;
case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */
-#line 742 "MachineIndependent/glslang.y"
+#line 735 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5867 "MachineIndependent/glslang_tab.cpp"
+#line 5860 "MachineIndependent/glslang_tab.cpp"
break;
case 69: /* logical_and_expression: inclusive_or_expression */
-#line 751 "MachineIndependent/glslang.y"
+#line 744 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5873 "MachineIndependent/glslang_tab.cpp"
+#line 5866 "MachineIndependent/glslang_tab.cpp"
break;
case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */
-#line 752 "MachineIndependent/glslang.y"
+#line 745 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5883 "MachineIndependent/glslang_tab.cpp"
+#line 5876 "MachineIndependent/glslang_tab.cpp"
break;
case 71: /* logical_xor_expression: logical_and_expression */
-#line 760 "MachineIndependent/glslang.y"
+#line 753 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5889 "MachineIndependent/glslang_tab.cpp"
+#line 5882 "MachineIndependent/glslang_tab.cpp"
break;
case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */
-#line 761 "MachineIndependent/glslang.y"
+#line 754 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5899 "MachineIndependent/glslang_tab.cpp"
+#line 5892 "MachineIndependent/glslang_tab.cpp"
break;
case 73: /* logical_or_expression: logical_xor_expression */
-#line 769 "MachineIndependent/glslang.y"
+#line 762 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5905 "MachineIndependent/glslang_tab.cpp"
+#line 5898 "MachineIndependent/glslang_tab.cpp"
break;
case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */
-#line 770 "MachineIndependent/glslang.y"
+#line 763 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5915 "MachineIndependent/glslang_tab.cpp"
+#line 5908 "MachineIndependent/glslang_tab.cpp"
break;
case 75: /* conditional_expression: logical_or_expression */
-#line 778 "MachineIndependent/glslang.y"
+#line 771 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5921 "MachineIndependent/glslang_tab.cpp"
+#line 5914 "MachineIndependent/glslang_tab.cpp"
break;
case 76: /* $@1: %empty */
-#line 779 "MachineIndependent/glslang.y"
+#line 772 "MachineIndependent/glslang.y"
{
++parseContext.controlFlowNestingLevel;
}
-#line 5929 "MachineIndependent/glslang_tab.cpp"
+#line 5922 "MachineIndependent/glslang_tab.cpp"
break;
case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */
-#line 782 "MachineIndependent/glslang.y"
+#line 775 "MachineIndependent/glslang.y"
{
--parseContext.controlFlowNestingLevel;
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
@@ -5942,17 +5935,17 @@ yyreduce:
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 5946 "MachineIndependent/glslang_tab.cpp"
+#line 5939 "MachineIndependent/glslang_tab.cpp"
break;
case 78: /* assignment_expression: conditional_expression */
-#line 797 "MachineIndependent/glslang.y"
+#line 790 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5952 "MachineIndependent/glslang_tab.cpp"
+#line 5945 "MachineIndependent/glslang_tab.cpp"
break;
case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */
-#line 798 "MachineIndependent/glslang.y"
+#line 791 "MachineIndependent/glslang.y"
{
parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
@@ -5966,119 +5959,119 @@ yyreduce:
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
}
-#line 5970 "MachineIndependent/glslang_tab.cpp"
+#line 5963 "MachineIndependent/glslang_tab.cpp"
break;
case 80: /* assignment_operator: EQUAL */
-#line 814 "MachineIndependent/glslang.y"
+#line 807 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAssign;
}
-#line 5979 "MachineIndependent/glslang_tab.cpp"
+#line 5972 "MachineIndependent/glslang_tab.cpp"
break;
case 81: /* assignment_operator: MUL_ASSIGN */
-#line 818 "MachineIndependent/glslang.y"
+#line 811 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpMulAssign;
}
-#line 5988 "MachineIndependent/glslang_tab.cpp"
+#line 5981 "MachineIndependent/glslang_tab.cpp"
break;
case 82: /* assignment_operator: DIV_ASSIGN */
-#line 822 "MachineIndependent/glslang.y"
+#line 815 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpDivAssign;
}
-#line 5997 "MachineIndependent/glslang_tab.cpp"
+#line 5990 "MachineIndependent/glslang_tab.cpp"
break;
case 83: /* assignment_operator: MOD_ASSIGN */
-#line 826 "MachineIndependent/glslang.y"
+#line 819 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpModAssign;
}
-#line 6007 "MachineIndependent/glslang_tab.cpp"
+#line 6000 "MachineIndependent/glslang_tab.cpp"
break;
case 84: /* assignment_operator: ADD_ASSIGN */
-#line 831 "MachineIndependent/glslang.y"
+#line 824 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAddAssign;
}
-#line 6016 "MachineIndependent/glslang_tab.cpp"
+#line 6009 "MachineIndependent/glslang_tab.cpp"
break;
case 85: /* assignment_operator: SUB_ASSIGN */
-#line 835 "MachineIndependent/glslang.y"
+#line 828 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpSubAssign;
}
-#line 6025 "MachineIndependent/glslang_tab.cpp"
+#line 6018 "MachineIndependent/glslang_tab.cpp"
break;
case 86: /* assignment_operator: LEFT_ASSIGN */
-#line 839 "MachineIndependent/glslang.y"
+#line 832 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
-#line 6034 "MachineIndependent/glslang_tab.cpp"
+#line 6027 "MachineIndependent/glslang_tab.cpp"
break;
case 87: /* assignment_operator: RIGHT_ASSIGN */
-#line 843 "MachineIndependent/glslang.y"
+#line 836 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
-#line 6043 "MachineIndependent/glslang_tab.cpp"
+#line 6036 "MachineIndependent/glslang_tab.cpp"
break;
case 88: /* assignment_operator: AND_ASSIGN */
-#line 847 "MachineIndependent/glslang.y"
+#line 840 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
-#line 6052 "MachineIndependent/glslang_tab.cpp"
+#line 6045 "MachineIndependent/glslang_tab.cpp"
break;
case 89: /* assignment_operator: XOR_ASSIGN */
-#line 851 "MachineIndependent/glslang.y"
+#line 844 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
-#line 6061 "MachineIndependent/glslang_tab.cpp"
+#line 6054 "MachineIndependent/glslang_tab.cpp"
break;
case 90: /* assignment_operator: OR_ASSIGN */
-#line 855 "MachineIndependent/glslang.y"
+#line 848 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
-#line 6070 "MachineIndependent/glslang_tab.cpp"
+#line 6063 "MachineIndependent/glslang_tab.cpp"
break;
case 91: /* expression: assignment_expression */
-#line 862 "MachineIndependent/glslang.y"
+#line 855 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6078 "MachineIndependent/glslang_tab.cpp"
+#line 6071 "MachineIndependent/glslang_tab.cpp"
break;
case 92: /* expression: expression COMMA assignment_expression */
-#line 865 "MachineIndependent/glslang.y"
+#line 858 "MachineIndependent/glslang.y"
{
parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
@@ -6087,30 +6080,30 @@ yyreduce:
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 6091 "MachineIndependent/glslang_tab.cpp"
+#line 6084 "MachineIndependent/glslang_tab.cpp"
break;
case 93: /* constant_expression: conditional_expression */
-#line 876 "MachineIndependent/glslang.y"
+#line 869 "MachineIndependent/glslang.y"
{
parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6100 "MachineIndependent/glslang_tab.cpp"
+#line 6093 "MachineIndependent/glslang_tab.cpp"
break;
case 94: /* declaration: function_prototype SEMICOLON */
-#line 883 "MachineIndependent/glslang.y"
+#line 876 "MachineIndependent/glslang.y"
{
parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 6110 "MachineIndependent/glslang_tab.cpp"
+#line 6103 "MachineIndependent/glslang_tab.cpp"
break;
case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */
-#line 888 "MachineIndependent/glslang.y"
+#line 881 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier");
(yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier
@@ -6118,31 +6111,31 @@ yyreduce:
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 6122 "MachineIndependent/glslang_tab.cpp"
+#line 6115 "MachineIndependent/glslang_tab.cpp"
break;
case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */
-#line 895 "MachineIndependent/glslang.y"
+#line 888 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier");
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
(yyval.interm.intermNode) = 0;
}
-#line 6132 "MachineIndependent/glslang_tab.cpp"
+#line 6125 "MachineIndependent/glslang_tab.cpp"
break;
case 97: /* declaration: init_declarator_list SEMICOLON */
-#line 900 "MachineIndependent/glslang.y"
+#line 893 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
(yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
}
-#line 6142 "MachineIndependent/glslang_tab.cpp"
+#line 6135 "MachineIndependent/glslang_tab.cpp"
break;
case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */
-#line 905 "MachineIndependent/glslang.y"
+#line 898 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
// lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
@@ -6150,75 +6143,75 @@ yyreduce:
parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
-#line 6154 "MachineIndependent/glslang_tab.cpp"
+#line 6147 "MachineIndependent/glslang_tab.cpp"
break;
case 99: /* declaration: block_structure SEMICOLON */
-#line 912 "MachineIndependent/glslang.y"
+#line 905 "MachineIndependent/glslang.y"
{
parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
-#line 6163 "MachineIndependent/glslang_tab.cpp"
+#line 6156 "MachineIndependent/glslang_tab.cpp"
break;
case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */
-#line 916 "MachineIndependent/glslang.y"
+#line 909 "MachineIndependent/glslang.y"
{
parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 6172 "MachineIndependent/glslang_tab.cpp"
+#line 6165 "MachineIndependent/glslang_tab.cpp"
break;
case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */
-#line 920 "MachineIndependent/glslang.y"
+#line 913 "MachineIndependent/glslang.y"
{
parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
-#line 6181 "MachineIndependent/glslang_tab.cpp"
+#line 6174 "MachineIndependent/glslang_tab.cpp"
break;
case 102: /* declaration: type_qualifier SEMICOLON */
-#line 924 "MachineIndependent/glslang.y"
+#line 917 "MachineIndependent/glslang.y"
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
(yyval.interm.intermNode) = 0;
}
-#line 6191 "MachineIndependent/glslang_tab.cpp"
+#line 6184 "MachineIndependent/glslang_tab.cpp"
break;
case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */
-#line 929 "MachineIndependent/glslang.y"
+#line 922 "MachineIndependent/glslang.y"
{
parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 6201 "MachineIndependent/glslang_tab.cpp"
+#line 6194 "MachineIndependent/glslang_tab.cpp"
break;
case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */
-#line 934 "MachineIndependent/glslang.y"
+#line 927 "MachineIndependent/glslang.y"
{
parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
(yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
(yyval.interm.intermNode) = 0;
}
-#line 6212 "MachineIndependent/glslang_tab.cpp"
+#line 6205 "MachineIndependent/glslang_tab.cpp"
break;
case 105: /* $@2: %empty */
-#line 943 "MachineIndependent/glslang.y"
+#line 936 "MachineIndependent/glslang.y"
{ parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 6218 "MachineIndependent/glslang_tab.cpp"
+#line 6211 "MachineIndependent/glslang_tab.cpp"
break;
case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */
-#line 943 "MachineIndependent/glslang.y"
+#line 936 "MachineIndependent/glslang.y"
{
--parseContext.blockNestingLevel;
parseContext.blockName = (yyvsp[-4].lex).string;
@@ -6228,61 +6221,61 @@ yyreduce:
(yyval.interm).loc = (yyvsp[-5].interm.type).loc;
(yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
-#line 6232 "MachineIndependent/glslang_tab.cpp"
+#line 6225 "MachineIndependent/glslang_tab.cpp"
break;
case 107: /* identifier_list: COMMA IDENTIFIER */
-#line 954 "MachineIndependent/glslang.y"
+#line 947 "MachineIndependent/glslang.y"
{
(yyval.interm.identifierList) = new TIdentifierList;
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 6241 "MachineIndependent/glslang_tab.cpp"
+#line 6234 "MachineIndependent/glslang_tab.cpp"
break;
case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */
-#line 958 "MachineIndependent/glslang.y"
+#line 951 "MachineIndependent/glslang.y"
{
(yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 6250 "MachineIndependent/glslang_tab.cpp"
+#line 6243 "MachineIndependent/glslang_tab.cpp"
break;
case 109: /* function_prototype: function_declarator RIGHT_PAREN */
-#line 965 "MachineIndependent/glslang.y"
+#line 958 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-1].interm.function);
if (parseContext.compileOnly) (yyval.interm).function->setExport();
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 6260 "MachineIndependent/glslang_tab.cpp"
+#line 6253 "MachineIndependent/glslang_tab.cpp"
break;
case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */
-#line 970 "MachineIndependent/glslang.y"
+#line 963 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-2].interm.function);
if (parseContext.compileOnly) (yyval.interm).function->setExport();
(yyval.interm).loc = (yyvsp[-1].lex).loc;
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
}
-#line 6271 "MachineIndependent/glslang_tab.cpp"
+#line 6264 "MachineIndependent/glslang_tab.cpp"
break;
case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */
-#line 976 "MachineIndependent/glslang.y"
+#line 969 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-1].interm.function);
if (parseContext.compileOnly) (yyval.interm).function->setExport();
(yyval.interm).loc = (yyvsp[0].lex).loc;
parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes));
}
-#line 6282 "MachineIndependent/glslang_tab.cpp"
+#line 6275 "MachineIndependent/glslang_tab.cpp"
break;
case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */
-#line 982 "MachineIndependent/glslang.y"
+#line 975 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-2].interm.function);
if (parseContext.compileOnly) (yyval.interm).function->setExport();
@@ -6290,27 +6283,27 @@ yyreduce:
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes));
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
}
-#line 6294 "MachineIndependent/glslang_tab.cpp"
+#line 6287 "MachineIndependent/glslang_tab.cpp"
break;
case 113: /* function_declarator: function_header */
-#line 992 "MachineIndependent/glslang.y"
+#line 985 "MachineIndependent/glslang.y"
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 6302 "MachineIndependent/glslang_tab.cpp"
+#line 6295 "MachineIndependent/glslang_tab.cpp"
break;
case 114: /* function_declarator: function_header_with_parameters */
-#line 995 "MachineIndependent/glslang.y"
+#line 988 "MachineIndependent/glslang.y"
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 6310 "MachineIndependent/glslang_tab.cpp"
+#line 6303 "MachineIndependent/glslang_tab.cpp"
break;
case 115: /* function_header_with_parameters: function_header parameter_declaration */
-#line 1002 "MachineIndependent/glslang.y"
+#line 995 "MachineIndependent/glslang.y"
{
// Add the parameter
(yyval.interm.function) = (yyvsp[-1].interm.function);
@@ -6324,11 +6317,11 @@ yyreduce:
else
delete (yyvsp[0].interm).param.type;
}
-#line 6328 "MachineIndependent/glslang_tab.cpp"
+#line 6321 "MachineIndependent/glslang_tab.cpp"
break;
case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */
-#line 1015 "MachineIndependent/glslang.y"
+#line 1008 "MachineIndependent/glslang.y"
{
//
// Only first parameter of one-parameter functions can be void
@@ -6349,11 +6342,11 @@ yyreduce:
parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param);
}
}
-#line 6353 "MachineIndependent/glslang_tab.cpp"
+#line 6346 "MachineIndependent/glslang_tab.cpp"
break;
case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */
-#line 1038 "MachineIndependent/glslang.y"
+#line 1031 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
@@ -6373,11 +6366,11 @@ yyreduce:
function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
-#line 6377 "MachineIndependent/glslang_tab.cpp"
+#line 6370 "MachineIndependent/glslang_tab.cpp"
break;
case 118: /* parameter_declarator: type_specifier IDENTIFIER */
-#line 1061 "MachineIndependent/glslang.y"
+#line 1054 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -6393,11 +6386,11 @@ yyreduce:
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
-#line 6397 "MachineIndependent/glslang_tab.cpp"
+#line 6390 "MachineIndependent/glslang_tab.cpp"
break;
case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */
-#line 1076 "MachineIndependent/glslang.y"
+#line 1069 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -6417,11 +6410,11 @@ yyreduce:
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
-#line 6421 "MachineIndependent/glslang_tab.cpp"
+#line 6414 "MachineIndependent/glslang_tab.cpp"
break;
case 120: /* parameter_declaration: type_qualifier parameter_declarator */
-#line 1101 "MachineIndependent/glslang.y"
+#line 1094 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -6433,11 +6426,11 @@ yyreduce:
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 6437 "MachineIndependent/glslang_tab.cpp"
+#line 6430 "MachineIndependent/glslang_tab.cpp"
break;
case 121: /* parameter_declaration: parameter_declarator */
-#line 1112 "MachineIndependent/glslang.y"
+#line 1105 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
@@ -6445,11 +6438,11 @@ yyreduce:
parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat());
}
-#line 6449 "MachineIndependent/glslang_tab.cpp"
+#line 6442 "MachineIndependent/glslang_tab.cpp"
break;
case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */
-#line 1122 "MachineIndependent/glslang.y"
+#line 1115 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -6460,11 +6453,11 @@ yyreduce:
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 6464 "MachineIndependent/glslang_tab.cpp"
+#line 6457 "MachineIndependent/glslang_tab.cpp"
break;
case 123: /* parameter_declaration: parameter_type_specifier */
-#line 1132 "MachineIndependent/glslang.y"
+#line 1125 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
@@ -6472,118 +6465,118 @@ yyreduce:
parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat());
}
-#line 6476 "MachineIndependent/glslang_tab.cpp"
+#line 6469 "MachineIndependent/glslang_tab.cpp"
break;
case 124: /* parameter_type_specifier: type_specifier */
-#line 1142 "MachineIndependent/glslang.y"
+#line 1135 "MachineIndependent/glslang.y"
{
TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
(yyval.interm).param = param;
if ((yyvsp[0].interm.type).arraySizes)
parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
}
-#line 6487 "MachineIndependent/glslang_tab.cpp"
+#line 6480 "MachineIndependent/glslang_tab.cpp"
break;
case 125: /* init_declarator_list: single_declaration */
-#line 1151 "MachineIndependent/glslang.y"
+#line 1144 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 6495 "MachineIndependent/glslang_tab.cpp"
+#line 6488 "MachineIndependent/glslang_tab.cpp"
break;
case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */
-#line 1154 "MachineIndependent/glslang.y"
+#line 1147 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-2].interm);
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
-#line 6504 "MachineIndependent/glslang_tab.cpp"
+#line 6497 "MachineIndependent/glslang_tab.cpp"
break;
case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */
-#line 1158 "MachineIndependent/glslang.y"
+#line 1151 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-3].interm);
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
-#line 6513 "MachineIndependent/glslang_tab.cpp"
+#line 6506 "MachineIndependent/glslang_tab.cpp"
break;
case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */
-#line 1162 "MachineIndependent/glslang.y"
+#line 1155 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-5].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 6523 "MachineIndependent/glslang_tab.cpp"
+#line 6516 "MachineIndependent/glslang_tab.cpp"
break;
case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */
-#line 1167 "MachineIndependent/glslang.y"
+#line 1160 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-4].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 6533 "MachineIndependent/glslang_tab.cpp"
+#line 6526 "MachineIndependent/glslang_tab.cpp"
break;
case 130: /* single_declaration: fully_specified_type */
-#line 1175 "MachineIndependent/glslang.y"
+#line 1168 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[0].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
-#line 6543 "MachineIndependent/glslang_tab.cpp"
+#line 6536 "MachineIndependent/glslang_tab.cpp"
break;
case 131: /* single_declaration: fully_specified_type IDENTIFIER */
-#line 1180 "MachineIndependent/glslang.y"
+#line 1173 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-1].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
}
-#line 6553 "MachineIndependent/glslang_tab.cpp"
+#line 6546 "MachineIndependent/glslang_tab.cpp"
break;
case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */
-#line 1185 "MachineIndependent/glslang.y"
+#line 1178 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-2].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
}
-#line 6563 "MachineIndependent/glslang_tab.cpp"
+#line 6556 "MachineIndependent/glslang_tab.cpp"
break;
case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */
-#line 1190 "MachineIndependent/glslang.y"
+#line 1183 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-4].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 6573 "MachineIndependent/glslang_tab.cpp"
+#line 6566 "MachineIndependent/glslang_tab.cpp"
break;
case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */
-#line 1195 "MachineIndependent/glslang.y"
+#line 1188 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-3].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 6583 "MachineIndependent/glslang_tab.cpp"
+#line 6576 "MachineIndependent/glslang_tab.cpp"
break;
case 135: /* fully_specified_type: type_specifier */
-#line 1204 "MachineIndependent/glslang.y"
+#line 1197 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
@@ -6594,11 +6587,11 @@ yyreduce:
}
parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat());
}
-#line 6598 "MachineIndependent/glslang_tab.cpp"
+#line 6591 "MachineIndependent/glslang_tab.cpp"
break;
case 136: /* fully_specified_type: type_qualifier type_specifier */
-#line 1214 "MachineIndependent/glslang.y"
+#line 1207 "MachineIndependent/glslang.y"
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type));
parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
@@ -6623,22 +6616,22 @@ yyreduce:
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
-#line 6627 "MachineIndependent/glslang_tab.cpp"
+#line 6620 "MachineIndependent/glslang_tab.cpp"
break;
case 137: /* invariant_qualifier: INVARIANT */
-#line 1241 "MachineIndependent/glslang.y"
+#line 1234 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.invariant = true;
}
-#line 6638 "MachineIndependent/glslang_tab.cpp"
+#line 6631 "MachineIndependent/glslang_tab.cpp"
break;
case 138: /* interpolation_qualifier: SMOOTH */
-#line 1250 "MachineIndependent/glslang.y"
+#line 1243 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
@@ -6646,11 +6639,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
-#line 6650 "MachineIndependent/glslang_tab.cpp"
+#line 6643 "MachineIndependent/glslang_tab.cpp"
break;
case 139: /* interpolation_qualifier: FLAT */
-#line 1257 "MachineIndependent/glslang.y"
+#line 1250 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
@@ -6658,11 +6651,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
-#line 6662 "MachineIndependent/glslang_tab.cpp"
+#line 6655 "MachineIndependent/glslang_tab.cpp"
break;
case 140: /* interpolation_qualifier: NOPERSPECTIVE */
-#line 1264 "MachineIndependent/glslang.y"
+#line 1257 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
@@ -6670,11 +6663,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
}
-#line 6674 "MachineIndependent/glslang_tab.cpp"
+#line 6667 "MachineIndependent/glslang_tab.cpp"
break;
case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */
-#line 1271 "MachineIndependent/glslang.y"
+#line 1264 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
@@ -6682,11 +6675,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.explicitInterp = true;
}
-#line 6686 "MachineIndependent/glslang_tab.cpp"
+#line 6679 "MachineIndependent/glslang_tab.cpp"
break;
case 142: /* interpolation_qualifier: PERVERTEXNV */
-#line 1278 "MachineIndependent/glslang.y"
+#line 1271 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
@@ -6695,11 +6688,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.pervertexNV = true;
}
-#line 6699 "MachineIndependent/glslang_tab.cpp"
+#line 6692 "MachineIndependent/glslang_tab.cpp"
break;
case 143: /* interpolation_qualifier: PERVERTEXEXT */
-#line 1286 "MachineIndependent/glslang.y"
+#line 1279 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
@@ -6708,11 +6701,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.pervertexEXT = true;
}
-#line 6712 "MachineIndependent/glslang_tab.cpp"
+#line 6705 "MachineIndependent/glslang_tab.cpp"
break;
case 144: /* interpolation_qualifier: PERPRIMITIVENV */
-#line 1294 "MachineIndependent/glslang.y"
+#line 1287 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV");
@@ -6723,11 +6716,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perPrimitiveNV = true;
}
-#line 6727 "MachineIndependent/glslang_tab.cpp"
+#line 6720 "MachineIndependent/glslang_tab.cpp"
break;
case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */
-#line 1304 "MachineIndependent/glslang.y"
+#line 1297 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT");
@@ -6738,11 +6731,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perPrimitiveNV = true;
}
-#line 6742 "MachineIndependent/glslang_tab.cpp"
+#line 6735 "MachineIndependent/glslang_tab.cpp"
break;
case 146: /* interpolation_qualifier: PERVIEWNV */
-#line 1314 "MachineIndependent/glslang.y"
+#line 1307 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV");
@@ -6750,11 +6743,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perViewNV = true;
}
-#line 6754 "MachineIndependent/glslang_tab.cpp"
+#line 6747 "MachineIndependent/glslang_tab.cpp"
break;
case 147: /* interpolation_qualifier: PERTASKNV */
-#line 1321 "MachineIndependent/glslang.y"
+#line 1314 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV");
@@ -6762,84 +6755,84 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perTaskNV = true;
}
-#line 6766 "MachineIndependent/glslang_tab.cpp"
+#line 6759 "MachineIndependent/glslang_tab.cpp"
break;
case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */
-#line 1331 "MachineIndependent/glslang.y"
+#line 1324 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
}
-#line 6774 "MachineIndependent/glslang_tab.cpp"
+#line 6767 "MachineIndependent/glslang_tab.cpp"
break;
case 149: /* layout_qualifier_id_list: layout_qualifier_id */
-#line 1337 "MachineIndependent/glslang.y"
+#line 1330 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6782 "MachineIndependent/glslang_tab.cpp"
+#line 6775 "MachineIndependent/glslang_tab.cpp"
break;
case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */
-#line 1340 "MachineIndependent/glslang.y"
+#line 1333 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-2].interm.type);
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 6792 "MachineIndependent/glslang_tab.cpp"
+#line 6785 "MachineIndependent/glslang_tab.cpp"
break;
case 151: /* layout_qualifier_id: IDENTIFIER */
-#line 1347 "MachineIndependent/glslang.y"
+#line 1340 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
-#line 6801 "MachineIndependent/glslang_tab.cpp"
+#line 6794 "MachineIndependent/glslang_tab.cpp"
break;
case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */
-#line 1351 "MachineIndependent/glslang.y"
+#line 1344 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-2].lex).loc);
parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
}
-#line 6810 "MachineIndependent/glslang_tab.cpp"
+#line 6803 "MachineIndependent/glslang_tab.cpp"
break;
case 153: /* layout_qualifier_id: SHARED */
-#line 1355 "MachineIndependent/glslang.y"
+#line 1348 "MachineIndependent/glslang.y"
{ // because "shared" is both an identifier and a keyword
(yyval.interm.type).init((yyvsp[0].lex).loc);
TString strShared("shared");
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
}
-#line 6820 "MachineIndependent/glslang_tab.cpp"
+#line 6813 "MachineIndependent/glslang_tab.cpp"
break;
case 154: /* precise_qualifier: PRECISE */
-#line 1363 "MachineIndependent/glslang.y"
+#line 1356 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.noContraction = true;
}
-#line 6831 "MachineIndependent/glslang_tab.cpp"
+#line 6824 "MachineIndependent/glslang_tab.cpp"
break;
case 155: /* type_qualifier: single_type_qualifier */
-#line 1372 "MachineIndependent/glslang.y"
+#line 1365 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6839 "MachineIndependent/glslang_tab.cpp"
+#line 6832 "MachineIndependent/glslang_tab.cpp"
break;
case 156: /* type_qualifier: type_qualifier single_type_qualifier */
-#line 1375 "MachineIndependent/glslang.y"
+#line 1368 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
@@ -6848,151 +6841,151 @@ yyreduce:
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 6852 "MachineIndependent/glslang_tab.cpp"
+#line 6845 "MachineIndependent/glslang_tab.cpp"
break;
case 157: /* single_type_qualifier: storage_qualifier */
-#line 1386 "MachineIndependent/glslang.y"
+#line 1379 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6860 "MachineIndependent/glslang_tab.cpp"
+#line 6853 "MachineIndependent/glslang_tab.cpp"
break;
case 158: /* single_type_qualifier: layout_qualifier */
-#line 1389 "MachineIndependent/glslang.y"
+#line 1382 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6868 "MachineIndependent/glslang_tab.cpp"
+#line 6861 "MachineIndependent/glslang_tab.cpp"
break;
case 159: /* single_type_qualifier: precision_qualifier */
-#line 1392 "MachineIndependent/glslang.y"
+#line 1385 "MachineIndependent/glslang.y"
{
parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6877 "MachineIndependent/glslang_tab.cpp"
+#line 6870 "MachineIndependent/glslang_tab.cpp"
break;
case 160: /* single_type_qualifier: interpolation_qualifier */
-#line 1396 "MachineIndependent/glslang.y"
+#line 1389 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6886 "MachineIndependent/glslang_tab.cpp"
+#line 6879 "MachineIndependent/glslang_tab.cpp"
break;
case 161: /* single_type_qualifier: invariant_qualifier */
-#line 1400 "MachineIndependent/glslang.y"
+#line 1393 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6895 "MachineIndependent/glslang_tab.cpp"
+#line 6888 "MachineIndependent/glslang_tab.cpp"
break;
case 162: /* single_type_qualifier: precise_qualifier */
-#line 1404 "MachineIndependent/glslang.y"
+#line 1397 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6904 "MachineIndependent/glslang_tab.cpp"
+#line 6897 "MachineIndependent/glslang_tab.cpp"
break;
case 163: /* single_type_qualifier: non_uniform_qualifier */
-#line 1408 "MachineIndependent/glslang.y"
+#line 1401 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6912 "MachineIndependent/glslang_tab.cpp"
+#line 6905 "MachineIndependent/glslang_tab.cpp"
break;
case 164: /* single_type_qualifier: spirv_storage_class_qualifier */
-#line 1411 "MachineIndependent/glslang.y"
+#line 1404 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class");
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6922 "MachineIndependent/glslang_tab.cpp"
+#line 6915 "MachineIndependent/glslang_tab.cpp"
break;
case 165: /* single_type_qualifier: spirv_decorate_qualifier */
-#line 1416 "MachineIndependent/glslang.y"
+#line 1409 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6931 "MachineIndependent/glslang_tab.cpp"
+#line 6924 "MachineIndependent/glslang_tab.cpp"
break;
case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */
-#line 1420 "MachineIndependent/glslang.y"
+#line 1413 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.setSpirvByReference();
}
-#line 6941 "MachineIndependent/glslang_tab.cpp"
+#line 6934 "MachineIndependent/glslang_tab.cpp"
break;
case 167: /* single_type_qualifier: SPIRV_LITERAL */
-#line 1425 "MachineIndependent/glslang.y"
+#line 1418 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.setSpirvLiteral();
}
-#line 6951 "MachineIndependent/glslang_tab.cpp"
+#line 6944 "MachineIndependent/glslang_tab.cpp"
break;
case 168: /* storage_qualifier: CONST */
-#line 1433 "MachineIndependent/glslang.y"
+#line 1426 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant
}
-#line 6960 "MachineIndependent/glslang_tab.cpp"
+#line 6953 "MachineIndependent/glslang_tab.cpp"
break;
case 169: /* storage_qualifier: INOUT */
-#line 1437 "MachineIndependent/glslang.y"
+#line 1430 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 6970 "MachineIndependent/glslang_tab.cpp"
+#line 6963 "MachineIndependent/glslang_tab.cpp"
break;
case 170: /* storage_qualifier: IN */
-#line 1442 "MachineIndependent/glslang.y"
+#line 1435 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "in");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqIn;
}
-#line 6981 "MachineIndependent/glslang_tab.cpp"
+#line 6974 "MachineIndependent/glslang_tab.cpp"
break;
case 171: /* storage_qualifier: OUT */
-#line 1448 "MachineIndependent/glslang.y"
+#line 1441 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "out");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqOut;
}
-#line 6992 "MachineIndependent/glslang_tab.cpp"
+#line 6985 "MachineIndependent/glslang_tab.cpp"
break;
case 172: /* storage_qualifier: CENTROID */
-#line 1454 "MachineIndependent/glslang.y"
+#line 1447 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -7000,31 +6993,31 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 7004 "MachineIndependent/glslang_tab.cpp"
+#line 6997 "MachineIndependent/glslang_tab.cpp"
break;
case 173: /* storage_qualifier: UNIFORM */
-#line 1461 "MachineIndependent/glslang.y"
+#line 1454 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 7014 "MachineIndependent/glslang_tab.cpp"
+#line 7007 "MachineIndependent/glslang_tab.cpp"
break;
case 174: /* storage_qualifier: TILEIMAGEEXT */
-#line 1466 "MachineIndependent/glslang.y"
+#line 1459 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqTileImageEXT;
}
-#line 7024 "MachineIndependent/glslang_tab.cpp"
+#line 7017 "MachineIndependent/glslang_tab.cpp"
break;
case 175: /* storage_qualifier: SHARED */
-#line 1471 "MachineIndependent/glslang.y"
+#line 1464 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -7033,21 +7026,21 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 7037 "MachineIndependent/glslang_tab.cpp"
+#line 7030 "MachineIndependent/glslang_tab.cpp"
break;
case 176: /* storage_qualifier: BUFFER */
-#line 1479 "MachineIndependent/glslang.y"
+#line 1472 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 7047 "MachineIndependent/glslang_tab.cpp"
+#line 7040 "MachineIndependent/glslang_tab.cpp"
break;
case 177: /* storage_qualifier: ATTRIBUTE */
-#line 1484 "MachineIndependent/glslang.y"
+#line 1477 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -7060,11 +7053,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 7064 "MachineIndependent/glslang_tab.cpp"
+#line 7057 "MachineIndependent/glslang_tab.cpp"
break;
case 178: /* storage_qualifier: VARYING */
-#line 1496 "MachineIndependent/glslang.y"
+#line 1489 "MachineIndependent/glslang.y"
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -7079,32 +7072,32 @@ yyreduce:
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 7083 "MachineIndependent/glslang_tab.cpp"
+#line 7076 "MachineIndependent/glslang_tab.cpp"
break;
case 179: /* storage_qualifier: PATCH */
-#line 1510 "MachineIndependent/glslang.y"
+#line 1503 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.patch = true;
}
-#line 7094 "MachineIndependent/glslang_tab.cpp"
+#line 7087 "MachineIndependent/glslang_tab.cpp"
break;
case 180: /* storage_qualifier: SAMPLE */
-#line 1516 "MachineIndependent/glslang.y"
+#line 1509 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 7104 "MachineIndependent/glslang_tab.cpp"
+#line 7097 "MachineIndependent/glslang_tab.cpp"
break;
case 181: /* storage_qualifier: HITATTRNV */
-#line 1521 "MachineIndependent/glslang.y"
+#line 1514 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -7113,11 +7106,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 7117 "MachineIndependent/glslang_tab.cpp"
+#line 7110 "MachineIndependent/glslang_tab.cpp"
break;
case 182: /* storage_qualifier: HITOBJECTATTRNV */
-#line 1529 "MachineIndependent/glslang.y"
+#line 1522 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask
@@ -7126,11 +7119,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV;
}
-#line 7130 "MachineIndependent/glslang_tab.cpp"
+#line 7123 "MachineIndependent/glslang_tab.cpp"
break;
case 183: /* storage_qualifier: HITATTREXT */
-#line 1537 "MachineIndependent/glslang.y"
+#line 1530 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -7139,11 +7132,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 7143 "MachineIndependent/glslang_tab.cpp"
+#line 7136 "MachineIndependent/glslang_tab.cpp"
break;
case 184: /* storage_qualifier: PAYLOADNV */
-#line 1545 "MachineIndependent/glslang.y"
+#line 1538 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -7152,11 +7145,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 7156 "MachineIndependent/glslang_tab.cpp"
+#line 7149 "MachineIndependent/glslang_tab.cpp"
break;
case 185: /* storage_qualifier: PAYLOADEXT */
-#line 1553 "MachineIndependent/glslang.y"
+#line 1546 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -7165,11 +7158,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 7169 "MachineIndependent/glslang_tab.cpp"
+#line 7162 "MachineIndependent/glslang_tab.cpp"
break;
case 186: /* storage_qualifier: PAYLOADINNV */
-#line 1561 "MachineIndependent/glslang.y"
+#line 1554 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -7178,11 +7171,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayloadIn;
}
-#line 7182 "MachineIndependent/glslang_tab.cpp"
+#line 7175 "MachineIndependent/glslang_tab.cpp"
break;
case 187: /* storage_qualifier: PAYLOADINEXT */
-#line 1569 "MachineIndependent/glslang.y"
+#line 1562 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -7191,11 +7184,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayloadIn;
}
-#line 7195 "MachineIndependent/glslang_tab.cpp"
+#line 7188 "MachineIndependent/glslang_tab.cpp"
break;
case 188: /* storage_qualifier: CALLDATANV */
-#line 1577 "MachineIndependent/glslang.y"
+#line 1570 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -7204,11 +7197,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableData;
}
-#line 7208 "MachineIndependent/glslang_tab.cpp"
+#line 7201 "MachineIndependent/glslang_tab.cpp"
break;
case 189: /* storage_qualifier: CALLDATAEXT */
-#line 1585 "MachineIndependent/glslang.y"
+#line 1578 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -7217,11 +7210,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableData;
}
-#line 7221 "MachineIndependent/glslang_tab.cpp"
+#line 7214 "MachineIndependent/glslang_tab.cpp"
break;
case 190: /* storage_qualifier: CALLDATAINNV */
-#line 1593 "MachineIndependent/glslang.y"
+#line 1586 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
@@ -7229,11 +7222,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableDataIn;
}
-#line 7233 "MachineIndependent/glslang_tab.cpp"
+#line 7226 "MachineIndependent/glslang_tab.cpp"
break;
case 191: /* storage_qualifier: CALLDATAINEXT */
-#line 1600 "MachineIndependent/glslang.y"
+#line 1593 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
@@ -7241,138 +7234,138 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableDataIn;
}
-#line 7245 "MachineIndependent/glslang_tab.cpp"
+#line 7238 "MachineIndependent/glslang_tab.cpp"
break;
case 192: /* storage_qualifier: COHERENT */
-#line 1607 "MachineIndependent/glslang.y"
+#line 1600 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 7254 "MachineIndependent/glslang_tab.cpp"
+#line 7247 "MachineIndependent/glslang_tab.cpp"
break;
case 193: /* storage_qualifier: DEVICECOHERENT */
-#line 1611 "MachineIndependent/glslang.y"
+#line 1604 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent");
(yyval.interm.type).qualifier.devicecoherent = true;
}
-#line 7264 "MachineIndependent/glslang_tab.cpp"
+#line 7257 "MachineIndependent/glslang_tab.cpp"
break;
case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */
-#line 1616 "MachineIndependent/glslang.y"
+#line 1609 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent");
(yyval.interm.type).qualifier.queuefamilycoherent = true;
}
-#line 7274 "MachineIndependent/glslang_tab.cpp"
+#line 7267 "MachineIndependent/glslang_tab.cpp"
break;
case 195: /* storage_qualifier: WORKGROUPCOHERENT */
-#line 1621 "MachineIndependent/glslang.y"
+#line 1614 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent");
(yyval.interm.type).qualifier.workgroupcoherent = true;
}
-#line 7284 "MachineIndependent/glslang_tab.cpp"
+#line 7277 "MachineIndependent/glslang_tab.cpp"
break;
case 196: /* storage_qualifier: SUBGROUPCOHERENT */
-#line 1626 "MachineIndependent/glslang.y"
+#line 1619 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent");
(yyval.interm.type).qualifier.subgroupcoherent = true;
}
-#line 7294 "MachineIndependent/glslang_tab.cpp"
+#line 7287 "MachineIndependent/glslang_tab.cpp"
break;
case 197: /* storage_qualifier: NONPRIVATE */
-#line 1631 "MachineIndependent/glslang.y"
+#line 1624 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
(yyval.interm.type).qualifier.nonprivate = true;
}
-#line 7304 "MachineIndependent/glslang_tab.cpp"
+#line 7297 "MachineIndependent/glslang_tab.cpp"
break;
case 198: /* storage_qualifier: SHADERCALLCOHERENT */
-#line 1636 "MachineIndependent/glslang.y"
+#line 1629 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent");
(yyval.interm.type).qualifier.shadercallcoherent = true;
}
-#line 7314 "MachineIndependent/glslang_tab.cpp"
+#line 7307 "MachineIndependent/glslang_tab.cpp"
break;
case 199: /* storage_qualifier: VOLATILE */
-#line 1641 "MachineIndependent/glslang.y"
+#line 1634 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 7323 "MachineIndependent/glslang_tab.cpp"
+#line 7316 "MachineIndependent/glslang_tab.cpp"
break;
case 200: /* storage_qualifier: RESTRICT */
-#line 1645 "MachineIndependent/glslang.y"
+#line 1638 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 7332 "MachineIndependent/glslang_tab.cpp"
+#line 7325 "MachineIndependent/glslang_tab.cpp"
break;
case 201: /* storage_qualifier: READONLY */
-#line 1649 "MachineIndependent/glslang.y"
+#line 1642 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 7341 "MachineIndependent/glslang_tab.cpp"
+#line 7334 "MachineIndependent/glslang_tab.cpp"
break;
case 202: /* storage_qualifier: WRITEONLY */
-#line 1653 "MachineIndependent/glslang.y"
+#line 1646 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 7350 "MachineIndependent/glslang_tab.cpp"
+#line 7343 "MachineIndependent/glslang_tab.cpp"
break;
case 203: /* storage_qualifier: SUBROUTINE */
-#line 1657 "MachineIndependent/glslang.y"
+#line 1650 "MachineIndependent/glslang.y"
{
parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[0].lex).loc);
}
-#line 7361 "MachineIndependent/glslang_tab.cpp"
+#line 7354 "MachineIndependent/glslang_tab.cpp"
break;
case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */
-#line 1663 "MachineIndependent/glslang.y"
+#line 1656 "MachineIndependent/glslang.y"
{
parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[-3].lex).loc);
}
-#line 7372 "MachineIndependent/glslang_tab.cpp"
+#line 7365 "MachineIndependent/glslang_tab.cpp"
break;
case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */
-#line 1669 "MachineIndependent/glslang.y"
+#line 1662 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT");
@@ -7380,38 +7373,38 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT;
}
-#line 7384 "MachineIndependent/glslang_tab.cpp"
+#line 7377 "MachineIndependent/glslang_tab.cpp"
break;
case 206: /* non_uniform_qualifier: NONUNIFORM */
-#line 1679 "MachineIndependent/glslang.y"
+#line 1672 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nonUniform = true;
}
-#line 7393 "MachineIndependent/glslang_tab.cpp"
+#line 7386 "MachineIndependent/glslang_tab.cpp"
break;
case 207: /* type_name_list: IDENTIFIER */
-#line 1686 "MachineIndependent/glslang.y"
+#line 1679 "MachineIndependent/glslang.y"
{
// TODO
}
-#line 7401 "MachineIndependent/glslang_tab.cpp"
+#line 7394 "MachineIndependent/glslang_tab.cpp"
break;
case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */
-#line 1689 "MachineIndependent/glslang.y"
+#line 1682 "MachineIndependent/glslang.y"
{
// TODO: 4.0 semantics: subroutines
// 1) make sure each identifier is a type declared earlier with SUBROUTINE
// 2) save all of the identifiers for future comparison with the declared function
}
-#line 7411 "MachineIndependent/glslang_tab.cpp"
+#line 7404 "MachineIndependent/glslang_tab.cpp"
break;
case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */
-#line 1697 "MachineIndependent/glslang.y"
+#line 1690 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
@@ -7419,11 +7412,11 @@ yyreduce:
parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type));
}
-#line 7423 "MachineIndependent/glslang_tab.cpp"
+#line 7416 "MachineIndependent/glslang_tab.cpp"
break;
case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */
-#line 1704 "MachineIndependent/glslang.y"
+#line 1697 "MachineIndependent/glslang.y"
{
parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
(yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -7432,21 +7425,21 @@ yyreduce:
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type));
}
-#line 7436 "MachineIndependent/glslang_tab.cpp"
+#line 7429 "MachineIndependent/glslang_tab.cpp"
break;
case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */
-#line 1715 "MachineIndependent/glslang.y"
+#line 1708 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 7446 "MachineIndependent/glslang_tab.cpp"
+#line 7439 "MachineIndependent/glslang_tab.cpp"
break;
case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */
-#line 1720 "MachineIndependent/glslang.y"
+#line 1713 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -7455,20 +7448,20 @@ yyreduce:
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 7459 "MachineIndependent/glslang_tab.cpp"
+#line 7452 "MachineIndependent/glslang_tab.cpp"
break;
case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */
-#line 1728 "MachineIndependent/glslang.y"
+#line 1721 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 7468 "MachineIndependent/glslang_tab.cpp"
+#line 7461 "MachineIndependent/glslang_tab.cpp"
break;
case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */
-#line 1732 "MachineIndependent/glslang.y"
+#line 1725 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -7476,45 +7469,45 @@ yyreduce:
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 7480 "MachineIndependent/glslang_tab.cpp"
+#line 7473 "MachineIndependent/glslang_tab.cpp"
break;
case 215: /* type_parameter_specifier_opt: type_parameter_specifier */
-#line 1742 "MachineIndependent/glslang.y"
+#line 1735 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
}
-#line 7488 "MachineIndependent/glslang_tab.cpp"
+#line 7481 "MachineIndependent/glslang_tab.cpp"
break;
case 216: /* type_parameter_specifier_opt: %empty */
-#line 1745 "MachineIndependent/glslang.y"
+#line 1738 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = 0;
}
-#line 7496 "MachineIndependent/glslang_tab.cpp"
+#line 7489 "MachineIndependent/glslang_tab.cpp"
break;
case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */
-#line 1751 "MachineIndependent/glslang.y"
+#line 1744 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
}
-#line 7504 "MachineIndependent/glslang_tab.cpp"
+#line 7497 "MachineIndependent/glslang_tab.cpp"
break;
case 218: /* type_parameter_specifier_list: type_specifier */
-#line 1757 "MachineIndependent/glslang.y"
+#line 1750 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = new TTypeParameters;
(yyval.interm.typeParameters)->arraySizes = new TArraySizes;
(yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType;
}
-#line 7514 "MachineIndependent/glslang_tab.cpp"
+#line 7507 "MachineIndependent/glslang_tab.cpp"
break;
case 219: /* type_parameter_specifier_list: unary_expression */
-#line 1762 "MachineIndependent/glslang.y"
+#line 1755 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = new TTypeParameters;
(yyval.interm.typeParameters)->arraySizes = new TArraySizes;
@@ -7523,11 +7516,11 @@ yyreduce:
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true);
(yyval.interm.typeParameters)->arraySizes->addInnerSize(size);
}
-#line 7527 "MachineIndependent/glslang_tab.cpp"
+#line 7520 "MachineIndependent/glslang_tab.cpp"
break;
case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */
-#line 1770 "MachineIndependent/glslang.y"
+#line 1763 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
@@ -7535,300 +7528,300 @@ yyreduce:
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true);
(yyval.interm.typeParameters)->arraySizes->addInnerSize(size);
}
-#line 7539 "MachineIndependent/glslang_tab.cpp"
+#line 7532 "MachineIndependent/glslang_tab.cpp"
break;
case 221: /* type_specifier_nonarray: VOID */
-#line 1780 "MachineIndependent/glslang.y"
+#line 1773 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 7548 "MachineIndependent/glslang_tab.cpp"
+#line 7541 "MachineIndependent/glslang_tab.cpp"
break;
case 222: /* type_specifier_nonarray: FLOAT */
-#line 1784 "MachineIndependent/glslang.y"
+#line 1777 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 7557 "MachineIndependent/glslang_tab.cpp"
+#line 7550 "MachineIndependent/glslang_tab.cpp"
break;
case 223: /* type_specifier_nonarray: INT */
-#line 1788 "MachineIndependent/glslang.y"
+#line 1781 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 7566 "MachineIndependent/glslang_tab.cpp"
+#line 7559 "MachineIndependent/glslang_tab.cpp"
break;
case 224: /* type_specifier_nonarray: UINT */
-#line 1792 "MachineIndependent/glslang.y"
+#line 1785 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 7576 "MachineIndependent/glslang_tab.cpp"
+#line 7569 "MachineIndependent/glslang_tab.cpp"
break;
case 225: /* type_specifier_nonarray: BOOL */
-#line 1797 "MachineIndependent/glslang.y"
+#line 1790 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
}
-#line 7585 "MachineIndependent/glslang_tab.cpp"
+#line 7578 "MachineIndependent/glslang_tab.cpp"
break;
case 226: /* type_specifier_nonarray: VEC2 */
-#line 1801 "MachineIndependent/glslang.y"
+#line 1794 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
-#line 7595 "MachineIndependent/glslang_tab.cpp"
+#line 7588 "MachineIndependent/glslang_tab.cpp"
break;
case 227: /* type_specifier_nonarray: VEC3 */
-#line 1806 "MachineIndependent/glslang.y"
+#line 1799 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
-#line 7605 "MachineIndependent/glslang_tab.cpp"
+#line 7598 "MachineIndependent/glslang_tab.cpp"
break;
case 228: /* type_specifier_nonarray: VEC4 */
-#line 1811 "MachineIndependent/glslang.y"
+#line 1804 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
-#line 7615 "MachineIndependent/glslang_tab.cpp"
+#line 7608 "MachineIndependent/glslang_tab.cpp"
break;
case 229: /* type_specifier_nonarray: BVEC2 */
-#line 1816 "MachineIndependent/glslang.y"
+#line 1809 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(2);
}
-#line 7625 "MachineIndependent/glslang_tab.cpp"
+#line 7618 "MachineIndependent/glslang_tab.cpp"
break;
case 230: /* type_specifier_nonarray: BVEC3 */
-#line 1821 "MachineIndependent/glslang.y"
+#line 1814 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(3);
}
-#line 7635 "MachineIndependent/glslang_tab.cpp"
+#line 7628 "MachineIndependent/glslang_tab.cpp"
break;
case 231: /* type_specifier_nonarray: BVEC4 */
-#line 1826 "MachineIndependent/glslang.y"
+#line 1819 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(4);
}
-#line 7645 "MachineIndependent/glslang_tab.cpp"
+#line 7638 "MachineIndependent/glslang_tab.cpp"
break;
case 232: /* type_specifier_nonarray: IVEC2 */
-#line 1831 "MachineIndependent/glslang.y"
+#line 1824 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
-#line 7655 "MachineIndependent/glslang_tab.cpp"
+#line 7648 "MachineIndependent/glslang_tab.cpp"
break;
case 233: /* type_specifier_nonarray: IVEC3 */
-#line 1836 "MachineIndependent/glslang.y"
+#line 1829 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
-#line 7665 "MachineIndependent/glslang_tab.cpp"
+#line 7658 "MachineIndependent/glslang_tab.cpp"
break;
case 234: /* type_specifier_nonarray: IVEC4 */
-#line 1841 "MachineIndependent/glslang.y"
+#line 1834 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 7675 "MachineIndependent/glslang_tab.cpp"
+#line 7668 "MachineIndependent/glslang_tab.cpp"
break;
case 235: /* type_specifier_nonarray: UVEC2 */
-#line 1846 "MachineIndependent/glslang.y"
+#line 1839 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
-#line 7686 "MachineIndependent/glslang_tab.cpp"
+#line 7679 "MachineIndependent/glslang_tab.cpp"
break;
case 236: /* type_specifier_nonarray: UVEC3 */
-#line 1852 "MachineIndependent/glslang.y"
+#line 1845 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
-#line 7697 "MachineIndependent/glslang_tab.cpp"
+#line 7690 "MachineIndependent/glslang_tab.cpp"
break;
case 237: /* type_specifier_nonarray: UVEC4 */
-#line 1858 "MachineIndependent/glslang.y"
+#line 1851 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
-#line 7708 "MachineIndependent/glslang_tab.cpp"
+#line 7701 "MachineIndependent/glslang_tab.cpp"
break;
case 238: /* type_specifier_nonarray: MAT2 */
-#line 1864 "MachineIndependent/glslang.y"
+#line 1857 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7718 "MachineIndependent/glslang_tab.cpp"
+#line 7711 "MachineIndependent/glslang_tab.cpp"
break;
case 239: /* type_specifier_nonarray: MAT3 */
-#line 1869 "MachineIndependent/glslang.y"
+#line 1862 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7728 "MachineIndependent/glslang_tab.cpp"
+#line 7721 "MachineIndependent/glslang_tab.cpp"
break;
case 240: /* type_specifier_nonarray: MAT4 */
-#line 1874 "MachineIndependent/glslang.y"
+#line 1867 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7738 "MachineIndependent/glslang_tab.cpp"
+#line 7731 "MachineIndependent/glslang_tab.cpp"
break;
case 241: /* type_specifier_nonarray: MAT2X2 */
-#line 1879 "MachineIndependent/glslang.y"
+#line 1872 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7748 "MachineIndependent/glslang_tab.cpp"
+#line 7741 "MachineIndependent/glslang_tab.cpp"
break;
case 242: /* type_specifier_nonarray: MAT2X3 */
-#line 1884 "MachineIndependent/glslang.y"
+#line 1877 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 7758 "MachineIndependent/glslang_tab.cpp"
+#line 7751 "MachineIndependent/glslang_tab.cpp"
break;
case 243: /* type_specifier_nonarray: MAT2X4 */
-#line 1889 "MachineIndependent/glslang.y"
+#line 1882 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 7768 "MachineIndependent/glslang_tab.cpp"
+#line 7761 "MachineIndependent/glslang_tab.cpp"
break;
case 244: /* type_specifier_nonarray: MAT3X2 */
-#line 1894 "MachineIndependent/glslang.y"
+#line 1887 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 7778 "MachineIndependent/glslang_tab.cpp"
+#line 7771 "MachineIndependent/glslang_tab.cpp"
break;
case 245: /* type_specifier_nonarray: MAT3X3 */
-#line 1899 "MachineIndependent/glslang.y"
+#line 1892 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7788 "MachineIndependent/glslang_tab.cpp"
+#line 7781 "MachineIndependent/glslang_tab.cpp"
break;
case 246: /* type_specifier_nonarray: MAT3X4 */
-#line 1904 "MachineIndependent/glslang.y"
+#line 1897 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7798 "MachineIndependent/glslang_tab.cpp"
+#line 7791 "MachineIndependent/glslang_tab.cpp"
break;
case 247: /* type_specifier_nonarray: MAT4X2 */
-#line 1909 "MachineIndependent/glslang.y"
+#line 1902 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7808 "MachineIndependent/glslang_tab.cpp"
+#line 7801 "MachineIndependent/glslang_tab.cpp"
break;
case 248: /* type_specifier_nonarray: MAT4X3 */
-#line 1914 "MachineIndependent/glslang.y"
+#line 1907 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7818 "MachineIndependent/glslang_tab.cpp"
+#line 7811 "MachineIndependent/glslang_tab.cpp"
break;
case 249: /* type_specifier_nonarray: MAT4X4 */
-#line 1919 "MachineIndependent/glslang.y"
+#line 1912 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7828 "MachineIndependent/glslang_tab.cpp"
+#line 7821 "MachineIndependent/glslang_tab.cpp"
break;
case 250: /* type_specifier_nonarray: DOUBLE */
-#line 1924 "MachineIndependent/glslang.y"
+#line 1917 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7836,121 +7829,121 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 7840 "MachineIndependent/glslang_tab.cpp"
+#line 7833 "MachineIndependent/glslang_tab.cpp"
break;
case 251: /* type_specifier_nonarray: FLOAT16_T */
-#line 1931 "MachineIndependent/glslang.y"
+#line 1924 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
}
-#line 7850 "MachineIndependent/glslang_tab.cpp"
+#line 7843 "MachineIndependent/glslang_tab.cpp"
break;
case 252: /* type_specifier_nonarray: FLOAT32_T */
-#line 1936 "MachineIndependent/glslang.y"
+#line 1929 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 7860 "MachineIndependent/glslang_tab.cpp"
+#line 7853 "MachineIndependent/glslang_tab.cpp"
break;
case 253: /* type_specifier_nonarray: FLOAT64_T */
-#line 1941 "MachineIndependent/glslang.y"
+#line 1934 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 7870 "MachineIndependent/glslang_tab.cpp"
+#line 7863 "MachineIndependent/glslang_tab.cpp"
break;
case 254: /* type_specifier_nonarray: INT8_T */
-#line 1946 "MachineIndependent/glslang.y"
+#line 1939 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
}
-#line 7880 "MachineIndependent/glslang_tab.cpp"
+#line 7873 "MachineIndependent/glslang_tab.cpp"
break;
case 255: /* type_specifier_nonarray: UINT8_T */
-#line 1951 "MachineIndependent/glslang.y"
+#line 1944 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
}
-#line 7890 "MachineIndependent/glslang_tab.cpp"
+#line 7883 "MachineIndependent/glslang_tab.cpp"
break;
case 256: /* type_specifier_nonarray: INT16_T */
-#line 1956 "MachineIndependent/glslang.y"
+#line 1949 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
}
-#line 7900 "MachineIndependent/glslang_tab.cpp"
+#line 7893 "MachineIndependent/glslang_tab.cpp"
break;
case 257: /* type_specifier_nonarray: UINT16_T */
-#line 1961 "MachineIndependent/glslang.y"
+#line 1954 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
}
-#line 7910 "MachineIndependent/glslang_tab.cpp"
+#line 7903 "MachineIndependent/glslang_tab.cpp"
break;
case 258: /* type_specifier_nonarray: INT32_T */
-#line 1966 "MachineIndependent/glslang.y"
+#line 1959 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 7920 "MachineIndependent/glslang_tab.cpp"
+#line 7913 "MachineIndependent/glslang_tab.cpp"
break;
case 259: /* type_specifier_nonarray: UINT32_T */
-#line 1971 "MachineIndependent/glslang.y"
+#line 1964 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 7930 "MachineIndependent/glslang_tab.cpp"
+#line 7923 "MachineIndependent/glslang_tab.cpp"
break;
case 260: /* type_specifier_nonarray: INT64_T */
-#line 1976 "MachineIndependent/glslang.y"
+#line 1969 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
}
-#line 7940 "MachineIndependent/glslang_tab.cpp"
+#line 7933 "MachineIndependent/glslang_tab.cpp"
break;
case 261: /* type_specifier_nonarray: UINT64_T */
-#line 1981 "MachineIndependent/glslang.y"
+#line 1974 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
}
-#line 7950 "MachineIndependent/glslang_tab.cpp"
+#line 7943 "MachineIndependent/glslang_tab.cpp"
break;
case 262: /* type_specifier_nonarray: DVEC2 */
-#line 1986 "MachineIndependent/glslang.y"
+#line 1979 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7959,11 +7952,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 7963 "MachineIndependent/glslang_tab.cpp"
+#line 7956 "MachineIndependent/glslang_tab.cpp"
break;
case 263: /* type_specifier_nonarray: DVEC3 */
-#line 1994 "MachineIndependent/glslang.y"
+#line 1987 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7972,11 +7965,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 7976 "MachineIndependent/glslang_tab.cpp"
+#line 7969 "MachineIndependent/glslang_tab.cpp"
break;
case 264: /* type_specifier_nonarray: DVEC4 */
-#line 2002 "MachineIndependent/glslang.y"
+#line 1995 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7985,374 +7978,374 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 7989 "MachineIndependent/glslang_tab.cpp"
+#line 7982 "MachineIndependent/glslang_tab.cpp"
break;
case 265: /* type_specifier_nonarray: F16VEC2 */
-#line 2010 "MachineIndependent/glslang.y"
+#line 2003 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(2);
}
-#line 8000 "MachineIndependent/glslang_tab.cpp"
+#line 7993 "MachineIndependent/glslang_tab.cpp"
break;
case 266: /* type_specifier_nonarray: F16VEC3 */
-#line 2016 "MachineIndependent/glslang.y"
+#line 2009 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(3);
}
-#line 8011 "MachineIndependent/glslang_tab.cpp"
+#line 8004 "MachineIndependent/glslang_tab.cpp"
break;
case 267: /* type_specifier_nonarray: F16VEC4 */
-#line 2022 "MachineIndependent/glslang.y"
+#line 2015 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(4);
}
-#line 8022 "MachineIndependent/glslang_tab.cpp"
+#line 8015 "MachineIndependent/glslang_tab.cpp"
break;
case 268: /* type_specifier_nonarray: F32VEC2 */
-#line 2028 "MachineIndependent/glslang.y"
+#line 2021 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
-#line 8033 "MachineIndependent/glslang_tab.cpp"
+#line 8026 "MachineIndependent/glslang_tab.cpp"
break;
case 269: /* type_specifier_nonarray: F32VEC3 */
-#line 2034 "MachineIndependent/glslang.y"
+#line 2027 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
-#line 8044 "MachineIndependent/glslang_tab.cpp"
+#line 8037 "MachineIndependent/glslang_tab.cpp"
break;
case 270: /* type_specifier_nonarray: F32VEC4 */
-#line 2040 "MachineIndependent/glslang.y"
+#line 2033 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
-#line 8055 "MachineIndependent/glslang_tab.cpp"
+#line 8048 "MachineIndependent/glslang_tab.cpp"
break;
case 271: /* type_specifier_nonarray: F64VEC2 */
-#line 2046 "MachineIndependent/glslang.y"
+#line 2039 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 8066 "MachineIndependent/glslang_tab.cpp"
+#line 8059 "MachineIndependent/glslang_tab.cpp"
break;
case 272: /* type_specifier_nonarray: F64VEC3 */
-#line 2052 "MachineIndependent/glslang.y"
+#line 2045 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 8077 "MachineIndependent/glslang_tab.cpp"
+#line 8070 "MachineIndependent/glslang_tab.cpp"
break;
case 273: /* type_specifier_nonarray: F64VEC4 */
-#line 2058 "MachineIndependent/glslang.y"
+#line 2051 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 8088 "MachineIndependent/glslang_tab.cpp"
+#line 8081 "MachineIndependent/glslang_tab.cpp"
break;
case 274: /* type_specifier_nonarray: I8VEC2 */
-#line 2064 "MachineIndependent/glslang.y"
+#line 2057 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
(yyval.interm.type).setVector(2);
}
-#line 8099 "MachineIndependent/glslang_tab.cpp"
+#line 8092 "MachineIndependent/glslang_tab.cpp"
break;
case 275: /* type_specifier_nonarray: I8VEC3 */
-#line 2070 "MachineIndependent/glslang.y"
+#line 2063 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
(yyval.interm.type).setVector(3);
}
-#line 8110 "MachineIndependent/glslang_tab.cpp"
+#line 8103 "MachineIndependent/glslang_tab.cpp"
break;
case 276: /* type_specifier_nonarray: I8VEC4 */
-#line 2076 "MachineIndependent/glslang.y"
+#line 2069 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
(yyval.interm.type).setVector(4);
}
-#line 8121 "MachineIndependent/glslang_tab.cpp"
+#line 8114 "MachineIndependent/glslang_tab.cpp"
break;
case 277: /* type_specifier_nonarray: I16VEC2 */
-#line 2082 "MachineIndependent/glslang.y"
+#line 2075 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(2);
}
-#line 8132 "MachineIndependent/glslang_tab.cpp"
+#line 8125 "MachineIndependent/glslang_tab.cpp"
break;
case 278: /* type_specifier_nonarray: I16VEC3 */
-#line 2088 "MachineIndependent/glslang.y"
+#line 2081 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(3);
}
-#line 8143 "MachineIndependent/glslang_tab.cpp"
+#line 8136 "MachineIndependent/glslang_tab.cpp"
break;
case 279: /* type_specifier_nonarray: I16VEC4 */
-#line 2094 "MachineIndependent/glslang.y"
+#line 2087 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(4);
}
-#line 8154 "MachineIndependent/glslang_tab.cpp"
+#line 8147 "MachineIndependent/glslang_tab.cpp"
break;
case 280: /* type_specifier_nonarray: I32VEC2 */
-#line 2100 "MachineIndependent/glslang.y"
+#line 2093 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
-#line 8165 "MachineIndependent/glslang_tab.cpp"
+#line 8158 "MachineIndependent/glslang_tab.cpp"
break;
case 281: /* type_specifier_nonarray: I32VEC3 */
-#line 2106 "MachineIndependent/glslang.y"
+#line 2099 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
-#line 8176 "MachineIndependent/glslang_tab.cpp"
+#line 8169 "MachineIndependent/glslang_tab.cpp"
break;
case 282: /* type_specifier_nonarray: I32VEC4 */
-#line 2112 "MachineIndependent/glslang.y"
+#line 2105 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 8187 "MachineIndependent/glslang_tab.cpp"
+#line 8180 "MachineIndependent/glslang_tab.cpp"
break;
case 283: /* type_specifier_nonarray: I64VEC2 */
-#line 2118 "MachineIndependent/glslang.y"
+#line 2111 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(2);
}
-#line 8198 "MachineIndependent/glslang_tab.cpp"
+#line 8191 "MachineIndependent/glslang_tab.cpp"
break;
case 284: /* type_specifier_nonarray: I64VEC3 */
-#line 2124 "MachineIndependent/glslang.y"
+#line 2117 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(3);
}
-#line 8209 "MachineIndependent/glslang_tab.cpp"
+#line 8202 "MachineIndependent/glslang_tab.cpp"
break;
case 285: /* type_specifier_nonarray: I64VEC4 */
-#line 2130 "MachineIndependent/glslang.y"
+#line 2123 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(4);
}
-#line 8220 "MachineIndependent/glslang_tab.cpp"
+#line 8213 "MachineIndependent/glslang_tab.cpp"
break;
case 286: /* type_specifier_nonarray: U8VEC2 */
-#line 2136 "MachineIndependent/glslang.y"
+#line 2129 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(2);
}
-#line 8231 "MachineIndependent/glslang_tab.cpp"
+#line 8224 "MachineIndependent/glslang_tab.cpp"
break;
case 287: /* type_specifier_nonarray: U8VEC3 */
-#line 2142 "MachineIndependent/glslang.y"
+#line 2135 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(3);
}
-#line 8242 "MachineIndependent/glslang_tab.cpp"
+#line 8235 "MachineIndependent/glslang_tab.cpp"
break;
case 288: /* type_specifier_nonarray: U8VEC4 */
-#line 2148 "MachineIndependent/glslang.y"
+#line 2141 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(4);
}
-#line 8253 "MachineIndependent/glslang_tab.cpp"
+#line 8246 "MachineIndependent/glslang_tab.cpp"
break;
case 289: /* type_specifier_nonarray: U16VEC2 */
-#line 2154 "MachineIndependent/glslang.y"
+#line 2147 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
(yyval.interm.type).setVector(2);
}
-#line 8264 "MachineIndependent/glslang_tab.cpp"
+#line 8257 "MachineIndependent/glslang_tab.cpp"
break;
case 290: /* type_specifier_nonarray: U16VEC3 */
-#line 2160 "MachineIndependent/glslang.y"
+#line 2153 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
(yyval.interm.type).setVector(3);
}
-#line 8275 "MachineIndependent/glslang_tab.cpp"
+#line 8268 "MachineIndependent/glslang_tab.cpp"
break;
case 291: /* type_specifier_nonarray: U16VEC4 */
-#line 2166 "MachineIndependent/glslang.y"
+#line 2159 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
(yyval.interm.type).setVector(4);
}
-#line 8286 "MachineIndependent/glslang_tab.cpp"
+#line 8279 "MachineIndependent/glslang_tab.cpp"
break;
case 292: /* type_specifier_nonarray: U32VEC2 */
-#line 2172 "MachineIndependent/glslang.y"
+#line 2165 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
-#line 8297 "MachineIndependent/glslang_tab.cpp"
+#line 8290 "MachineIndependent/glslang_tab.cpp"
break;
case 293: /* type_specifier_nonarray: U32VEC3 */
-#line 2178 "MachineIndependent/glslang.y"
+#line 2171 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
-#line 8308 "MachineIndependent/glslang_tab.cpp"
+#line 8301 "MachineIndependent/glslang_tab.cpp"
break;
case 294: /* type_specifier_nonarray: U32VEC4 */
-#line 2184 "MachineIndependent/glslang.y"
+#line 2177 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
-#line 8319 "MachineIndependent/glslang_tab.cpp"
+#line 8312 "MachineIndependent/glslang_tab.cpp"
break;
case 295: /* type_specifier_nonarray: U64VEC2 */
-#line 2190 "MachineIndependent/glslang.y"
+#line 2183 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(2);
}
-#line 8330 "MachineIndependent/glslang_tab.cpp"
+#line 8323 "MachineIndependent/glslang_tab.cpp"
break;
case 296: /* type_specifier_nonarray: U64VEC3 */
-#line 2196 "MachineIndependent/glslang.y"
+#line 2189 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(3);
}
-#line 8341 "MachineIndependent/glslang_tab.cpp"
+#line 8334 "MachineIndependent/glslang_tab.cpp"
break;
case 297: /* type_specifier_nonarray: U64VEC4 */
-#line 2202 "MachineIndependent/glslang.y"
+#line 2195 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(4);
}
-#line 8352 "MachineIndependent/glslang_tab.cpp"
+#line 8345 "MachineIndependent/glslang_tab.cpp"
break;
case 298: /* type_specifier_nonarray: DMAT2 */
-#line 2208 "MachineIndependent/glslang.y"
+#line 2201 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8361,11 +8354,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8365 "MachineIndependent/glslang_tab.cpp"
+#line 8358 "MachineIndependent/glslang_tab.cpp"
break;
case 299: /* type_specifier_nonarray: DMAT3 */
-#line 2216 "MachineIndependent/glslang.y"
+#line 2209 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8374,11 +8367,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8378 "MachineIndependent/glslang_tab.cpp"
+#line 8371 "MachineIndependent/glslang_tab.cpp"
break;
case 300: /* type_specifier_nonarray: DMAT4 */
-#line 2224 "MachineIndependent/glslang.y"
+#line 2217 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8387,11 +8380,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8391 "MachineIndependent/glslang_tab.cpp"
+#line 8384 "MachineIndependent/glslang_tab.cpp"
break;
case 301: /* type_specifier_nonarray: DMAT2X2 */
-#line 2232 "MachineIndependent/glslang.y"
+#line 2225 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8400,11 +8393,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8404 "MachineIndependent/glslang_tab.cpp"
+#line 8397 "MachineIndependent/glslang_tab.cpp"
break;
case 302: /* type_specifier_nonarray: DMAT2X3 */
-#line 2240 "MachineIndependent/glslang.y"
+#line 2233 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8413,11 +8406,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8417 "MachineIndependent/glslang_tab.cpp"
+#line 8410 "MachineIndependent/glslang_tab.cpp"
break;
case 303: /* type_specifier_nonarray: DMAT2X4 */
-#line 2248 "MachineIndependent/glslang.y"
+#line 2241 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8426,11 +8419,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8430 "MachineIndependent/glslang_tab.cpp"
+#line 8423 "MachineIndependent/glslang_tab.cpp"
break;
case 304: /* type_specifier_nonarray: DMAT3X2 */
-#line 2256 "MachineIndependent/glslang.y"
+#line 2249 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8439,11 +8432,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8443 "MachineIndependent/glslang_tab.cpp"
+#line 8436 "MachineIndependent/glslang_tab.cpp"
break;
case 305: /* type_specifier_nonarray: DMAT3X3 */
-#line 2264 "MachineIndependent/glslang.y"
+#line 2257 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8452,11 +8445,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8456 "MachineIndependent/glslang_tab.cpp"
+#line 8449 "MachineIndependent/glslang_tab.cpp"
break;
case 306: /* type_specifier_nonarray: DMAT3X4 */
-#line 2272 "MachineIndependent/glslang.y"
+#line 2265 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8465,11 +8458,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8469 "MachineIndependent/glslang_tab.cpp"
+#line 8462 "MachineIndependent/glslang_tab.cpp"
break;
case 307: /* type_specifier_nonarray: DMAT4X2 */
-#line 2280 "MachineIndependent/glslang.y"
+#line 2273 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8478,11 +8471,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8482 "MachineIndependent/glslang_tab.cpp"
+#line 8475 "MachineIndependent/glslang_tab.cpp"
break;
case 308: /* type_specifier_nonarray: DMAT4X3 */
-#line 2288 "MachineIndependent/glslang.y"
+#line 2281 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8491,11 +8484,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8495 "MachineIndependent/glslang_tab.cpp"
+#line 8488 "MachineIndependent/glslang_tab.cpp"
break;
case 309: /* type_specifier_nonarray: DMAT4X4 */
-#line 2296 "MachineIndependent/glslang.y"
+#line 2289 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8504,2261 +8497,2261 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8508 "MachineIndependent/glslang_tab.cpp"
+#line 8501 "MachineIndependent/glslang_tab.cpp"
break;
case 310: /* type_specifier_nonarray: F16MAT2 */
-#line 2304 "MachineIndependent/glslang.y"
+#line 2297 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8519 "MachineIndependent/glslang_tab.cpp"
+#line 8512 "MachineIndependent/glslang_tab.cpp"
break;
case 311: /* type_specifier_nonarray: F16MAT3 */
-#line 2310 "MachineIndependent/glslang.y"
+#line 2303 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8530 "MachineIndependent/glslang_tab.cpp"
+#line 8523 "MachineIndependent/glslang_tab.cpp"
break;
case 312: /* type_specifier_nonarray: F16MAT4 */
-#line 2316 "MachineIndependent/glslang.y"
+#line 2309 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8541 "MachineIndependent/glslang_tab.cpp"
+#line 8534 "MachineIndependent/glslang_tab.cpp"
break;
case 313: /* type_specifier_nonarray: F16MAT2X2 */
-#line 2322 "MachineIndependent/glslang.y"
+#line 2315 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8552 "MachineIndependent/glslang_tab.cpp"
+#line 8545 "MachineIndependent/glslang_tab.cpp"
break;
case 314: /* type_specifier_nonarray: F16MAT2X3 */
-#line 2328 "MachineIndependent/glslang.y"
+#line 2321 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8563 "MachineIndependent/glslang_tab.cpp"
+#line 8556 "MachineIndependent/glslang_tab.cpp"
break;
case 315: /* type_specifier_nonarray: F16MAT2X4 */
-#line 2334 "MachineIndependent/glslang.y"
+#line 2327 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8574 "MachineIndependent/glslang_tab.cpp"
+#line 8567 "MachineIndependent/glslang_tab.cpp"
break;
case 316: /* type_specifier_nonarray: F16MAT3X2 */
-#line 2340 "MachineIndependent/glslang.y"
+#line 2333 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8585 "MachineIndependent/glslang_tab.cpp"
+#line 8578 "MachineIndependent/glslang_tab.cpp"
break;
case 317: /* type_specifier_nonarray: F16MAT3X3 */
-#line 2346 "MachineIndependent/glslang.y"
+#line 2339 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8596 "MachineIndependent/glslang_tab.cpp"
+#line 8589 "MachineIndependent/glslang_tab.cpp"
break;
case 318: /* type_specifier_nonarray: F16MAT3X4 */
-#line 2352 "MachineIndependent/glslang.y"
+#line 2345 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8607 "MachineIndependent/glslang_tab.cpp"
+#line 8600 "MachineIndependent/glslang_tab.cpp"
break;
case 319: /* type_specifier_nonarray: F16MAT4X2 */
-#line 2358 "MachineIndependent/glslang.y"
+#line 2351 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8618 "MachineIndependent/glslang_tab.cpp"
+#line 8611 "MachineIndependent/glslang_tab.cpp"
break;
case 320: /* type_specifier_nonarray: F16MAT4X3 */
-#line 2364 "MachineIndependent/glslang.y"
+#line 2357 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8629 "MachineIndependent/glslang_tab.cpp"
+#line 8622 "MachineIndependent/glslang_tab.cpp"
break;
case 321: /* type_specifier_nonarray: F16MAT4X4 */
-#line 2370 "MachineIndependent/glslang.y"
+#line 2363 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8640 "MachineIndependent/glslang_tab.cpp"
+#line 8633 "MachineIndependent/glslang_tab.cpp"
break;
case 322: /* type_specifier_nonarray: F32MAT2 */
-#line 2376 "MachineIndependent/glslang.y"
+#line 2369 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8651 "MachineIndependent/glslang_tab.cpp"
+#line 8644 "MachineIndependent/glslang_tab.cpp"
break;
case 323: /* type_specifier_nonarray: F32MAT3 */
-#line 2382 "MachineIndependent/glslang.y"
+#line 2375 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8662 "MachineIndependent/glslang_tab.cpp"
+#line 8655 "MachineIndependent/glslang_tab.cpp"
break;
case 324: /* type_specifier_nonarray: F32MAT4 */
-#line 2388 "MachineIndependent/glslang.y"
+#line 2381 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8673 "MachineIndependent/glslang_tab.cpp"
+#line 8666 "MachineIndependent/glslang_tab.cpp"
break;
case 325: /* type_specifier_nonarray: F32MAT2X2 */
-#line 2394 "MachineIndependent/glslang.y"
+#line 2387 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8684 "MachineIndependent/glslang_tab.cpp"
+#line 8677 "MachineIndependent/glslang_tab.cpp"
break;
case 326: /* type_specifier_nonarray: F32MAT2X3 */
-#line 2400 "MachineIndependent/glslang.y"
+#line 2393 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8695 "MachineIndependent/glslang_tab.cpp"
+#line 8688 "MachineIndependent/glslang_tab.cpp"
break;
case 327: /* type_specifier_nonarray: F32MAT2X4 */
-#line 2406 "MachineIndependent/glslang.y"
+#line 2399 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8706 "MachineIndependent/glslang_tab.cpp"
+#line 8699 "MachineIndependent/glslang_tab.cpp"
break;
case 328: /* type_specifier_nonarray: F32MAT3X2 */
-#line 2412 "MachineIndependent/glslang.y"
+#line 2405 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8717 "MachineIndependent/glslang_tab.cpp"
+#line 8710 "MachineIndependent/glslang_tab.cpp"
break;
case 329: /* type_specifier_nonarray: F32MAT3X3 */
-#line 2418 "MachineIndependent/glslang.y"
+#line 2411 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8728 "MachineIndependent/glslang_tab.cpp"
+#line 8721 "MachineIndependent/glslang_tab.cpp"
break;
case 330: /* type_specifier_nonarray: F32MAT3X4 */
-#line 2424 "MachineIndependent/glslang.y"
+#line 2417 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8739 "MachineIndependent/glslang_tab.cpp"
+#line 8732 "MachineIndependent/glslang_tab.cpp"
break;
case 331: /* type_specifier_nonarray: F32MAT4X2 */
-#line 2430 "MachineIndependent/glslang.y"
+#line 2423 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8750 "MachineIndependent/glslang_tab.cpp"
+#line 8743 "MachineIndependent/glslang_tab.cpp"
break;
case 332: /* type_specifier_nonarray: F32MAT4X3 */
-#line 2436 "MachineIndependent/glslang.y"
+#line 2429 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8761 "MachineIndependent/glslang_tab.cpp"
+#line 8754 "MachineIndependent/glslang_tab.cpp"
break;
case 333: /* type_specifier_nonarray: F32MAT4X4 */
-#line 2442 "MachineIndependent/glslang.y"
+#line 2435 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8772 "MachineIndependent/glslang_tab.cpp"
+#line 8765 "MachineIndependent/glslang_tab.cpp"
break;
case 334: /* type_specifier_nonarray: F64MAT2 */
-#line 2448 "MachineIndependent/glslang.y"
+#line 2441 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8783 "MachineIndependent/glslang_tab.cpp"
+#line 8776 "MachineIndependent/glslang_tab.cpp"
break;
case 335: /* type_specifier_nonarray: F64MAT3 */
-#line 2454 "MachineIndependent/glslang.y"
+#line 2447 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8794 "MachineIndependent/glslang_tab.cpp"
+#line 8787 "MachineIndependent/glslang_tab.cpp"
break;
case 336: /* type_specifier_nonarray: F64MAT4 */
-#line 2460 "MachineIndependent/glslang.y"
+#line 2453 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8805 "MachineIndependent/glslang_tab.cpp"
+#line 8798 "MachineIndependent/glslang_tab.cpp"
break;
case 337: /* type_specifier_nonarray: F64MAT2X2 */
-#line 2466 "MachineIndependent/glslang.y"
+#line 2459 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8816 "MachineIndependent/glslang_tab.cpp"
+#line 8809 "MachineIndependent/glslang_tab.cpp"
break;
case 338: /* type_specifier_nonarray: F64MAT2X3 */
-#line 2472 "MachineIndependent/glslang.y"
+#line 2465 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8827 "MachineIndependent/glslang_tab.cpp"
+#line 8820 "MachineIndependent/glslang_tab.cpp"
break;
case 339: /* type_specifier_nonarray: F64MAT2X4 */
-#line 2478 "MachineIndependent/glslang.y"
+#line 2471 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8838 "MachineIndependent/glslang_tab.cpp"
+#line 8831 "MachineIndependent/glslang_tab.cpp"
break;
case 340: /* type_specifier_nonarray: F64MAT3X2 */
-#line 2484 "MachineIndependent/glslang.y"
+#line 2477 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8849 "MachineIndependent/glslang_tab.cpp"
+#line 8842 "MachineIndependent/glslang_tab.cpp"
break;
case 341: /* type_specifier_nonarray: F64MAT3X3 */
-#line 2490 "MachineIndependent/glslang.y"
+#line 2483 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8860 "MachineIndependent/glslang_tab.cpp"
+#line 8853 "MachineIndependent/glslang_tab.cpp"
break;
case 342: /* type_specifier_nonarray: F64MAT3X4 */
-#line 2496 "MachineIndependent/glslang.y"
+#line 2489 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8871 "MachineIndependent/glslang_tab.cpp"
+#line 8864 "MachineIndependent/glslang_tab.cpp"
break;
case 343: /* type_specifier_nonarray: F64MAT4X2 */
-#line 2502 "MachineIndependent/glslang.y"
+#line 2495 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8882 "MachineIndependent/glslang_tab.cpp"
+#line 8875 "MachineIndependent/glslang_tab.cpp"
break;
case 344: /* type_specifier_nonarray: F64MAT4X3 */
-#line 2508 "MachineIndependent/glslang.y"
+#line 2501 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8893 "MachineIndependent/glslang_tab.cpp"
+#line 8886 "MachineIndependent/glslang_tab.cpp"
break;
case 345: /* type_specifier_nonarray: F64MAT4X4 */
-#line 2514 "MachineIndependent/glslang.y"
+#line 2507 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8904 "MachineIndependent/glslang_tab.cpp"
+#line 8897 "MachineIndependent/glslang_tab.cpp"
break;
case 346: /* type_specifier_nonarray: ACCSTRUCTNV */
-#line 2520 "MachineIndependent/glslang.y"
+#line 2513 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStruct;
}
-#line 8913 "MachineIndependent/glslang_tab.cpp"
+#line 8906 "MachineIndependent/glslang_tab.cpp"
break;
case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */
-#line 2524 "MachineIndependent/glslang.y"
+#line 2517 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStruct;
}
-#line 8922 "MachineIndependent/glslang_tab.cpp"
+#line 8915 "MachineIndependent/glslang_tab.cpp"
break;
case 348: /* type_specifier_nonarray: RAYQUERYEXT */
-#line 2528 "MachineIndependent/glslang.y"
+#line 2521 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtRayQuery;
}
-#line 8931 "MachineIndependent/glslang_tab.cpp"
+#line 8924 "MachineIndependent/glslang_tab.cpp"
break;
case 349: /* type_specifier_nonarray: ATOMIC_UINT */
-#line 2532 "MachineIndependent/glslang.y"
+#line 2525 "MachineIndependent/glslang.y"
{
parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAtomicUint;
}
-#line 8941 "MachineIndependent/glslang_tab.cpp"
+#line 8934 "MachineIndependent/glslang_tab.cpp"
break;
case 350: /* type_specifier_nonarray: SAMPLER1D */
-#line 2537 "MachineIndependent/glslang.y"
+#line 2530 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 8951 "MachineIndependent/glslang_tab.cpp"
+#line 8944 "MachineIndependent/glslang_tab.cpp"
break;
case 351: /* type_specifier_nonarray: SAMPLER2D */
-#line 2542 "MachineIndependent/glslang.y"
+#line 2535 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 8961 "MachineIndependent/glslang_tab.cpp"
+#line 8954 "MachineIndependent/glslang_tab.cpp"
break;
case 352: /* type_specifier_nonarray: SAMPLER3D */
-#line 2547 "MachineIndependent/glslang.y"
+#line 2540 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 8971 "MachineIndependent/glslang_tab.cpp"
+#line 8964 "MachineIndependent/glslang_tab.cpp"
break;
case 353: /* type_specifier_nonarray: SAMPLERCUBE */
-#line 2552 "MachineIndependent/glslang.y"
+#line 2545 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 8981 "MachineIndependent/glslang_tab.cpp"
+#line 8974 "MachineIndependent/glslang_tab.cpp"
break;
case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */
-#line 2557 "MachineIndependent/glslang.y"
+#line 2550 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
}
-#line 8991 "MachineIndependent/glslang_tab.cpp"
+#line 8984 "MachineIndependent/glslang_tab.cpp"
break;
case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */
-#line 2562 "MachineIndependent/glslang.y"
+#line 2555 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
}
-#line 9001 "MachineIndependent/glslang_tab.cpp"
+#line 8994 "MachineIndependent/glslang_tab.cpp"
break;
case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */
-#line 2567 "MachineIndependent/glslang.y"
+#line 2560 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
}
-#line 9011 "MachineIndependent/glslang_tab.cpp"
+#line 9004 "MachineIndependent/glslang_tab.cpp"
break;
case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */
-#line 2572 "MachineIndependent/glslang.y"
+#line 2565 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
}
-#line 9021 "MachineIndependent/glslang_tab.cpp"
+#line 9014 "MachineIndependent/glslang_tab.cpp"
break;
case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */
-#line 2577 "MachineIndependent/glslang.y"
+#line 2570 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
}
-#line 9031 "MachineIndependent/glslang_tab.cpp"
+#line 9024 "MachineIndependent/glslang_tab.cpp"
break;
case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */
-#line 2582 "MachineIndependent/glslang.y"
+#line 2575 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
}
-#line 9041 "MachineIndependent/glslang_tab.cpp"
+#line 9034 "MachineIndependent/glslang_tab.cpp"
break;
case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */
-#line 2587 "MachineIndependent/glslang.y"
+#line 2580 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
}
-#line 9051 "MachineIndependent/glslang_tab.cpp"
+#line 9044 "MachineIndependent/glslang_tab.cpp"
break;
case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */
-#line 2592 "MachineIndependent/glslang.y"
+#line 2585 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
}
-#line 9061 "MachineIndependent/glslang_tab.cpp"
+#line 9054 "MachineIndependent/glslang_tab.cpp"
break;
case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */
-#line 2597 "MachineIndependent/glslang.y"
+#line 2590 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
}
-#line 9071 "MachineIndependent/glslang_tab.cpp"
+#line 9064 "MachineIndependent/glslang_tab.cpp"
break;
case 363: /* type_specifier_nonarray: F16SAMPLER1D */
-#line 2602 "MachineIndependent/glslang.y"
+#line 2595 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
}
-#line 9082 "MachineIndependent/glslang_tab.cpp"
+#line 9075 "MachineIndependent/glslang_tab.cpp"
break;
case 364: /* type_specifier_nonarray: F16SAMPLER2D */
-#line 2608 "MachineIndependent/glslang.y"
+#line 2601 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
}
-#line 9093 "MachineIndependent/glslang_tab.cpp"
+#line 9086 "MachineIndependent/glslang_tab.cpp"
break;
case 365: /* type_specifier_nonarray: F16SAMPLER3D */
-#line 2614 "MachineIndependent/glslang.y"
+#line 2607 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
}
-#line 9104 "MachineIndependent/glslang_tab.cpp"
+#line 9097 "MachineIndependent/glslang_tab.cpp"
break;
case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */
-#line 2620 "MachineIndependent/glslang.y"
+#line 2613 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
}
-#line 9115 "MachineIndependent/glslang_tab.cpp"
+#line 9108 "MachineIndependent/glslang_tab.cpp"
break;
case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */
-#line 2626 "MachineIndependent/glslang.y"
+#line 2619 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
}
-#line 9126 "MachineIndependent/glslang_tab.cpp"
+#line 9119 "MachineIndependent/glslang_tab.cpp"
break;
case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */
-#line 2632 "MachineIndependent/glslang.y"
+#line 2625 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
}
-#line 9137 "MachineIndependent/glslang_tab.cpp"
+#line 9130 "MachineIndependent/glslang_tab.cpp"
break;
case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */
-#line 2638 "MachineIndependent/glslang.y"
+#line 2631 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
}
-#line 9148 "MachineIndependent/glslang_tab.cpp"
+#line 9141 "MachineIndependent/glslang_tab.cpp"
break;
case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */
-#line 2644 "MachineIndependent/glslang.y"
+#line 2637 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
}
-#line 9159 "MachineIndependent/glslang_tab.cpp"
+#line 9152 "MachineIndependent/glslang_tab.cpp"
break;
case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */
-#line 2650 "MachineIndependent/glslang.y"
+#line 2643 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
}
-#line 9170 "MachineIndependent/glslang_tab.cpp"
+#line 9163 "MachineIndependent/glslang_tab.cpp"
break;
case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */
-#line 2656 "MachineIndependent/glslang.y"
+#line 2649 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
}
-#line 9181 "MachineIndependent/glslang_tab.cpp"
+#line 9174 "MachineIndependent/glslang_tab.cpp"
break;
case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */
-#line 2662 "MachineIndependent/glslang.y"
+#line 2655 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
}
-#line 9192 "MachineIndependent/glslang_tab.cpp"
+#line 9185 "MachineIndependent/glslang_tab.cpp"
break;
case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */
-#line 2668 "MachineIndependent/glslang.y"
+#line 2661 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
}
-#line 9203 "MachineIndependent/glslang_tab.cpp"
+#line 9196 "MachineIndependent/glslang_tab.cpp"
break;
case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */
-#line 2674 "MachineIndependent/glslang.y"
+#line 2667 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
}
-#line 9214 "MachineIndependent/glslang_tab.cpp"
+#line 9207 "MachineIndependent/glslang_tab.cpp"
break;
case 376: /* type_specifier_nonarray: ISAMPLER1D */
-#line 2680 "MachineIndependent/glslang.y"
+#line 2673 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 9224 "MachineIndependent/glslang_tab.cpp"
+#line 9217 "MachineIndependent/glslang_tab.cpp"
break;
case 377: /* type_specifier_nonarray: ISAMPLER2D */
-#line 2685 "MachineIndependent/glslang.y"
+#line 2678 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 9234 "MachineIndependent/glslang_tab.cpp"
+#line 9227 "MachineIndependent/glslang_tab.cpp"
break;
case 378: /* type_specifier_nonarray: ISAMPLER3D */
-#line 2690 "MachineIndependent/glslang.y"
+#line 2683 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 9244 "MachineIndependent/glslang_tab.cpp"
+#line 9237 "MachineIndependent/glslang_tab.cpp"
break;
case 379: /* type_specifier_nonarray: ISAMPLERCUBE */
-#line 2695 "MachineIndependent/glslang.y"
+#line 2688 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 9254 "MachineIndependent/glslang_tab.cpp"
+#line 9247 "MachineIndependent/glslang_tab.cpp"
break;
case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */
-#line 2700 "MachineIndependent/glslang.y"
+#line 2693 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
}
-#line 9264 "MachineIndependent/glslang_tab.cpp"
+#line 9257 "MachineIndependent/glslang_tab.cpp"
break;
case 381: /* type_specifier_nonarray: USAMPLER2D */
-#line 2705 "MachineIndependent/glslang.y"
+#line 2698 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 9274 "MachineIndependent/glslang_tab.cpp"
+#line 9267 "MachineIndependent/glslang_tab.cpp"
break;
case 382: /* type_specifier_nonarray: USAMPLER3D */
-#line 2710 "MachineIndependent/glslang.y"
+#line 2703 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 9284 "MachineIndependent/glslang_tab.cpp"
+#line 9277 "MachineIndependent/glslang_tab.cpp"
break;
case 383: /* type_specifier_nonarray: USAMPLERCUBE */
-#line 2715 "MachineIndependent/glslang.y"
+#line 2708 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 9294 "MachineIndependent/glslang_tab.cpp"
+#line 9287 "MachineIndependent/glslang_tab.cpp"
break;
case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */
-#line 2720 "MachineIndependent/glslang.y"
+#line 2713 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
}
-#line 9304 "MachineIndependent/glslang_tab.cpp"
+#line 9297 "MachineIndependent/glslang_tab.cpp"
break;
case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */
-#line 2725 "MachineIndependent/glslang.y"
+#line 2718 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
}
-#line 9314 "MachineIndependent/glslang_tab.cpp"
+#line 9307 "MachineIndependent/glslang_tab.cpp"
break;
case 386: /* type_specifier_nonarray: USAMPLER1D */
-#line 2730 "MachineIndependent/glslang.y"
+#line 2723 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
-#line 9324 "MachineIndependent/glslang_tab.cpp"
+#line 9317 "MachineIndependent/glslang_tab.cpp"
break;
case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */
-#line 2735 "MachineIndependent/glslang.y"
+#line 2728 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
}
-#line 9334 "MachineIndependent/glslang_tab.cpp"
+#line 9327 "MachineIndependent/glslang_tab.cpp"
break;
case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */
-#line 2740 "MachineIndependent/glslang.y"
+#line 2733 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
}
-#line 9344 "MachineIndependent/glslang_tab.cpp"
+#line 9337 "MachineIndependent/glslang_tab.cpp"
break;
case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */
-#line 2745 "MachineIndependent/glslang.y"
+#line 2738 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
}
-#line 9354 "MachineIndependent/glslang_tab.cpp"
+#line 9347 "MachineIndependent/glslang_tab.cpp"
break;
case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */
-#line 2750 "MachineIndependent/glslang.y"
+#line 2743 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
}
-#line 9364 "MachineIndependent/glslang_tab.cpp"
+#line 9357 "MachineIndependent/glslang_tab.cpp"
break;
case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */
-#line 2755 "MachineIndependent/glslang.y"
+#line 2748 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
}
-#line 9374 "MachineIndependent/glslang_tab.cpp"
+#line 9367 "MachineIndependent/glslang_tab.cpp"
break;
case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */
-#line 2760 "MachineIndependent/glslang.y"
+#line 2753 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
}
-#line 9384 "MachineIndependent/glslang_tab.cpp"
+#line 9377 "MachineIndependent/glslang_tab.cpp"
break;
case 393: /* type_specifier_nonarray: TEXTURE2D */
-#line 2765 "MachineIndependent/glslang.y"
+#line 2758 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
-#line 9394 "MachineIndependent/glslang_tab.cpp"
+#line 9387 "MachineIndependent/glslang_tab.cpp"
break;
case 394: /* type_specifier_nonarray: TEXTURE3D */
-#line 2770 "MachineIndependent/glslang.y"
+#line 2763 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
-#line 9404 "MachineIndependent/glslang_tab.cpp"
+#line 9397 "MachineIndependent/glslang_tab.cpp"
break;
case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */
-#line 2775 "MachineIndependent/glslang.y"
+#line 2768 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
}
-#line 9414 "MachineIndependent/glslang_tab.cpp"
+#line 9407 "MachineIndependent/glslang_tab.cpp"
break;
case 396: /* type_specifier_nonarray: TEXTURECUBE */
-#line 2780 "MachineIndependent/glslang.y"
+#line 2773 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
-#line 9424 "MachineIndependent/glslang_tab.cpp"
+#line 9417 "MachineIndependent/glslang_tab.cpp"
break;
case 397: /* type_specifier_nonarray: ITEXTURE2D */
-#line 2785 "MachineIndependent/glslang.y"
+#line 2778 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
-#line 9434 "MachineIndependent/glslang_tab.cpp"
+#line 9427 "MachineIndependent/glslang_tab.cpp"
break;
case 398: /* type_specifier_nonarray: ITEXTURE3D */
-#line 2790 "MachineIndependent/glslang.y"
+#line 2783 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
-#line 9444 "MachineIndependent/glslang_tab.cpp"
+#line 9437 "MachineIndependent/glslang_tab.cpp"
break;
case 399: /* type_specifier_nonarray: ITEXTURECUBE */
-#line 2795 "MachineIndependent/glslang.y"
+#line 2788 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
-#line 9454 "MachineIndependent/glslang_tab.cpp"
+#line 9447 "MachineIndependent/glslang_tab.cpp"
break;
case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */
-#line 2800 "MachineIndependent/glslang.y"
+#line 2793 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
}
-#line 9464 "MachineIndependent/glslang_tab.cpp"
+#line 9457 "MachineIndependent/glslang_tab.cpp"
break;
case 401: /* type_specifier_nonarray: UTEXTURE2D */
-#line 2805 "MachineIndependent/glslang.y"
+#line 2798 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
-#line 9474 "MachineIndependent/glslang_tab.cpp"
+#line 9467 "MachineIndependent/glslang_tab.cpp"
break;
case 402: /* type_specifier_nonarray: UTEXTURE3D */
-#line 2810 "MachineIndependent/glslang.y"
+#line 2803 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
-#line 9484 "MachineIndependent/glslang_tab.cpp"
+#line 9477 "MachineIndependent/glslang_tab.cpp"
break;
case 403: /* type_specifier_nonarray: UTEXTURECUBE */
-#line 2815 "MachineIndependent/glslang.y"
+#line 2808 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
-#line 9494 "MachineIndependent/glslang_tab.cpp"
+#line 9487 "MachineIndependent/glslang_tab.cpp"
break;
case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */
-#line 2820 "MachineIndependent/glslang.y"
+#line 2813 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
}
-#line 9504 "MachineIndependent/glslang_tab.cpp"
+#line 9497 "MachineIndependent/glslang_tab.cpp"
break;
case 405: /* type_specifier_nonarray: SAMPLER */
-#line 2825 "MachineIndependent/glslang.y"
+#line 2818 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
-#line 9514 "MachineIndependent/glslang_tab.cpp"
+#line 9507 "MachineIndependent/glslang_tab.cpp"
break;
case 406: /* type_specifier_nonarray: SAMPLERSHADOW */
-#line 2830 "MachineIndependent/glslang.y"
+#line 2823 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
-#line 9524 "MachineIndependent/glslang_tab.cpp"
+#line 9517 "MachineIndependent/glslang_tab.cpp"
break;
case 407: /* type_specifier_nonarray: SAMPLER2DRECT */
-#line 2835 "MachineIndependent/glslang.y"
+#line 2828 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 9534 "MachineIndependent/glslang_tab.cpp"
+#line 9527 "MachineIndependent/glslang_tab.cpp"
break;
case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */
-#line 2840 "MachineIndependent/glslang.y"
+#line 2833 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
}
-#line 9544 "MachineIndependent/glslang_tab.cpp"
+#line 9537 "MachineIndependent/glslang_tab.cpp"
break;
case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */
-#line 2845 "MachineIndependent/glslang.y"
+#line 2838 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
}
-#line 9555 "MachineIndependent/glslang_tab.cpp"
+#line 9548 "MachineIndependent/glslang_tab.cpp"
break;
case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */
-#line 2851 "MachineIndependent/glslang.y"
+#line 2844 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
}
-#line 9566 "MachineIndependent/glslang_tab.cpp"
+#line 9559 "MachineIndependent/glslang_tab.cpp"
break;
case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */
-#line 2857 "MachineIndependent/glslang.y"
+#line 2850 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 9576 "MachineIndependent/glslang_tab.cpp"
+#line 9569 "MachineIndependent/glslang_tab.cpp"
break;
case 412: /* type_specifier_nonarray: USAMPLER2DRECT */
-#line 2862 "MachineIndependent/glslang.y"
+#line 2855 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 9586 "MachineIndependent/glslang_tab.cpp"
+#line 9579 "MachineIndependent/glslang_tab.cpp"
break;
case 413: /* type_specifier_nonarray: SAMPLERBUFFER */
-#line 2867 "MachineIndependent/glslang.y"
+#line 2860 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 9596 "MachineIndependent/glslang_tab.cpp"
+#line 9589 "MachineIndependent/glslang_tab.cpp"
break;
case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */
-#line 2872 "MachineIndependent/glslang.y"
+#line 2865 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
}
-#line 9607 "MachineIndependent/glslang_tab.cpp"
+#line 9600 "MachineIndependent/glslang_tab.cpp"
break;
case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */
-#line 2878 "MachineIndependent/glslang.y"
+#line 2871 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 9617 "MachineIndependent/glslang_tab.cpp"
+#line 9610 "MachineIndependent/glslang_tab.cpp"
break;
case 416: /* type_specifier_nonarray: USAMPLERBUFFER */
-#line 2883 "MachineIndependent/glslang.y"
+#line 2876 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 9627 "MachineIndependent/glslang_tab.cpp"
+#line 9620 "MachineIndependent/glslang_tab.cpp"
break;
case 417: /* type_specifier_nonarray: SAMPLER2DMS */
-#line 2888 "MachineIndependent/glslang.y"
+#line 2881 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
}
-#line 9637 "MachineIndependent/glslang_tab.cpp"
+#line 9630 "MachineIndependent/glslang_tab.cpp"
break;
case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */
-#line 2893 "MachineIndependent/glslang.y"
+#line 2886 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
}
-#line 9648 "MachineIndependent/glslang_tab.cpp"
+#line 9641 "MachineIndependent/glslang_tab.cpp"
break;
case 419: /* type_specifier_nonarray: ISAMPLER2DMS */
-#line 2899 "MachineIndependent/glslang.y"
+#line 2892 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
}
-#line 9658 "MachineIndependent/glslang_tab.cpp"
+#line 9651 "MachineIndependent/glslang_tab.cpp"
break;
case 420: /* type_specifier_nonarray: USAMPLER2DMS */
-#line 2904 "MachineIndependent/glslang.y"
+#line 2897 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
}
-#line 9668 "MachineIndependent/glslang_tab.cpp"
+#line 9661 "MachineIndependent/glslang_tab.cpp"
break;
case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */
-#line 2909 "MachineIndependent/glslang.y"
+#line 2902 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
}
-#line 9678 "MachineIndependent/glslang_tab.cpp"
+#line 9671 "MachineIndependent/glslang_tab.cpp"
break;
case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */
-#line 2914 "MachineIndependent/glslang.y"
+#line 2907 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
}
-#line 9689 "MachineIndependent/glslang_tab.cpp"
+#line 9682 "MachineIndependent/glslang_tab.cpp"
break;
case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */
-#line 2920 "MachineIndependent/glslang.y"
+#line 2913 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
}
-#line 9699 "MachineIndependent/glslang_tab.cpp"
+#line 9692 "MachineIndependent/glslang_tab.cpp"
break;
case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */
-#line 2925 "MachineIndependent/glslang.y"
+#line 2918 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
}
-#line 9709 "MachineIndependent/glslang_tab.cpp"
+#line 9702 "MachineIndependent/glslang_tab.cpp"
break;
case 425: /* type_specifier_nonarray: TEXTURE1D */
-#line 2930 "MachineIndependent/glslang.y"
+#line 2923 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 9719 "MachineIndependent/glslang_tab.cpp"
+#line 9712 "MachineIndependent/glslang_tab.cpp"
break;
case 426: /* type_specifier_nonarray: F16TEXTURE1D */
-#line 2935 "MachineIndependent/glslang.y"
+#line 2928 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
}
-#line 9730 "MachineIndependent/glslang_tab.cpp"
+#line 9723 "MachineIndependent/glslang_tab.cpp"
break;
case 427: /* type_specifier_nonarray: F16TEXTURE2D */
-#line 2941 "MachineIndependent/glslang.y"
+#line 2934 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
}
-#line 9741 "MachineIndependent/glslang_tab.cpp"
+#line 9734 "MachineIndependent/glslang_tab.cpp"
break;
case 428: /* type_specifier_nonarray: F16TEXTURE3D */
-#line 2947 "MachineIndependent/glslang.y"
+#line 2940 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
}
-#line 9752 "MachineIndependent/glslang_tab.cpp"
+#line 9745 "MachineIndependent/glslang_tab.cpp"
break;
case 429: /* type_specifier_nonarray: F16TEXTURECUBE */
-#line 2953 "MachineIndependent/glslang.y"
+#line 2946 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
}
-#line 9763 "MachineIndependent/glslang_tab.cpp"
+#line 9756 "MachineIndependent/glslang_tab.cpp"
break;
case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */
-#line 2959 "MachineIndependent/glslang.y"
+#line 2952 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
}
-#line 9773 "MachineIndependent/glslang_tab.cpp"
+#line 9766 "MachineIndependent/glslang_tab.cpp"
break;
case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */
-#line 2964 "MachineIndependent/glslang.y"
+#line 2957 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
}
-#line 9784 "MachineIndependent/glslang_tab.cpp"
+#line 9777 "MachineIndependent/glslang_tab.cpp"
break;
case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */
-#line 2970 "MachineIndependent/glslang.y"
+#line 2963 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
}
-#line 9795 "MachineIndependent/glslang_tab.cpp"
+#line 9788 "MachineIndependent/glslang_tab.cpp"
break;
case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */
-#line 2976 "MachineIndependent/glslang.y"
+#line 2969 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
}
-#line 9806 "MachineIndependent/glslang_tab.cpp"
+#line 9799 "MachineIndependent/glslang_tab.cpp"
break;
case 434: /* type_specifier_nonarray: ITEXTURE1D */
-#line 2982 "MachineIndependent/glslang.y"
+#line 2975 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 9816 "MachineIndependent/glslang_tab.cpp"
+#line 9809 "MachineIndependent/glslang_tab.cpp"
break;
case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */
-#line 2987 "MachineIndependent/glslang.y"
+#line 2980 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
}
-#line 9826 "MachineIndependent/glslang_tab.cpp"
+#line 9819 "MachineIndependent/glslang_tab.cpp"
break;
case 436: /* type_specifier_nonarray: UTEXTURE1D */
-#line 2992 "MachineIndependent/glslang.y"
+#line 2985 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 9836 "MachineIndependent/glslang_tab.cpp"
+#line 9829 "MachineIndependent/glslang_tab.cpp"
break;
case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */
-#line 2997 "MachineIndependent/glslang.y"
+#line 2990 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
}
-#line 9846 "MachineIndependent/glslang_tab.cpp"
+#line 9839 "MachineIndependent/glslang_tab.cpp"
break;
case 438: /* type_specifier_nonarray: TEXTURE2DRECT */
-#line 3002 "MachineIndependent/glslang.y"
+#line 2995 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 9856 "MachineIndependent/glslang_tab.cpp"
+#line 9849 "MachineIndependent/glslang_tab.cpp"
break;
case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */
-#line 3007 "MachineIndependent/glslang.y"
+#line 3000 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
}
-#line 9867 "MachineIndependent/glslang_tab.cpp"
+#line 9860 "MachineIndependent/glslang_tab.cpp"
break;
case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */
-#line 3013 "MachineIndependent/glslang.y"
+#line 3006 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 9877 "MachineIndependent/glslang_tab.cpp"
+#line 9870 "MachineIndependent/glslang_tab.cpp"
break;
case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */
-#line 3018 "MachineIndependent/glslang.y"
+#line 3011 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 9887 "MachineIndependent/glslang_tab.cpp"
+#line 9880 "MachineIndependent/glslang_tab.cpp"
break;
case 442: /* type_specifier_nonarray: TEXTUREBUFFER */
-#line 3023 "MachineIndependent/glslang.y"
+#line 3016 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 9897 "MachineIndependent/glslang_tab.cpp"
+#line 9890 "MachineIndependent/glslang_tab.cpp"
break;
case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */
-#line 3028 "MachineIndependent/glslang.y"
+#line 3021 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
}
-#line 9908 "MachineIndependent/glslang_tab.cpp"
+#line 9901 "MachineIndependent/glslang_tab.cpp"
break;
case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */
-#line 3034 "MachineIndependent/glslang.y"
+#line 3027 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 9918 "MachineIndependent/glslang_tab.cpp"
+#line 9911 "MachineIndependent/glslang_tab.cpp"
break;
case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */
-#line 3039 "MachineIndependent/glslang.y"
+#line 3032 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 9928 "MachineIndependent/glslang_tab.cpp"
+#line 9921 "MachineIndependent/glslang_tab.cpp"
break;
case 446: /* type_specifier_nonarray: TEXTURE2DMS */
-#line 3044 "MachineIndependent/glslang.y"
+#line 3037 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
}
-#line 9938 "MachineIndependent/glslang_tab.cpp"
+#line 9931 "MachineIndependent/glslang_tab.cpp"
break;
case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */
-#line 3049 "MachineIndependent/glslang.y"
+#line 3042 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
}
-#line 9949 "MachineIndependent/glslang_tab.cpp"
+#line 9942 "MachineIndependent/glslang_tab.cpp"
break;
case 448: /* type_specifier_nonarray: ITEXTURE2DMS */
-#line 3055 "MachineIndependent/glslang.y"
+#line 3048 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
}
-#line 9959 "MachineIndependent/glslang_tab.cpp"
+#line 9952 "MachineIndependent/glslang_tab.cpp"
break;
case 449: /* type_specifier_nonarray: UTEXTURE2DMS */
-#line 3060 "MachineIndependent/glslang.y"
+#line 3053 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
}
-#line 9969 "MachineIndependent/glslang_tab.cpp"
+#line 9962 "MachineIndependent/glslang_tab.cpp"
break;
case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */
-#line 3065 "MachineIndependent/glslang.y"
+#line 3058 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
}
-#line 9979 "MachineIndependent/glslang_tab.cpp"
+#line 9972 "MachineIndependent/glslang_tab.cpp"
break;
case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */
-#line 3070 "MachineIndependent/glslang.y"
+#line 3063 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
}
-#line 9990 "MachineIndependent/glslang_tab.cpp"
+#line 9983 "MachineIndependent/glslang_tab.cpp"
break;
case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */
-#line 3076 "MachineIndependent/glslang.y"
+#line 3069 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
}
-#line 10000 "MachineIndependent/glslang_tab.cpp"
+#line 9993 "MachineIndependent/glslang_tab.cpp"
break;
case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */
-#line 3081 "MachineIndependent/glslang.y"
+#line 3074 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
}
-#line 10010 "MachineIndependent/glslang_tab.cpp"
+#line 10003 "MachineIndependent/glslang_tab.cpp"
break;
case 454: /* type_specifier_nonarray: IMAGE1D */
-#line 3086 "MachineIndependent/glslang.y"
+#line 3079 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 10020 "MachineIndependent/glslang_tab.cpp"
+#line 10013 "MachineIndependent/glslang_tab.cpp"
break;
case 455: /* type_specifier_nonarray: F16IMAGE1D */
-#line 3091 "MachineIndependent/glslang.y"
+#line 3084 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
}
-#line 10031 "MachineIndependent/glslang_tab.cpp"
+#line 10024 "MachineIndependent/glslang_tab.cpp"
break;
case 456: /* type_specifier_nonarray: IIMAGE1D */
-#line 3097 "MachineIndependent/glslang.y"
+#line 3090 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 10041 "MachineIndependent/glslang_tab.cpp"
+#line 10034 "MachineIndependent/glslang_tab.cpp"
break;
case 457: /* type_specifier_nonarray: UIMAGE1D */
-#line 3102 "MachineIndependent/glslang.y"
+#line 3095 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 10051 "MachineIndependent/glslang_tab.cpp"
+#line 10044 "MachineIndependent/glslang_tab.cpp"
break;
case 458: /* type_specifier_nonarray: IMAGE2D */
-#line 3107 "MachineIndependent/glslang.y"
+#line 3100 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 10061 "MachineIndependent/glslang_tab.cpp"
+#line 10054 "MachineIndependent/glslang_tab.cpp"
break;
case 459: /* type_specifier_nonarray: F16IMAGE2D */
-#line 3112 "MachineIndependent/glslang.y"
+#line 3105 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
}
-#line 10072 "MachineIndependent/glslang_tab.cpp"
+#line 10065 "MachineIndependent/glslang_tab.cpp"
break;
case 460: /* type_specifier_nonarray: IIMAGE2D */
-#line 3118 "MachineIndependent/glslang.y"
+#line 3111 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 10082 "MachineIndependent/glslang_tab.cpp"
+#line 10075 "MachineIndependent/glslang_tab.cpp"
break;
case 461: /* type_specifier_nonarray: UIMAGE2D */
-#line 3123 "MachineIndependent/glslang.y"
+#line 3116 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 10092 "MachineIndependent/glslang_tab.cpp"
+#line 10085 "MachineIndependent/glslang_tab.cpp"
break;
case 462: /* type_specifier_nonarray: IMAGE3D */
-#line 3128 "MachineIndependent/glslang.y"
+#line 3121 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 10102 "MachineIndependent/glslang_tab.cpp"
+#line 10095 "MachineIndependent/glslang_tab.cpp"
break;
case 463: /* type_specifier_nonarray: F16IMAGE3D */
-#line 3133 "MachineIndependent/glslang.y"
+#line 3126 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
}
-#line 10113 "MachineIndependent/glslang_tab.cpp"
+#line 10106 "MachineIndependent/glslang_tab.cpp"
break;
case 464: /* type_specifier_nonarray: IIMAGE3D */
-#line 3139 "MachineIndependent/glslang.y"
+#line 3132 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 10123 "MachineIndependent/glslang_tab.cpp"
+#line 10116 "MachineIndependent/glslang_tab.cpp"
break;
case 465: /* type_specifier_nonarray: UIMAGE3D */
-#line 3144 "MachineIndependent/glslang.y"
+#line 3137 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 10133 "MachineIndependent/glslang_tab.cpp"
+#line 10126 "MachineIndependent/glslang_tab.cpp"
break;
case 466: /* type_specifier_nonarray: IMAGE2DRECT */
-#line 3149 "MachineIndependent/glslang.y"
+#line 3142 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 10143 "MachineIndependent/glslang_tab.cpp"
+#line 10136 "MachineIndependent/glslang_tab.cpp"
break;
case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */
-#line 3154 "MachineIndependent/glslang.y"
+#line 3147 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
}
-#line 10154 "MachineIndependent/glslang_tab.cpp"
+#line 10147 "MachineIndependent/glslang_tab.cpp"
break;
case 468: /* type_specifier_nonarray: IIMAGE2DRECT */
-#line 3160 "MachineIndependent/glslang.y"
+#line 3153 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 10164 "MachineIndependent/glslang_tab.cpp"
+#line 10157 "MachineIndependent/glslang_tab.cpp"
break;
case 469: /* type_specifier_nonarray: UIMAGE2DRECT */
-#line 3165 "MachineIndependent/glslang.y"
+#line 3158 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 10174 "MachineIndependent/glslang_tab.cpp"
+#line 10167 "MachineIndependent/glslang_tab.cpp"
break;
case 470: /* type_specifier_nonarray: IMAGECUBE */
-#line 3170 "MachineIndependent/glslang.y"
+#line 3163 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 10184 "MachineIndependent/glslang_tab.cpp"
+#line 10177 "MachineIndependent/glslang_tab.cpp"
break;
case 471: /* type_specifier_nonarray: F16IMAGECUBE */
-#line 3175 "MachineIndependent/glslang.y"
+#line 3168 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
}
-#line 10195 "MachineIndependent/glslang_tab.cpp"
+#line 10188 "MachineIndependent/glslang_tab.cpp"
break;
case 472: /* type_specifier_nonarray: IIMAGECUBE */
-#line 3181 "MachineIndependent/glslang.y"
+#line 3174 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 10205 "MachineIndependent/glslang_tab.cpp"
+#line 10198 "MachineIndependent/glslang_tab.cpp"
break;
case 473: /* type_specifier_nonarray: UIMAGECUBE */
-#line 3186 "MachineIndependent/glslang.y"
+#line 3179 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 10215 "MachineIndependent/glslang_tab.cpp"
+#line 10208 "MachineIndependent/glslang_tab.cpp"
break;
case 474: /* type_specifier_nonarray: IMAGEBUFFER */
-#line 3191 "MachineIndependent/glslang.y"
+#line 3184 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 10225 "MachineIndependent/glslang_tab.cpp"
+#line 10218 "MachineIndependent/glslang_tab.cpp"
break;
case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */
-#line 3196 "MachineIndependent/glslang.y"
+#line 3189 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
}
-#line 10236 "MachineIndependent/glslang_tab.cpp"
+#line 10229 "MachineIndependent/glslang_tab.cpp"
break;
case 476: /* type_specifier_nonarray: IIMAGEBUFFER */
-#line 3202 "MachineIndependent/glslang.y"
+#line 3195 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 10246 "MachineIndependent/glslang_tab.cpp"
+#line 10239 "MachineIndependent/glslang_tab.cpp"
break;
case 477: /* type_specifier_nonarray: UIMAGEBUFFER */
-#line 3207 "MachineIndependent/glslang.y"
+#line 3200 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 10256 "MachineIndependent/glslang_tab.cpp"
+#line 10249 "MachineIndependent/glslang_tab.cpp"
break;
case 478: /* type_specifier_nonarray: IMAGE1DARRAY */
-#line 3212 "MachineIndependent/glslang.y"
+#line 3205 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
}
-#line 10266 "MachineIndependent/glslang_tab.cpp"
+#line 10259 "MachineIndependent/glslang_tab.cpp"
break;
case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */
-#line 3217 "MachineIndependent/glslang.y"
+#line 3210 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
}
-#line 10277 "MachineIndependent/glslang_tab.cpp"
+#line 10270 "MachineIndependent/glslang_tab.cpp"
break;
case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */
-#line 3223 "MachineIndependent/glslang.y"
+#line 3216 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
}
-#line 10287 "MachineIndependent/glslang_tab.cpp"
+#line 10280 "MachineIndependent/glslang_tab.cpp"
break;
case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */
-#line 3228 "MachineIndependent/glslang.y"
+#line 3221 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
}
-#line 10297 "MachineIndependent/glslang_tab.cpp"
+#line 10290 "MachineIndependent/glslang_tab.cpp"
break;
case 482: /* type_specifier_nonarray: IMAGE2DARRAY */
-#line 3233 "MachineIndependent/glslang.y"
+#line 3226 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
}
-#line 10307 "MachineIndependent/glslang_tab.cpp"
+#line 10300 "MachineIndependent/glslang_tab.cpp"
break;
case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */
-#line 3238 "MachineIndependent/glslang.y"
+#line 3231 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
}
-#line 10318 "MachineIndependent/glslang_tab.cpp"
+#line 10311 "MachineIndependent/glslang_tab.cpp"
break;
case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */
-#line 3244 "MachineIndependent/glslang.y"
+#line 3237 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
}
-#line 10328 "MachineIndependent/glslang_tab.cpp"
+#line 10321 "MachineIndependent/glslang_tab.cpp"
break;
case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */
-#line 3249 "MachineIndependent/glslang.y"
+#line 3242 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
}
-#line 10338 "MachineIndependent/glslang_tab.cpp"
+#line 10331 "MachineIndependent/glslang_tab.cpp"
break;
case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */
-#line 3254 "MachineIndependent/glslang.y"
+#line 3247 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
}
-#line 10348 "MachineIndependent/glslang_tab.cpp"
+#line 10341 "MachineIndependent/glslang_tab.cpp"
break;
case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */
-#line 3259 "MachineIndependent/glslang.y"
+#line 3252 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
}
-#line 10359 "MachineIndependent/glslang_tab.cpp"
+#line 10352 "MachineIndependent/glslang_tab.cpp"
break;
case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */
-#line 3265 "MachineIndependent/glslang.y"
+#line 3258 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
}
-#line 10369 "MachineIndependent/glslang_tab.cpp"
+#line 10362 "MachineIndependent/glslang_tab.cpp"
break;
case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */
-#line 3270 "MachineIndependent/glslang.y"
+#line 3263 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
}
-#line 10379 "MachineIndependent/glslang_tab.cpp"
+#line 10372 "MachineIndependent/glslang_tab.cpp"
break;
case 490: /* type_specifier_nonarray: IMAGE2DMS */
-#line 3275 "MachineIndependent/glslang.y"
+#line 3268 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
}
-#line 10389 "MachineIndependent/glslang_tab.cpp"
+#line 10382 "MachineIndependent/glslang_tab.cpp"
break;
case 491: /* type_specifier_nonarray: F16IMAGE2DMS */
-#line 3280 "MachineIndependent/glslang.y"
+#line 3273 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
}
-#line 10400 "MachineIndependent/glslang_tab.cpp"
+#line 10393 "MachineIndependent/glslang_tab.cpp"
break;
case 492: /* type_specifier_nonarray: IIMAGE2DMS */
-#line 3286 "MachineIndependent/glslang.y"
+#line 3279 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
}
-#line 10410 "MachineIndependent/glslang_tab.cpp"
+#line 10403 "MachineIndependent/glslang_tab.cpp"
break;
case 493: /* type_specifier_nonarray: UIMAGE2DMS */
-#line 3291 "MachineIndependent/glslang.y"
+#line 3284 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
}
-#line 10420 "MachineIndependent/glslang_tab.cpp"
+#line 10413 "MachineIndependent/glslang_tab.cpp"
break;
case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */
-#line 3296 "MachineIndependent/glslang.y"
+#line 3289 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
}
-#line 10430 "MachineIndependent/glslang_tab.cpp"
+#line 10423 "MachineIndependent/glslang_tab.cpp"
break;
case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */
-#line 3301 "MachineIndependent/glslang.y"
+#line 3294 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
}
-#line 10441 "MachineIndependent/glslang_tab.cpp"
+#line 10434 "MachineIndependent/glslang_tab.cpp"
break;
case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */
-#line 3307 "MachineIndependent/glslang.y"
+#line 3300 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
}
-#line 10451 "MachineIndependent/glslang_tab.cpp"
+#line 10444 "MachineIndependent/glslang_tab.cpp"
break;
case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */
-#line 3312 "MachineIndependent/glslang.y"
+#line 3305 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
}
-#line 10461 "MachineIndependent/glslang_tab.cpp"
+#line 10454 "MachineIndependent/glslang_tab.cpp"
break;
case 498: /* type_specifier_nonarray: I64IMAGE1D */
-#line 3317 "MachineIndependent/glslang.y"
+#line 3310 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd1D);
}
-#line 10471 "MachineIndependent/glslang_tab.cpp"
+#line 10464 "MachineIndependent/glslang_tab.cpp"
break;
case 499: /* type_specifier_nonarray: U64IMAGE1D */
-#line 3322 "MachineIndependent/glslang.y"
+#line 3315 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd1D);
}
-#line 10481 "MachineIndependent/glslang_tab.cpp"
+#line 10474 "MachineIndependent/glslang_tab.cpp"
break;
case 500: /* type_specifier_nonarray: I64IMAGE2D */
-#line 3327 "MachineIndependent/glslang.y"
+#line 3320 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D);
}
-#line 10491 "MachineIndependent/glslang_tab.cpp"
+#line 10484 "MachineIndependent/glslang_tab.cpp"
break;
case 501: /* type_specifier_nonarray: U64IMAGE2D */
-#line 3332 "MachineIndependent/glslang.y"
+#line 3325 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D);
}
-#line 10501 "MachineIndependent/glslang_tab.cpp"
+#line 10494 "MachineIndependent/glslang_tab.cpp"
break;
case 502: /* type_specifier_nonarray: I64IMAGE3D */
-#line 3337 "MachineIndependent/glslang.y"
+#line 3330 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd3D);
}
-#line 10511 "MachineIndependent/glslang_tab.cpp"
+#line 10504 "MachineIndependent/glslang_tab.cpp"
break;
case 503: /* type_specifier_nonarray: U64IMAGE3D */
-#line 3342 "MachineIndependent/glslang.y"
+#line 3335 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd3D);
}
-#line 10521 "MachineIndependent/glslang_tab.cpp"
+#line 10514 "MachineIndependent/glslang_tab.cpp"
break;
case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */
-#line 3347 "MachineIndependent/glslang.y"
+#line 3340 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdRect);
}
-#line 10531 "MachineIndependent/glslang_tab.cpp"
+#line 10524 "MachineIndependent/glslang_tab.cpp"
break;
case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */
-#line 3352 "MachineIndependent/glslang.y"
+#line 3345 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdRect);
}
-#line 10541 "MachineIndependent/glslang_tab.cpp"
+#line 10534 "MachineIndependent/glslang_tab.cpp"
break;
case 506: /* type_specifier_nonarray: I64IMAGECUBE */
-#line 3357 "MachineIndependent/glslang.y"
+#line 3350 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdCube);
}
-#line 10551 "MachineIndependent/glslang_tab.cpp"
+#line 10544 "MachineIndependent/glslang_tab.cpp"
break;
case 507: /* type_specifier_nonarray: U64IMAGECUBE */
-#line 3362 "MachineIndependent/glslang.y"
+#line 3355 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdCube);
}
-#line 10561 "MachineIndependent/glslang_tab.cpp"
+#line 10554 "MachineIndependent/glslang_tab.cpp"
break;
case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */
-#line 3367 "MachineIndependent/glslang.y"
+#line 3360 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer);
}
-#line 10571 "MachineIndependent/glslang_tab.cpp"
+#line 10564 "MachineIndependent/glslang_tab.cpp"
break;
case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */
-#line 3372 "MachineIndependent/glslang.y"
+#line 3365 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer);
}
-#line 10581 "MachineIndependent/glslang_tab.cpp"
+#line 10574 "MachineIndependent/glslang_tab.cpp"
break;
case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */
-#line 3377 "MachineIndependent/glslang.y"
+#line 3370 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true);
}
-#line 10591 "MachineIndependent/glslang_tab.cpp"
+#line 10584 "MachineIndependent/glslang_tab.cpp"
break;
case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */
-#line 3382 "MachineIndependent/glslang.y"
+#line 3375 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true);
}
-#line 10601 "MachineIndependent/glslang_tab.cpp"
+#line 10594 "MachineIndependent/glslang_tab.cpp"
break;
case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */
-#line 3387 "MachineIndependent/glslang.y"
+#line 3380 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true);
}
-#line 10611 "MachineIndependent/glslang_tab.cpp"
+#line 10604 "MachineIndependent/glslang_tab.cpp"
break;
case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */
-#line 3392 "MachineIndependent/glslang.y"
+#line 3385 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true);
}
-#line 10621 "MachineIndependent/glslang_tab.cpp"
+#line 10614 "MachineIndependent/glslang_tab.cpp"
break;
case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */
-#line 3397 "MachineIndependent/glslang.y"
+#line 3390 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true);
}
-#line 10631 "MachineIndependent/glslang_tab.cpp"
+#line 10624 "MachineIndependent/glslang_tab.cpp"
break;
case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */
-#line 3402 "MachineIndependent/glslang.y"
+#line 3395 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true);
}
-#line 10641 "MachineIndependent/glslang_tab.cpp"
+#line 10634 "MachineIndependent/glslang_tab.cpp"
break;
case 516: /* type_specifier_nonarray: I64IMAGE2DMS */
-#line 3407 "MachineIndependent/glslang.y"
+#line 3400 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true);
}
-#line 10651 "MachineIndependent/glslang_tab.cpp"
+#line 10644 "MachineIndependent/glslang_tab.cpp"
break;
case 517: /* type_specifier_nonarray: U64IMAGE2DMS */
-#line 3412 "MachineIndependent/glslang.y"
+#line 3405 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true);
}
-#line 10661 "MachineIndependent/glslang_tab.cpp"
+#line 10654 "MachineIndependent/glslang_tab.cpp"
break;
case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */
-#line 3417 "MachineIndependent/glslang.y"
+#line 3410 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true);
}
-#line 10671 "MachineIndependent/glslang_tab.cpp"
+#line 10664 "MachineIndependent/glslang_tab.cpp"
break;
case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */
-#line 3422 "MachineIndependent/glslang.y"
+#line 3415 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true);
}
-#line 10681 "MachineIndependent/glslang_tab.cpp"
+#line 10674 "MachineIndependent/glslang_tab.cpp"
break;
case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */
-#line 3427 "MachineIndependent/glslang.y"
+#line 3420 "MachineIndependent/glslang.y"
{ // GL_OES_EGL_image_external
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.external = true;
}
-#line 10692 "MachineIndependent/glslang_tab.cpp"
+#line 10685 "MachineIndependent/glslang_tab.cpp"
break;
case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */
-#line 3433 "MachineIndependent/glslang.y"
+#line 3426 "MachineIndependent/glslang.y"
{ // GL_EXT_YUV_target
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.yuv = true;
}
-#line 10703 "MachineIndependent/glslang_tab.cpp"
+#line 10696 "MachineIndependent/glslang_tab.cpp"
break;
case 522: /* type_specifier_nonarray: ATTACHMENTEXT */
-#line 3439 "MachineIndependent/glslang.y"
+#line 3432 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setAttachmentEXT(EbtFloat);
}
-#line 10714 "MachineIndependent/glslang_tab.cpp"
+#line 10707 "MachineIndependent/glslang_tab.cpp"
break;
case 523: /* type_specifier_nonarray: IATTACHMENTEXT */
-#line 3445 "MachineIndependent/glslang.y"
+#line 3438 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setAttachmentEXT(EbtInt);
}
-#line 10725 "MachineIndependent/glslang_tab.cpp"
+#line 10718 "MachineIndependent/glslang_tab.cpp"
break;
case 524: /* type_specifier_nonarray: UATTACHMENTEXT */
-#line 3451 "MachineIndependent/glslang.y"
+#line 3444 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setAttachmentEXT(EbtUint);
}
-#line 10736 "MachineIndependent/glslang_tab.cpp"
+#line 10729 "MachineIndependent/glslang_tab.cpp"
break;
case 525: /* type_specifier_nonarray: SUBPASSINPUT */
-#line 3457 "MachineIndependent/glslang.y"
+#line 3450 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat);
}
-#line 10747 "MachineIndependent/glslang_tab.cpp"
+#line 10740 "MachineIndependent/glslang_tab.cpp"
break;
case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */
-#line 3463 "MachineIndependent/glslang.y"
+#line 3456 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat, true);
}
-#line 10758 "MachineIndependent/glslang_tab.cpp"
+#line 10751 "MachineIndependent/glslang_tab.cpp"
break;
case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */
-#line 3469 "MachineIndependent/glslang.y"
+#line 3462 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -10766,11 +10759,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16);
}
-#line 10770 "MachineIndependent/glslang_tab.cpp"
+#line 10763 "MachineIndependent/glslang_tab.cpp"
break;
case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */
-#line 3476 "MachineIndependent/glslang.y"
+#line 3469 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -10778,55 +10771,55 @@ yyreduce:
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
}
-#line 10782 "MachineIndependent/glslang_tab.cpp"
+#line 10775 "MachineIndependent/glslang_tab.cpp"
break;
case 529: /* type_specifier_nonarray: ISUBPASSINPUT */
-#line 3483 "MachineIndependent/glslang.y"
+#line 3476 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt);
}
-#line 10793 "MachineIndependent/glslang_tab.cpp"
+#line 10786 "MachineIndependent/glslang_tab.cpp"
break;
case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */
-#line 3489 "MachineIndependent/glslang.y"
+#line 3482 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt, true);
}
-#line 10804 "MachineIndependent/glslang_tab.cpp"
+#line 10797 "MachineIndependent/glslang_tab.cpp"
break;
case 531: /* type_specifier_nonarray: USUBPASSINPUT */
-#line 3495 "MachineIndependent/glslang.y"
+#line 3488 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint);
}
-#line 10815 "MachineIndependent/glslang_tab.cpp"
+#line 10808 "MachineIndependent/glslang_tab.cpp"
break;
case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */
-#line 3501 "MachineIndependent/glslang.y"
+#line 3494 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint, true);
}
-#line 10826 "MachineIndependent/glslang_tab.cpp"
+#line 10819 "MachineIndependent/glslang_tab.cpp"
break;
case 533: /* type_specifier_nonarray: FCOOPMATNV */
-#line 3507 "MachineIndependent/glslang.y"
+#line 3500 "MachineIndependent/glslang.y"
{
parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
@@ -10834,11 +10827,11 @@ yyreduce:
(yyval.interm.type).coopmatNV = true;
(yyval.interm.type).coopmatKHR = false;
}
-#line 10838 "MachineIndependent/glslang_tab.cpp"
+#line 10831 "MachineIndependent/glslang_tab.cpp"
break;
case 534: /* type_specifier_nonarray: ICOOPMATNV */
-#line 3514 "MachineIndependent/glslang.y"
+#line 3507 "MachineIndependent/glslang.y"
{
parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
@@ -10846,11 +10839,11 @@ yyreduce:
(yyval.interm.type).coopmatNV = true;
(yyval.interm.type).coopmatKHR = false;
}
-#line 10850 "MachineIndependent/glslang_tab.cpp"
+#line 10843 "MachineIndependent/glslang_tab.cpp"
break;
case 535: /* type_specifier_nonarray: UCOOPMATNV */
-#line 3521 "MachineIndependent/glslang.y"
+#line 3514 "MachineIndependent/glslang.y"
{
parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
@@ -10858,11 +10851,11 @@ yyreduce:
(yyval.interm.type).coopmatNV = true;
(yyval.interm.type).coopmatKHR = false;
}
-#line 10862 "MachineIndependent/glslang_tab.cpp"
+#line 10855 "MachineIndependent/glslang_tab.cpp"
break;
case 536: /* type_specifier_nonarray: COOPMAT */
-#line 3528 "MachineIndependent/glslang.y"
+#line 3521 "MachineIndependent/glslang.y"
{
parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
@@ -10870,39 +10863,39 @@ yyreduce:
(yyval.interm.type).coopmatNV = false;
(yyval.interm.type).coopmatKHR = true;
}
-#line 10874 "MachineIndependent/glslang_tab.cpp"
+#line 10867 "MachineIndependent/glslang_tab.cpp"
break;
case 537: /* type_specifier_nonarray: spirv_type_specifier */
-#line 3535 "MachineIndependent/glslang.y"
+#line 3528 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 10883 "MachineIndependent/glslang_tab.cpp"
+#line 10876 "MachineIndependent/glslang_tab.cpp"
break;
case 538: /* type_specifier_nonarray: HITOBJECTNV */
-#line 3539 "MachineIndependent/glslang.y"
+#line 3532 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtHitObjectNV;
}
-#line 10892 "MachineIndependent/glslang_tab.cpp"
+#line 10885 "MachineIndependent/glslang_tab.cpp"
break;
case 539: /* type_specifier_nonarray: struct_specifier */
-#line 3543 "MachineIndependent/glslang.y"
+#line 3536 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
}
-#line 10902 "MachineIndependent/glslang_tab.cpp"
+#line 10895 "MachineIndependent/glslang_tab.cpp"
break;
case 540: /* type_specifier_nonarray: TYPE_NAME */
-#line 3548 "MachineIndependent/glslang.y"
+#line 3541 "MachineIndependent/glslang.y"
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -10916,47 +10909,47 @@ yyreduce:
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 10920 "MachineIndependent/glslang_tab.cpp"
+#line 10913 "MachineIndependent/glslang_tab.cpp"
break;
case 541: /* precision_qualifier: HIGH_PRECISION */
-#line 3564 "MachineIndependent/glslang.y"
+#line 3557 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
}
-#line 10930 "MachineIndependent/glslang_tab.cpp"
+#line 10923 "MachineIndependent/glslang_tab.cpp"
break;
case 542: /* precision_qualifier: MEDIUM_PRECISION */
-#line 3569 "MachineIndependent/glslang.y"
+#line 3562 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
}
-#line 10940 "MachineIndependent/glslang_tab.cpp"
+#line 10933 "MachineIndependent/glslang_tab.cpp"
break;
case 543: /* precision_qualifier: LOW_PRECISION */
-#line 3574 "MachineIndependent/glslang.y"
+#line 3567 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
}
-#line 10950 "MachineIndependent/glslang_tab.cpp"
+#line 10943 "MachineIndependent/glslang_tab.cpp"
break;
case 544: /* $@3: %empty */
-#line 3582 "MachineIndependent/glslang.y"
+#line 3575 "MachineIndependent/glslang.y"
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 10956 "MachineIndependent/glslang_tab.cpp"
+#line 10949 "MachineIndependent/glslang_tab.cpp"
break;
case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */
-#line 3582 "MachineIndependent/glslang.y"
+#line 3575 "MachineIndependent/glslang.y"
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
@@ -10974,17 +10967,17 @@ yyreduce:
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 10978 "MachineIndependent/glslang_tab.cpp"
+#line 10971 "MachineIndependent/glslang_tab.cpp"
break;
case 546: /* $@4: %empty */
-#line 3599 "MachineIndependent/glslang.y"
+#line 3592 "MachineIndependent/glslang.y"
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 10984 "MachineIndependent/glslang_tab.cpp"
+#line 10977 "MachineIndependent/glslang_tab.cpp"
break;
case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */
-#line 3599 "MachineIndependent/glslang.y"
+#line 3592 "MachineIndependent/glslang.y"
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -10992,19 +10985,19 @@ yyreduce:
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 10996 "MachineIndependent/glslang_tab.cpp"
+#line 10989 "MachineIndependent/glslang_tab.cpp"
break;
case 548: /* struct_declaration_list: struct_declaration */
-#line 3609 "MachineIndependent/glslang.y"
+#line 3602 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 11004 "MachineIndependent/glslang_tab.cpp"
+#line 10997 "MachineIndependent/glslang_tab.cpp"
break;
case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */
-#line 3612 "MachineIndependent/glslang.y"
+#line 3605 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -11015,11 +11008,11 @@ yyreduce:
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 11019 "MachineIndependent/glslang_tab.cpp"
+#line 11012 "MachineIndependent/glslang_tab.cpp"
break;
case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */
-#line 3625 "MachineIndependent/glslang.y"
+#line 3618 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -11042,11 +11035,11 @@ yyreduce:
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 11046 "MachineIndependent/glslang_tab.cpp"
+#line 11039 "MachineIndependent/glslang_tab.cpp"
break;
case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */
-#line 3647 "MachineIndependent/glslang.y"
+#line 3640 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -11071,38 +11064,38 @@ yyreduce:
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 11075 "MachineIndependent/glslang_tab.cpp"
+#line 11068 "MachineIndependent/glslang_tab.cpp"
break;
case 552: /* struct_declarator_list: struct_declarator */
-#line 3674 "MachineIndependent/glslang.y"
+#line 3667 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 11084 "MachineIndependent/glslang_tab.cpp"
+#line 11077 "MachineIndependent/glslang_tab.cpp"
break;
case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */
-#line 3678 "MachineIndependent/glslang.y"
+#line 3671 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 11092 "MachineIndependent/glslang_tab.cpp"
+#line 11085 "MachineIndependent/glslang_tab.cpp"
break;
case 554: /* struct_declarator: IDENTIFIER */
-#line 3684 "MachineIndependent/glslang.y"
+#line 3677 "MachineIndependent/glslang.y"
{
(yyval.interm.typeLine).type = new TType(EbtVoid);
(yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
}
-#line 11102 "MachineIndependent/glslang_tab.cpp"
+#line 11095 "MachineIndependent/glslang_tab.cpp"
break;
case 555: /* struct_declarator: IDENTIFIER array_specifier */
-#line 3689 "MachineIndependent/glslang.y"
+#line 3682 "MachineIndependent/glslang.y"
{
parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
@@ -11111,246 +11104,246 @@ yyreduce:
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
}
-#line 11115 "MachineIndependent/glslang_tab.cpp"
+#line 11108 "MachineIndependent/glslang_tab.cpp"
break;
case 556: /* initializer: assignment_expression */
-#line 3700 "MachineIndependent/glslang.y"
+#line 3693 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 11123 "MachineIndependent/glslang_tab.cpp"
+#line 11116 "MachineIndependent/glslang_tab.cpp"
break;
case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */
-#line 3703 "MachineIndependent/glslang.y"
+#line 3696 "MachineIndependent/glslang.y"
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
}
-#line 11134 "MachineIndependent/glslang_tab.cpp"
+#line 11127 "MachineIndependent/glslang_tab.cpp"
break;
case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */
-#line 3709 "MachineIndependent/glslang.y"
+#line 3702 "MachineIndependent/glslang.y"
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 11145 "MachineIndependent/glslang_tab.cpp"
+#line 11138 "MachineIndependent/glslang_tab.cpp"
break;
case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */
-#line 3715 "MachineIndependent/glslang.y"
+#line 3708 "MachineIndependent/glslang.y"
{
const char* initFeature = "empty { } initializer";
parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
(yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc);
}
-#line 11156 "MachineIndependent/glslang_tab.cpp"
+#line 11149 "MachineIndependent/glslang_tab.cpp"
break;
case 560: /* initializer_list: initializer */
-#line 3724 "MachineIndependent/glslang.y"
+#line 3717 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
}
-#line 11164 "MachineIndependent/glslang_tab.cpp"
+#line 11157 "MachineIndependent/glslang_tab.cpp"
break;
case 561: /* initializer_list: initializer_list COMMA initializer */
-#line 3727 "MachineIndependent/glslang.y"
+#line 3720 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 11172 "MachineIndependent/glslang_tab.cpp"
+#line 11165 "MachineIndependent/glslang_tab.cpp"
break;
case 562: /* declaration_statement: declaration */
-#line 3733 "MachineIndependent/glslang.y"
+#line 3726 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11178 "MachineIndependent/glslang_tab.cpp"
+#line 11171 "MachineIndependent/glslang_tab.cpp"
break;
case 563: /* statement: compound_statement */
-#line 3737 "MachineIndependent/glslang.y"
+#line 3730 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11184 "MachineIndependent/glslang_tab.cpp"
+#line 11177 "MachineIndependent/glslang_tab.cpp"
break;
case 564: /* statement: simple_statement */
-#line 3738 "MachineIndependent/glslang.y"
+#line 3731 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11190 "MachineIndependent/glslang_tab.cpp"
+#line 11183 "MachineIndependent/glslang_tab.cpp"
break;
case 565: /* simple_statement: declaration_statement */
-#line 3744 "MachineIndependent/glslang.y"
+#line 3737 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11196 "MachineIndependent/glslang_tab.cpp"
+#line 11189 "MachineIndependent/glslang_tab.cpp"
break;
case 566: /* simple_statement: expression_statement */
-#line 3745 "MachineIndependent/glslang.y"
+#line 3738 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11202 "MachineIndependent/glslang_tab.cpp"
+#line 11195 "MachineIndependent/glslang_tab.cpp"
break;
case 567: /* simple_statement: selection_statement */
-#line 3746 "MachineIndependent/glslang.y"
+#line 3739 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11208 "MachineIndependent/glslang_tab.cpp"
+#line 11201 "MachineIndependent/glslang_tab.cpp"
break;
case 568: /* simple_statement: switch_statement */
-#line 3747 "MachineIndependent/glslang.y"
+#line 3740 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11214 "MachineIndependent/glslang_tab.cpp"
+#line 11207 "MachineIndependent/glslang_tab.cpp"
break;
case 569: /* simple_statement: case_label */
-#line 3748 "MachineIndependent/glslang.y"
+#line 3741 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11220 "MachineIndependent/glslang_tab.cpp"
+#line 11213 "MachineIndependent/glslang_tab.cpp"
break;
case 570: /* simple_statement: iteration_statement */
-#line 3749 "MachineIndependent/glslang.y"
+#line 3742 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11226 "MachineIndependent/glslang_tab.cpp"
+#line 11219 "MachineIndependent/glslang_tab.cpp"
break;
case 571: /* simple_statement: jump_statement */
-#line 3750 "MachineIndependent/glslang.y"
+#line 3743 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11232 "MachineIndependent/glslang_tab.cpp"
+#line 11225 "MachineIndependent/glslang_tab.cpp"
break;
case 572: /* simple_statement: demote_statement */
-#line 3751 "MachineIndependent/glslang.y"
+#line 3744 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11238 "MachineIndependent/glslang_tab.cpp"
+#line 11231 "MachineIndependent/glslang_tab.cpp"
break;
case 573: /* demote_statement: DEMOTE SEMICOLON */
-#line 3755 "MachineIndependent/glslang.y"
+#line 3748 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote");
parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc);
}
-#line 11248 "MachineIndependent/glslang_tab.cpp"
+#line 11241 "MachineIndependent/glslang_tab.cpp"
break;
case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */
-#line 3763 "MachineIndependent/glslang.y"
+#line 3756 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = 0; }
-#line 11254 "MachineIndependent/glslang_tab.cpp"
+#line 11247 "MachineIndependent/glslang_tab.cpp"
break;
case 575: /* $@5: %empty */
-#line 3764 "MachineIndependent/glslang.y"
+#line 3757 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 11263 "MachineIndependent/glslang_tab.cpp"
+#line 11256 "MachineIndependent/glslang_tab.cpp"
break;
case 576: /* $@6: %empty */
-#line 3768 "MachineIndependent/glslang.y"
+#line 3761 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 11272 "MachineIndependent/glslang_tab.cpp"
+#line 11265 "MachineIndependent/glslang_tab.cpp"
break;
case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */
-#line 3772 "MachineIndependent/glslang.y"
+#line 3765 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 11282 "MachineIndependent/glslang_tab.cpp"
+#line 11275 "MachineIndependent/glslang_tab.cpp"
break;
case 578: /* statement_no_new_scope: compound_statement_no_new_scope */
-#line 3780 "MachineIndependent/glslang.y"
+#line 3773 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11288 "MachineIndependent/glslang_tab.cpp"
+#line 11281 "MachineIndependent/glslang_tab.cpp"
break;
case 579: /* statement_no_new_scope: simple_statement */
-#line 3781 "MachineIndependent/glslang.y"
+#line 3774 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11294 "MachineIndependent/glslang_tab.cpp"
+#line 11287 "MachineIndependent/glslang_tab.cpp"
break;
case 580: /* $@7: %empty */
-#line 3785 "MachineIndependent/glslang.y"
+#line 3778 "MachineIndependent/glslang.y"
{
++parseContext.controlFlowNestingLevel;
}
-#line 11302 "MachineIndependent/glslang_tab.cpp"
+#line 11295 "MachineIndependent/glslang_tab.cpp"
break;
case 581: /* statement_scoped: $@7 compound_statement */
-#line 3788 "MachineIndependent/glslang.y"
+#line 3781 "MachineIndependent/glslang.y"
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11311 "MachineIndependent/glslang_tab.cpp"
+#line 11304 "MachineIndependent/glslang_tab.cpp"
break;
case 582: /* $@8: %empty */
-#line 3792 "MachineIndependent/glslang.y"
+#line 3785 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11321 "MachineIndependent/glslang_tab.cpp"
+#line 11314 "MachineIndependent/glslang_tab.cpp"
break;
case 583: /* statement_scoped: $@8 simple_statement */
-#line 3797 "MachineIndependent/glslang.y"
+#line 3790 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11332 "MachineIndependent/glslang_tab.cpp"
+#line 11325 "MachineIndependent/glslang_tab.cpp"
break;
case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */
-#line 3806 "MachineIndependent/glslang.y"
+#line 3799 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
}
-#line 11340 "MachineIndependent/glslang_tab.cpp"
+#line 11333 "MachineIndependent/glslang_tab.cpp"
break;
case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */
-#line 3809 "MachineIndependent/glslang.y"
+#line 3802 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
-#line 11350 "MachineIndependent/glslang_tab.cpp"
+#line 11343 "MachineIndependent/glslang_tab.cpp"
break;
case 586: /* statement_list: statement */
-#line 3817 "MachineIndependent/glslang.y"
+#line 3810 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -11359,11 +11352,11 @@ yyreduce:
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 11363 "MachineIndependent/glslang_tab.cpp"
+#line 11356 "MachineIndependent/glslang_tab.cpp"
break;
case 587: /* statement_list: statement_list statement */
-#line 3825 "MachineIndependent/glslang.y"
+#line 3818 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -11372,77 +11365,77 @@ yyreduce:
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 11376 "MachineIndependent/glslang_tab.cpp"
+#line 11369 "MachineIndependent/glslang_tab.cpp"
break;
case 588: /* expression_statement: SEMICOLON */
-#line 3836 "MachineIndependent/glslang.y"
+#line 3829 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = 0; }
-#line 11382 "MachineIndependent/glslang_tab.cpp"
+#line 11375 "MachineIndependent/glslang_tab.cpp"
break;
case 589: /* expression_statement: expression SEMICOLON */
-#line 3837 "MachineIndependent/glslang.y"
+#line 3830 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 11388 "MachineIndependent/glslang_tab.cpp"
+#line 11381 "MachineIndependent/glslang_tab.cpp"
break;
case 590: /* selection_statement: selection_statement_nonattributed */
-#line 3841 "MachineIndependent/glslang.y"
+#line 3834 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11396 "MachineIndependent/glslang_tab.cpp"
+#line 11389 "MachineIndependent/glslang_tab.cpp"
break;
case 591: /* selection_statement: attribute selection_statement_nonattributed */
-#line 3844 "MachineIndependent/glslang.y"
+#line 3837 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11406 "MachineIndependent/glslang_tab.cpp"
+#line 11399 "MachineIndependent/glslang_tab.cpp"
break;
case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */
-#line 3851 "MachineIndependent/glslang.y"
+#line 3844 "MachineIndependent/glslang.y"
{
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
-#line 11415 "MachineIndependent/glslang_tab.cpp"
+#line 11408 "MachineIndependent/glslang_tab.cpp"
break;
case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */
-#line 3858 "MachineIndependent/glslang.y"
+#line 3851 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 11424 "MachineIndependent/glslang_tab.cpp"
+#line 11417 "MachineIndependent/glslang_tab.cpp"
break;
case 594: /* selection_rest_statement: statement_scoped */
-#line 3862 "MachineIndependent/glslang.y"
+#line 3855 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 11433 "MachineIndependent/glslang_tab.cpp"
+#line 11426 "MachineIndependent/glslang_tab.cpp"
break;
case 595: /* condition: expression */
-#line 3870 "MachineIndependent/glslang.y"
+#line 3863 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 11442 "MachineIndependent/glslang_tab.cpp"
+#line 11435 "MachineIndependent/glslang_tab.cpp"
break;
case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */
-#line 3874 "MachineIndependent/glslang.y"
+#line 3867 "MachineIndependent/glslang.y"
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -11453,29 +11446,29 @@ yyreduce:
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 11457 "MachineIndependent/glslang_tab.cpp"
+#line 11450 "MachineIndependent/glslang_tab.cpp"
break;
case 597: /* switch_statement: switch_statement_nonattributed */
-#line 3887 "MachineIndependent/glslang.y"
+#line 3880 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11465 "MachineIndependent/glslang_tab.cpp"
+#line 11458 "MachineIndependent/glslang_tab.cpp"
break;
case 598: /* switch_statement: attribute switch_statement_nonattributed */
-#line 3890 "MachineIndependent/glslang.y"
+#line 3883 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11475 "MachineIndependent/glslang_tab.cpp"
+#line 11468 "MachineIndependent/glslang_tab.cpp"
break;
case 599: /* $@9: %empty */
-#line 3897 "MachineIndependent/glslang.y"
+#line 3890 "MachineIndependent/glslang.y"
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -11484,11 +11477,11 @@ yyreduce:
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 11488 "MachineIndependent/glslang_tab.cpp"
+#line 11481 "MachineIndependent/glslang_tab.cpp"
break;
case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */
-#line 3905 "MachineIndependent/glslang.y"
+#line 3898 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
@@ -11498,27 +11491,27 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11502 "MachineIndependent/glslang_tab.cpp"
+#line 11495 "MachineIndependent/glslang_tab.cpp"
break;
case 601: /* switch_statement_list: %empty */
-#line 3917 "MachineIndependent/glslang.y"
+#line 3910 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
}
-#line 11510 "MachineIndependent/glslang_tab.cpp"
+#line 11503 "MachineIndependent/glslang_tab.cpp"
break;
case 602: /* switch_statement_list: statement_list */
-#line 3920 "MachineIndependent/glslang.y"
+#line 3913 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11518 "MachineIndependent/glslang_tab.cpp"
+#line 11511 "MachineIndependent/glslang_tab.cpp"
break;
case 603: /* case_label: CASE expression COLON */
-#line 3926 "MachineIndependent/glslang.y"
+#line 3919 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -11531,11 +11524,11 @@ yyreduce:
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 11535 "MachineIndependent/glslang_tab.cpp"
+#line 11528 "MachineIndependent/glslang_tab.cpp"
break;
case 604: /* case_label: DEFAULT COLON */
-#line 3938 "MachineIndependent/glslang.y"
+#line 3931 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -11545,29 +11538,29 @@ yyreduce:
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 11549 "MachineIndependent/glslang_tab.cpp"
+#line 11542 "MachineIndependent/glslang_tab.cpp"
break;
case 605: /* iteration_statement: iteration_statement_nonattributed */
-#line 3950 "MachineIndependent/glslang.y"
+#line 3943 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11557 "MachineIndependent/glslang_tab.cpp"
+#line 11550 "MachineIndependent/glslang_tab.cpp"
break;
case 606: /* iteration_statement: attribute iteration_statement_nonattributed */
-#line 3953 "MachineIndependent/glslang.y"
+#line 3946 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11567 "MachineIndependent/glslang_tab.cpp"
+#line 11560 "MachineIndependent/glslang_tab.cpp"
break;
case 607: /* $@10: %empty */
-#line 3960 "MachineIndependent/glslang.y"
+#line 3953 "MachineIndependent/glslang.y"
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -11576,11 +11569,11 @@ yyreduce:
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11580 "MachineIndependent/glslang_tab.cpp"
+#line 11573 "MachineIndependent/glslang_tab.cpp"
break;
case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */
-#line 3968 "MachineIndependent/glslang.y"
+#line 3961 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -11588,22 +11581,22 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11592 "MachineIndependent/glslang_tab.cpp"
+#line 11585 "MachineIndependent/glslang_tab.cpp"
break;
case 609: /* $@11: %empty */
-#line 3975 "MachineIndependent/glslang.y"
+#line 3968 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11603 "MachineIndependent/glslang_tab.cpp"
+#line 11596 "MachineIndependent/glslang_tab.cpp"
break;
case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */
-#line 3981 "MachineIndependent/glslang.y"
+#line 3974 "MachineIndependent/glslang.y"
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -11616,22 +11609,22 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11620 "MachineIndependent/glslang_tab.cpp"
+#line 11613 "MachineIndependent/glslang_tab.cpp"
break;
case 611: /* $@12: %empty */
-#line 3993 "MachineIndependent/glslang.y"
+#line 3986 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11631 "MachineIndependent/glslang_tab.cpp"
+#line 11624 "MachineIndependent/glslang_tab.cpp"
break;
case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */
-#line 3999 "MachineIndependent/glslang.y"
+#line 3992 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -11644,81 +11637,81 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11648 "MachineIndependent/glslang_tab.cpp"
+#line 11641 "MachineIndependent/glslang_tab.cpp"
break;
case 613: /* for_init_statement: expression_statement */
-#line 4014 "MachineIndependent/glslang.y"
+#line 4007 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11656 "MachineIndependent/glslang_tab.cpp"
+#line 11649 "MachineIndependent/glslang_tab.cpp"
break;
case 614: /* for_init_statement: declaration_statement */
-#line 4017 "MachineIndependent/glslang.y"
+#line 4010 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11664 "MachineIndependent/glslang_tab.cpp"
+#line 11657 "MachineIndependent/glslang_tab.cpp"
break;
case 615: /* conditionopt: condition */
-#line 4023 "MachineIndependent/glslang.y"
+#line 4016 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 11672 "MachineIndependent/glslang_tab.cpp"
+#line 11665 "MachineIndependent/glslang_tab.cpp"
break;
case 616: /* conditionopt: %empty */
-#line 4026 "MachineIndependent/glslang.y"
+#line 4019 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 11680 "MachineIndependent/glslang_tab.cpp"
+#line 11673 "MachineIndependent/glslang_tab.cpp"
break;
case 617: /* for_rest_statement: conditionopt SEMICOLON */
-#line 4032 "MachineIndependent/glslang.y"
+#line 4025 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 11689 "MachineIndependent/glslang_tab.cpp"
+#line 11682 "MachineIndependent/glslang_tab.cpp"
break;
case 618: /* for_rest_statement: conditionopt SEMICOLON expression */
-#line 4036 "MachineIndependent/glslang.y"
+#line 4029 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 11698 "MachineIndependent/glslang_tab.cpp"
+#line 11691 "MachineIndependent/glslang_tab.cpp"
break;
case 619: /* jump_statement: CONTINUE SEMICOLON */
-#line 4043 "MachineIndependent/glslang.y"
+#line 4036 "MachineIndependent/glslang.y"
{
if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
-#line 11708 "MachineIndependent/glslang_tab.cpp"
+#line 11701 "MachineIndependent/glslang_tab.cpp"
break;
case 620: /* jump_statement: BREAK SEMICOLON */
-#line 4048 "MachineIndependent/glslang.y"
+#line 4041 "MachineIndependent/glslang.y"
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
-#line 11718 "MachineIndependent/glslang_tab.cpp"
+#line 11711 "MachineIndependent/glslang_tab.cpp"
break;
case 621: /* jump_statement: RETURN SEMICOLON */
-#line 4053 "MachineIndependent/glslang.y"
+#line 4046 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -11726,101 +11719,101 @@ yyreduce:
if (parseContext.inMain)
parseContext.postEntryPointReturn = true;
}
-#line 11730 "MachineIndependent/glslang_tab.cpp"
+#line 11723 "MachineIndependent/glslang_tab.cpp"
break;
case 622: /* jump_statement: RETURN expression SEMICOLON */
-#line 4060 "MachineIndependent/glslang.y"
+#line 4053 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 11738 "MachineIndependent/glslang_tab.cpp"
+#line 11731 "MachineIndependent/glslang_tab.cpp"
break;
case 623: /* jump_statement: DISCARD SEMICOLON */
-#line 4063 "MachineIndependent/glslang.y"
+#line 4056 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 11747 "MachineIndependent/glslang_tab.cpp"
+#line 11740 "MachineIndependent/glslang_tab.cpp"
break;
case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */
-#line 4067 "MachineIndependent/glslang.y"
+#line 4060 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc);
}
-#line 11756 "MachineIndependent/glslang_tab.cpp"
+#line 11749 "MachineIndependent/glslang_tab.cpp"
break;
case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */
-#line 4071 "MachineIndependent/glslang.y"
+#line 4064 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc);
}
-#line 11765 "MachineIndependent/glslang_tab.cpp"
+#line 11758 "MachineIndependent/glslang_tab.cpp"
break;
case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */
-#line 4075 "MachineIndependent/glslang.y"
+#line 4068 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc);
}
-#line 11774 "MachineIndependent/glslang_tab.cpp"
+#line 11767 "MachineIndependent/glslang_tab.cpp"
break;
case 627: /* translation_unit: external_declaration */
-#line 4084 "MachineIndependent/glslang.y"
+#line 4077 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 11783 "MachineIndependent/glslang_tab.cpp"
+#line 11776 "MachineIndependent/glslang_tab.cpp"
break;
case 628: /* translation_unit: translation_unit external_declaration */
-#line 4088 "MachineIndependent/glslang.y"
+#line 4081 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermNode) != nullptr) {
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
}
-#line 11794 "MachineIndependent/glslang_tab.cpp"
+#line 11787 "MachineIndependent/glslang_tab.cpp"
break;
case 629: /* external_declaration: function_definition */
-#line 4097 "MachineIndependent/glslang.y"
+#line 4090 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11802 "MachineIndependent/glslang_tab.cpp"
+#line 11795 "MachineIndependent/glslang_tab.cpp"
break;
case 630: /* external_declaration: declaration */
-#line 4100 "MachineIndependent/glslang.y"
+#line 4093 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11810 "MachineIndependent/glslang_tab.cpp"
+#line 11803 "MachineIndependent/glslang_tab.cpp"
break;
case 631: /* external_declaration: SEMICOLON */
-#line 4103 "MachineIndependent/glslang.y"
+#line 4096 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
(yyval.interm.intermNode) = nullptr;
}
-#line 11820 "MachineIndependent/glslang_tab.cpp"
+#line 11813 "MachineIndependent/glslang_tab.cpp"
break;
case 632: /* $@13: %empty */
-#line 4111 "MachineIndependent/glslang.y"
+#line 4104 "MachineIndependent/glslang.y"
{
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
@@ -11833,11 +11826,11 @@ yyreduce:
++parseContext.statementNestingLevel;
}
}
-#line 11837 "MachineIndependent/glslang_tab.cpp"
+#line 11830 "MachineIndependent/glslang_tab.cpp"
break;
case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */
-#line 4123 "MachineIndependent/glslang.y"
+#line 4116 "MachineIndependent/glslang.y"
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -11865,228 +11858,228 @@ yyreduce:
--parseContext.statementNestingLevel;
}
}
-#line 11869 "MachineIndependent/glslang_tab.cpp"
+#line 11862 "MachineIndependent/glslang_tab.cpp"
break;
case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */
-#line 4153 "MachineIndependent/glslang.y"
+#line 4146 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
}
-#line 11877 "MachineIndependent/glslang_tab.cpp"
+#line 11870 "MachineIndependent/glslang_tab.cpp"
break;
case 635: /* attribute_list: single_attribute */
-#line 4158 "MachineIndependent/glslang.y"
+#line 4151 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = (yyvsp[0].interm.attributes);
}
-#line 11885 "MachineIndependent/glslang_tab.cpp"
+#line 11878 "MachineIndependent/glslang_tab.cpp"
break;
case 636: /* attribute_list: attribute_list COMMA single_attribute */
-#line 4161 "MachineIndependent/glslang.y"
+#line 4154 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
}
-#line 11893 "MachineIndependent/glslang_tab.cpp"
+#line 11886 "MachineIndependent/glslang_tab.cpp"
break;
case 637: /* single_attribute: IDENTIFIER */
-#line 4166 "MachineIndependent/glslang.y"
+#line 4159 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
}
-#line 11901 "MachineIndependent/glslang_tab.cpp"
+#line 11894 "MachineIndependent/glslang_tab.cpp"
break;
case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */
-#line 4169 "MachineIndependent/glslang.y"
+#line 4162 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
}
-#line 11909 "MachineIndependent/glslang_tab.cpp"
+#line 11902 "MachineIndependent/glslang_tab.cpp"
break;
case 639: /* spirv_requirements_list: spirv_requirements_parameter */
-#line 4174 "MachineIndependent/glslang.y"
+#line 4167 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq);
}
-#line 11917 "MachineIndependent/glslang_tab.cpp"
+#line 11910 "MachineIndependent/glslang_tab.cpp"
break;
case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */
-#line 4177 "MachineIndependent/glslang.y"
+#line 4170 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq));
}
-#line 11925 "MachineIndependent/glslang_tab.cpp"
+#line 11918 "MachineIndependent/glslang_tab.cpp"
break;
case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */
-#line 4182 "MachineIndependent/glslang.y"
+#line 4175 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr);
}
-#line 11933 "MachineIndependent/glslang_tab.cpp"
+#line 11926 "MachineIndependent/glslang_tab.cpp"
break;
case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */
-#line 4185 "MachineIndependent/glslang.y"
+#line 4178 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11941 "MachineIndependent/glslang_tab.cpp"
+#line 11934 "MachineIndependent/glslang_tab.cpp"
break;
case 643: /* spirv_extension_list: STRING_LITERAL */
-#line 4190 "MachineIndependent/glslang.y"
+#line 4183 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 11949 "MachineIndependent/glslang_tab.cpp"
+#line 11942 "MachineIndependent/glslang_tab.cpp"
break;
case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */
-#line 4193 "MachineIndependent/glslang.y"
+#line 4186 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 11957 "MachineIndependent/glslang_tab.cpp"
+#line 11950 "MachineIndependent/glslang_tab.cpp"
break;
case 645: /* spirv_capability_list: INTCONSTANT */
-#line 4198 "MachineIndependent/glslang.y"
+#line 4191 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
}
-#line 11965 "MachineIndependent/glslang_tab.cpp"
+#line 11958 "MachineIndependent/glslang_tab.cpp"
break;
case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */
-#line 4201 "MachineIndependent/glslang.y"
+#line 4194 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
}
-#line 11973 "MachineIndependent/glslang_tab.cpp"
+#line 11966 "MachineIndependent/glslang_tab.cpp"
break;
case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4206 "MachineIndependent/glslang.y"
+#line 4199 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
(yyval.interm.intermNode) = 0;
}
-#line 11982 "MachineIndependent/glslang_tab.cpp"
+#line 11975 "MachineIndependent/glslang_tab.cpp"
break;
case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4210 "MachineIndependent/glslang.y"
+#line 4203 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
(yyval.interm.intermNode) = 0;
}
-#line 11992 "MachineIndependent/glslang_tab.cpp"
+#line 11985 "MachineIndependent/glslang_tab.cpp"
break;
case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
-#line 4215 "MachineIndependent/glslang.y"
+#line 4208 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 12001 "MachineIndependent/glslang_tab.cpp"
+#line 11994 "MachineIndependent/glslang_tab.cpp"
break;
case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
-#line 4219 "MachineIndependent/glslang.y"
+#line 4212 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 12011 "MachineIndependent/glslang_tab.cpp"
+#line 12004 "MachineIndependent/glslang_tab.cpp"
break;
case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
-#line 4224 "MachineIndependent/glslang.y"
+#line 4217 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 12020 "MachineIndependent/glslang_tab.cpp"
+#line 12013 "MachineIndependent/glslang_tab.cpp"
break;
case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
-#line 4228 "MachineIndependent/glslang.y"
+#line 4221 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 12030 "MachineIndependent/glslang_tab.cpp"
+#line 12023 "MachineIndependent/glslang_tab.cpp"
break;
case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */
-#line 4235 "MachineIndependent/glslang.y"
+#line 4228 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 12038 "MachineIndependent/glslang_tab.cpp"
+#line 12031 "MachineIndependent/glslang_tab.cpp"
break;
case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */
-#line 4238 "MachineIndependent/glslang.y"
+#line 4231 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 12046 "MachineIndependent/glslang_tab.cpp"
+#line 12039 "MachineIndependent/glslang_tab.cpp"
break;
case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */
-#line 4243 "MachineIndependent/glslang.y"
+#line 4236 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 12054 "MachineIndependent/glslang_tab.cpp"
+#line 12047 "MachineIndependent/glslang_tab.cpp"
break;
case 656: /* spirv_execution_mode_parameter: INTCONSTANT */
-#line 4246 "MachineIndependent/glslang.y"
+#line 4239 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 12062 "MachineIndependent/glslang_tab.cpp"
+#line 12055 "MachineIndependent/glslang_tab.cpp"
break;
case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */
-#line 4249 "MachineIndependent/glslang.y"
+#line 4242 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 12070 "MachineIndependent/glslang_tab.cpp"
+#line 12063 "MachineIndependent/glslang_tab.cpp"
break;
case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */
-#line 4252 "MachineIndependent/glslang.y"
+#line 4245 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 12078 "MachineIndependent/glslang_tab.cpp"
+#line 12071 "MachineIndependent/glslang_tab.cpp"
break;
case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */
-#line 4255 "MachineIndependent/glslang.y"
+#line 4248 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
}
-#line 12086 "MachineIndependent/glslang_tab.cpp"
+#line 12079 "MachineIndependent/glslang_tab.cpp"
break;
case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */
-#line 4260 "MachineIndependent/glslang.y"
+#line 4253 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -12096,11 +12089,11 @@ yyreduce:
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode));
}
-#line 12100 "MachineIndependent/glslang_tab.cpp"
+#line 12093 "MachineIndependent/glslang_tab.cpp"
break;
case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */
-#line 4269 "MachineIndependent/glslang.y"
+#line 4262 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -12110,351 +12103,351 @@ yyreduce:
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 12114 "MachineIndependent/glslang_tab.cpp"
+#line 12107 "MachineIndependent/glslang_tab.cpp"
break;
case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4280 "MachineIndependent/glslang.y"
+#line 4273 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc);
(yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
(yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
}
-#line 12124 "MachineIndependent/glslang_tab.cpp"
+#line 12117 "MachineIndependent/glslang_tab.cpp"
break;
case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4285 "MachineIndependent/glslang.y"
+#line 4278 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
(yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
}
-#line 12135 "MachineIndependent/glslang_tab.cpp"
+#line 12128 "MachineIndependent/glslang_tab.cpp"
break;
case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4293 "MachineIndependent/glslang.y"
+#line 4286 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
}
-#line 12144 "MachineIndependent/glslang_tab.cpp"
+#line 12137 "MachineIndependent/glslang_tab.cpp"
break;
case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4297 "MachineIndependent/glslang.y"
+#line 4290 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
}
-#line 12154 "MachineIndependent/glslang_tab.cpp"
+#line 12147 "MachineIndependent/glslang_tab.cpp"
break;
case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
-#line 4302 "MachineIndependent/glslang.y"
+#line 4295 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12163 "MachineIndependent/glslang_tab.cpp"
+#line 12156 "MachineIndependent/glslang_tab.cpp"
break;
case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
-#line 4306 "MachineIndependent/glslang.y"
+#line 4299 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12173 "MachineIndependent/glslang_tab.cpp"
+#line 12166 "MachineIndependent/glslang_tab.cpp"
break;
case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
-#line 4311 "MachineIndependent/glslang.y"
+#line 4304 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12182 "MachineIndependent/glslang_tab.cpp"
+#line 12175 "MachineIndependent/glslang_tab.cpp"
break;
case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
-#line 4315 "MachineIndependent/glslang.y"
+#line 4308 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12192 "MachineIndependent/glslang_tab.cpp"
+#line 12185 "MachineIndependent/glslang_tab.cpp"
break;
case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
-#line 4320 "MachineIndependent/glslang.y"
+#line 4313 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12201 "MachineIndependent/glslang_tab.cpp"
+#line 12194 "MachineIndependent/glslang_tab.cpp"
break;
case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
-#line 4324 "MachineIndependent/glslang.y"
+#line 4317 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12211 "MachineIndependent/glslang_tab.cpp"
+#line 12204 "MachineIndependent/glslang_tab.cpp"
break;
case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */
-#line 4331 "MachineIndependent/glslang.y"
+#line 4324 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 12219 "MachineIndependent/glslang_tab.cpp"
+#line 12212 "MachineIndependent/glslang_tab.cpp"
break;
case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */
-#line 4334 "MachineIndependent/glslang.y"
+#line 4327 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 12227 "MachineIndependent/glslang_tab.cpp"
+#line 12220 "MachineIndependent/glslang_tab.cpp"
break;
case 674: /* spirv_decorate_parameter: FLOATCONSTANT */
-#line 4339 "MachineIndependent/glslang.y"
+#line 4332 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 12235 "MachineIndependent/glslang_tab.cpp"
+#line 12228 "MachineIndependent/glslang_tab.cpp"
break;
case 675: /* spirv_decorate_parameter: INTCONSTANT */
-#line 4342 "MachineIndependent/glslang.y"
+#line 4335 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 12243 "MachineIndependent/glslang_tab.cpp"
+#line 12236 "MachineIndependent/glslang_tab.cpp"
break;
case 676: /* spirv_decorate_parameter: UINTCONSTANT */
-#line 4345 "MachineIndependent/glslang.y"
+#line 4338 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 12251 "MachineIndependent/glslang_tab.cpp"
+#line 12244 "MachineIndependent/glslang_tab.cpp"
break;
case 677: /* spirv_decorate_parameter: BOOLCONSTANT */
-#line 4348 "MachineIndependent/glslang.y"
+#line 4341 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 12259 "MachineIndependent/glslang_tab.cpp"
+#line 12252 "MachineIndependent/glslang_tab.cpp"
break;
case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */
-#line 4353 "MachineIndependent/glslang.y"
+#line 4346 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 12267 "MachineIndependent/glslang_tab.cpp"
+#line 12260 "MachineIndependent/glslang_tab.cpp"
break;
case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */
-#line 4356 "MachineIndependent/glslang.y"
+#line 4349 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 12275 "MachineIndependent/glslang_tab.cpp"
+#line 12268 "MachineIndependent/glslang_tab.cpp"
break;
case 680: /* spirv_decorate_id_parameter: variable_identifier */
-#line 4361 "MachineIndependent/glslang.y"
+#line 4354 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode())
(yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode);
else
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", "");
}
-#line 12286 "MachineIndependent/glslang_tab.cpp"
+#line 12279 "MachineIndependent/glslang_tab.cpp"
break;
case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */
-#line 4367 "MachineIndependent/glslang.y"
+#line 4360 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 12294 "MachineIndependent/glslang_tab.cpp"
+#line 12287 "MachineIndependent/glslang_tab.cpp"
break;
case 682: /* spirv_decorate_id_parameter: INTCONSTANT */
-#line 4370 "MachineIndependent/glslang.y"
+#line 4363 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 12302 "MachineIndependent/glslang_tab.cpp"
+#line 12295 "MachineIndependent/glslang_tab.cpp"
break;
case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */
-#line 4373 "MachineIndependent/glslang.y"
+#line 4366 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 12310 "MachineIndependent/glslang_tab.cpp"
+#line 12303 "MachineIndependent/glslang_tab.cpp"
break;
case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */
-#line 4376 "MachineIndependent/glslang.y"
+#line 4369 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 12318 "MachineIndependent/glslang_tab.cpp"
+#line 12311 "MachineIndependent/glslang_tab.cpp"
break;
case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */
-#line 4381 "MachineIndependent/glslang.y"
+#line 4374 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(
parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 12327 "MachineIndependent/glslang_tab.cpp"
+#line 12320 "MachineIndependent/glslang_tab.cpp"
break;
case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */
-#line 4385 "MachineIndependent/glslang.y"
+#line 4378 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 12335 "MachineIndependent/glslang_tab.cpp"
+#line 12328 "MachineIndependent/glslang_tab.cpp"
break;
case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
-#line 4390 "MachineIndependent/glslang.y"
+#line 4383 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
}
-#line 12344 "MachineIndependent/glslang_tab.cpp"
+#line 12337 "MachineIndependent/glslang_tab.cpp"
break;
case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
-#line 4394 "MachineIndependent/glslang.y"
+#line 4387 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
}
-#line 12354 "MachineIndependent/glslang_tab.cpp"
+#line 12347 "MachineIndependent/glslang_tab.cpp"
break;
case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4399 "MachineIndependent/glslang.y"
+#line 4392 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
}
-#line 12363 "MachineIndependent/glslang_tab.cpp"
+#line 12356 "MachineIndependent/glslang_tab.cpp"
break;
case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4403 "MachineIndependent/glslang.y"
+#line 4396 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
}
-#line 12373 "MachineIndependent/glslang_tab.cpp"
+#line 12366 "MachineIndependent/glslang_tab.cpp"
break;
case 691: /* spirv_type_parameter_list: spirv_type_parameter */
-#line 4410 "MachineIndependent/glslang.y"
+#line 4403 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams);
}
-#line 12381 "MachineIndependent/glslang_tab.cpp"
+#line 12374 "MachineIndependent/glslang_tab.cpp"
break;
case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */
-#line 4413 "MachineIndependent/glslang.y"
+#line 4406 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams));
}
-#line 12389 "MachineIndependent/glslang_tab.cpp"
+#line 12382 "MachineIndependent/glslang_tab.cpp"
break;
case 693: /* spirv_type_parameter: constant_expression */
-#line 4418 "MachineIndependent/glslang.y"
+#line 4411 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion());
}
-#line 12397 "MachineIndependent/glslang_tab.cpp"
+#line 12390 "MachineIndependent/glslang_tab.cpp"
break;
case 694: /* spirv_type_parameter: type_specifier_nonarray */
-#line 4421 "MachineIndependent/glslang.y"
+#line 4414 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 12405 "MachineIndependent/glslang_tab.cpp"
+#line 12398 "MachineIndependent/glslang_tab.cpp"
break;
case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4426 "MachineIndependent/glslang.y"
+#line 4419 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
}
-#line 12413 "MachineIndependent/glslang_tab.cpp"
+#line 12406 "MachineIndependent/glslang_tab.cpp"
break;
case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4429 "MachineIndependent/glslang.y"
+#line 4422 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
}
-#line 12422 "MachineIndependent/glslang_tab.cpp"
+#line 12415 "MachineIndependent/glslang_tab.cpp"
break;
case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */
-#line 4435 "MachineIndependent/glslang.y"
+#line 4428 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst);
}
-#line 12430 "MachineIndependent/glslang_tab.cpp"
+#line 12423 "MachineIndependent/glslang_tab.cpp"
break;
case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */
-#line 4438 "MachineIndependent/glslang.y"
+#line 4431 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst));
}
-#line 12438 "MachineIndependent/glslang_tab.cpp"
+#line 12431 "MachineIndependent/glslang_tab.cpp"
break;
case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */
-#line 4443 "MachineIndependent/glslang.y"
+#line 4436 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string);
}
-#line 12446 "MachineIndependent/glslang_tab.cpp"
+#line 12439 "MachineIndependent/glslang_tab.cpp"
break;
case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */
-#line 4446 "MachineIndependent/glslang.y"
+#line 4439 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i);
}
-#line 12454 "MachineIndependent/glslang_tab.cpp"
+#line 12447 "MachineIndependent/glslang_tab.cpp"
break;
-#line 12458 "MachineIndependent/glslang_tab.cpp"
+#line 12451 "MachineIndependent/glslang_tab.cpp"
default: break;
}
@@ -12678,5 +12671,5 @@ yyreturnlab:
return yyresult;
}
-#line 4450 "MachineIndependent/glslang.y"
+#line 4443 "MachineIndependent/glslang.y"
diff --git a/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/preprocessor/PpContext.h b/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/preprocessor/PpContext.h
index 590eab6b20..18342bf6d0 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/preprocessor/PpContext.h
+++ b/third_party/vulkan-deps/glslang/src/glslang/MachineIndependent/preprocessor/PpContext.h
@@ -86,11 +86,6 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "../ParseHelper.h"
#include "PpTokens.h"
-/* windows only pragma */
-#ifdef _MSC_VER
- #pragma warning(disable : 4127)
-#endif
-
namespace glslang {
class TPpToken {
diff --git a/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Unix/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Unix/CMakeLists.txt
index f6b1c6afb7..ec35da3085 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Unix/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Unix/CMakeLists.txt
@@ -40,7 +40,7 @@ set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(OSDependent Threads::Threads)
-if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS)
+if(PROJECT_IS_TOP_LEVEL AND NOT BUILD_SHARED_LIBS)
install(TARGETS OSDependent EXPORT glslang-targets)
# Backward compatibility
diff --git a/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Windows/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Windows/CMakeLists.txt
index c9d404a49e..b8af046cd7 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Windows/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/glslang/OSDependent/Windows/CMakeLists.txt
@@ -51,7 +51,7 @@ if(WIN32)
source_group("Source" FILES ${SOURCES})
endif()
-if(ENABLE_GLSLANG_INSTALL)
+if(PROJECT_IS_TOP_LEVEL)
install(TARGETS OSDependent EXPORT glslang-targets)
# Backward compatibility
diff --git a/third_party/vulkan-deps/glslang/src/glslang/ResourceLimits/resource_limits_c.cpp b/third_party/vulkan-deps/glslang/src/glslang/ResourceLimits/resource_limits_c.cpp
index 0eeac23a5e..8909d9ef5e 100644
--- a/third_party/vulkan-deps/glslang/src/glslang/ResourceLimits/resource_limits_c.cpp
+++ b/third_party/vulkan-deps/glslang/src/glslang/ResourceLimits/resource_limits_c.cpp
@@ -42,28 +42,14 @@ const glslang_resource_t* glslang_default_resource(void)
return reinterpret_cast<const glslang_resource_t*>(GetDefaultResources());
}
-#if defined(__clang__) || defined(__GNUC__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#elif defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable : 4996)
-#endif
-
const char* glslang_default_resource_string()
{
std::string cpp_str = GetDefaultTBuiltInResourceString();
char* c_str = (char*)malloc(cpp_str.length() + 1);
- strcpy(c_str, cpp_str.c_str());
+ strncpy(c_str, cpp_str.c_str(), cpp_str.length() + 1);
return c_str;
}
-#if defined(__clang__) || defined(__GNUC__)
-#pragma GCC diagnostic pop
-#elif defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
void glslang_decode_resource_limits(glslang_resource_t* resources, char* config)
{
DecodeResourceLimits(reinterpret_cast<TBuiltInResource*>(resources), config);
diff --git a/third_party/vulkan-deps/glslang/src/gtests/CMakeLists.txt b/third_party/vulkan-deps/glslang/src/gtests/CMakeLists.txt
index 37d2dbb15b..8e0edd4d78 100644
--- a/third_party/vulkan-deps/glslang/src/gtests/CMakeLists.txt
+++ b/third_party/vulkan-deps/glslang/src/gtests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 The Khronos Group Inc.
+# Copyright (C) 2020-2023 The Khronos Group Inc.
#
# All rights reserved.
#
@@ -31,7 +31,7 @@
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-if(BUILD_TESTING)
+if(GLSLANG_TESTS)
if(TARGET gmock)
message(STATUS "Google Mock found - building tests")
@@ -68,21 +68,6 @@ if(BUILD_TESTING)
glslang_pch(glslangtests ${CMAKE_CURRENT_SOURCE_DIR}/pch.h)
set_property(TARGET glslangtests PROPERTY FOLDER tests)
glslang_set_link_args(glslangtests)
- if(ENABLE_GLSLANG_INSTALL)
- install(TARGETS glslangtests EXPORT glslang-targets)
-
- # Backward compatibility
- file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" "
- message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
-
- if (NOT TARGET glslang::glslangtests)
- include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
- endif()
-
- add_library(glslangtests ALIAS glslang::glslangtests)
- ")
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
- endif()
set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
# Supply a default test root directory, so that manual testing
diff --git a/third_party/vulkan-deps/spirv-tools/src/.github/workflows/ios.yml b/third_party/vulkan-deps/spirv-tools/src/.github/workflows/ios.yml
index b46ff1d409..68bf59b6ef 100644
--- a/third_party/vulkan-deps/spirv-tools/src/.github/workflows/ios.yml
+++ b/third_party/vulkan-deps/spirv-tools/src/.github/workflows/ios.yml
@@ -12,7 +12,7 @@ jobs:
os: [ macos-12, macos-13 ]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7
+ - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9
- name: Download dependencies
run: python3 utils/git-sync-deps
# NOTE: The MacOS SDK ships universal binaries. CI should reflect this.
diff --git a/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/instrument.hpp b/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/instrument.hpp
index ae9278b0fc..0a6e6306ec 100644
--- a/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/instrument.hpp
+++ b/third_party/vulkan-deps/spirv-tools/src/include/spirv-tools/instrument.hpp
@@ -73,81 +73,11 @@ static const int kInstCommonOutShaderId = 1;
// which generated the validation error.
static const int kInstCommonOutInstructionIdx = 2;
-// This is the stage which generated the validation error. This word is used
-// to determine the contents of the next two words in the record.
-// 0:Vert, 1:TessCtrl, 2:TessEval, 3:Geom, 4:Frag, 5:Compute
-static const int kInstCommonOutStageIdx = 3;
-static const int kInstCommonOutCnt = 4;
-
-// Stage-specific Stream Record Offsets
-//
-// Each stage will contain different values in the next set of words of the
-// record used to identify which instantiation of the shader generated the
-// validation error.
-//
-// Vertex Shader Output Record Offsets
-static const int kInstVertOutVertexIndex = kInstCommonOutCnt;
-static const int kInstVertOutInstanceIndex = kInstCommonOutCnt + 1;
-static const int kInstVertOutUnused = kInstCommonOutCnt + 2;
-
-// Frag Shader Output Record Offsets
-static const int kInstFragOutFragCoordX = kInstCommonOutCnt;
-static const int kInstFragOutFragCoordY = kInstCommonOutCnt + 1;
-static const int kInstFragOutUnused = kInstCommonOutCnt + 2;
-
-// Compute Shader Output Record Offsets
-static const int kInstCompOutGlobalInvocationIdX = kInstCommonOutCnt;
-static const int kInstCompOutGlobalInvocationIdY = kInstCommonOutCnt + 1;
-static const int kInstCompOutGlobalInvocationIdZ = kInstCommonOutCnt + 2;
-
-// Tessellation Control Shader Output Record Offsets
-static const int kInstTessCtlOutInvocationId = kInstCommonOutCnt;
-static const int kInstTessCtlOutPrimitiveId = kInstCommonOutCnt + 1;
-static const int kInstTessCtlOutUnused = kInstCommonOutCnt + 2;
-
-// Tessellation Eval Shader Output Record Offsets
-static const int kInstTessEvalOutPrimitiveId = kInstCommonOutCnt;
-static const int kInstTessEvalOutTessCoordU = kInstCommonOutCnt + 1;
-static const int kInstTessEvalOutTessCoordV = kInstCommonOutCnt + 2;
-
-// Geometry Shader Output Record Offsets
-static const int kInstGeomOutPrimitiveId = kInstCommonOutCnt;
-static const int kInstGeomOutInvocationId = kInstCommonOutCnt + 1;
-static const int kInstGeomOutUnused = kInstCommonOutCnt + 2;
-
-// Ray Tracing Shader Output Record Offsets
-static const int kInstRayTracingOutLaunchIdX = kInstCommonOutCnt;
-static const int kInstRayTracingOutLaunchIdY = kInstCommonOutCnt + 1;
-static const int kInstRayTracingOutLaunchIdZ = kInstCommonOutCnt + 2;
-
-// Mesh Shader Output Record Offsets
-static const int kInstMeshOutGlobalInvocationIdX = kInstCommonOutCnt;
-static const int kInstMeshOutGlobalInvocationIdY = kInstCommonOutCnt + 1;
-static const int kInstMeshOutGlobalInvocationIdZ = kInstCommonOutCnt + 2;
-
-// Task Shader Output Record Offsets
-static const int kInstTaskOutGlobalInvocationIdX = kInstCommonOutCnt;
-static const int kInstTaskOutGlobalInvocationIdY = kInstCommonOutCnt + 1;
-static const int kInstTaskOutGlobalInvocationIdZ = kInstCommonOutCnt + 2;
-
-// Size of Common and Stage-specific Members
-static const int kInstStageOutCnt = kInstCommonOutCnt + 3;
-
// Debug Buffer Bindings
//
// These are the bindings for the different buffers which are
// read or written by the instrumentation passes.
//
-// This is the output buffer written by InstBindlessCheckPass,
-// InstBuffAddrCheckPass, and possibly other future validations.
-static const int kDebugOutputBindingStream = 0;
-
-// The binding for the input buffer read by InstBindlessCheckPass.
-static const int kDebugInputBindingBindless = 1;
-
-// The binding for the input buffer read by InstBuffAddrCheckPass.
-static const int kDebugInputBindingBuffAddr = 2;
-
// This is the output buffer written by InstDebugPrintfPass.
static const int kDebugOutputPrintfStream = 3;
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/fold_spec_constant_op_and_composite_pass.cpp b/third_party/vulkan-deps/spirv-tools/src/source/opt/fold_spec_constant_op_and_composite_pass.cpp
index f6d61554a4..770e1fe50c 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/fold_spec_constant_op_and_composite_pass.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/fold_spec_constant_op_and_composite_pass.cpp
@@ -176,8 +176,9 @@ Instruction* FoldSpecConstantOpAndCompositePass::FoldWithInstructionFolder(
Instruction* new_const_inst =
context()->get_instruction_folder().FoldInstructionToConstant(
inst.get(), identity_map);
- assert(new_const_inst != nullptr &&
- "Failed to fold instruction that must be folded.");
+
+ // new_const_inst == null indicates we cannot fold this spec constant
+ if (!new_const_inst) return nullptr;
// Get the instruction before |pos| to insert after. |pos| cannot be the
// first instruction in the list because its type has to come first.
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_bindless_check_pass.h b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_bindless_check_pass.h
index f99b59d0a5..243cba7671 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_bindless_check_pass.h
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_bindless_check_pass.h
@@ -29,7 +29,7 @@ namespace opt {
class InstBindlessCheckPass : public InstrumentPass {
public:
InstBindlessCheckPass(uint32_t shader_id)
- : InstrumentPass(0, shader_id, true) {}
+ : InstrumentPass(0, shader_id, true, true) {}
~InstBindlessCheckPass() override = default;
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_buff_addr_check_pass.h b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_buff_addr_check_pass.h
index 70076a3712..f07f98a0f2 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_buff_addr_check_pass.h
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_buff_addr_check_pass.h
@@ -29,9 +29,10 @@ namespace opt {
class InstBuffAddrCheckPass : public InstrumentPass {
public:
// For test harness only
- InstBuffAddrCheckPass() : InstrumentPass(0, 23) {}
+ InstBuffAddrCheckPass() : InstrumentPass(0, 23, false, true) {}
// For all other interfaces
- InstBuffAddrCheckPass(uint32_t shader_id) : InstrumentPass(0, shader_id) {}
+ InstBuffAddrCheckPass(uint32_t shader_id)
+ : InstrumentPass(0, shader_id, false, true) {}
~InstBuffAddrCheckPass() override = default;
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.cpp b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.cpp
index a48a28f6b1..abd25e9396 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.cpp
@@ -138,7 +138,7 @@ void InstDebugPrintfPass::GenOutputValues(Instruction* val_inst,
}
void InstDebugPrintfPass::GenOutputCode(
- Instruction* printf_inst, uint32_t stage_idx,
+ Instruction* printf_inst,
std::vector<std::unique_ptr<BasicBlock>>* new_blocks) {
BasicBlock* back_blk_ptr = &*new_blocks->back();
InstructionBuilder builder(
@@ -168,14 +168,14 @@ void InstDebugPrintfPass::GenOutputCode(
});
GenDebugStreamWrite(
builder.GetUintConstantId(shader_id_),
- builder.GetUintConstantId(uid2offset_[printf_inst->unique_id()]),
- GenStageInfo(stage_idx, &builder), val_ids, &builder);
+ builder.GetUintConstantId(uid2offset_[printf_inst->unique_id()]), val_ids,
+ &builder);
context()->KillInst(printf_inst);
}
void InstDebugPrintfPass::GenDebugPrintfCode(
BasicBlock::iterator ref_inst_itr,
- UptrVectorIterator<BasicBlock> ref_block_itr, uint32_t stage_idx,
+ UptrVectorIterator<BasicBlock> ref_block_itr,
std::vector<std::unique_ptr<BasicBlock>>* new_blocks) {
// If not DebugPrintf OpExtInst, return.
Instruction* printf_inst = &*ref_inst_itr;
@@ -191,7 +191,7 @@ void InstDebugPrintfPass::GenDebugPrintfCode(
MovePreludeCode(ref_inst_itr, ref_block_itr, &new_blk_ptr);
new_blocks->push_back(std::move(new_blk_ptr));
// Generate instructions to output printf args to printf buffer
- GenOutputCode(printf_inst, stage_idx, new_blocks);
+ GenOutputCode(printf_inst, new_blocks);
// Caller expects at least two blocks with last block containing remaining
// code, so end block after instrumentation, create remainder block, and
// branch to it
@@ -301,8 +301,7 @@ uint32_t InstDebugPrintfPass::GetStreamWriteFunctionId(uint32_t param_cnt) {
enum {
kShaderId = 0,
kInstructionIndex = 1,
- kStageInfo = 2,
- kFirstParam = 3,
+ kFirstParam = 2,
};
// Total param count is common params plus validation-specific
// params
@@ -312,12 +311,9 @@ uint32_t InstDebugPrintfPass::GetStreamWriteFunctionId(uint32_t param_cnt) {
analysis::TypeManager* type_mgr = context()->get_type_mgr();
const analysis::Type* uint_type = GetInteger(32, false);
- const analysis::Vector v4uint(uint_type, 4);
- const analysis::Type* v4uint_type = type_mgr->GetRegisteredType(&v4uint);
std::vector<const analysis::Type*> param_types(kFirstParam + param_cnt,
uint_type);
- param_types[kStageInfo] = v4uint_type;
std::unique_ptr<Function> output_func = StartFunction(
param2output_func_id_[param_cnt], type_mgr->GetVoidType(), param_types);
@@ -330,8 +326,8 @@ uint32_t InstDebugPrintfPass::GetStreamWriteFunctionId(uint32_t param_cnt) {
context(), &*new_blk_ptr,
IRContext::kAnalysisDefUse | IRContext::kAnalysisInstrToBlockMapping);
// Gen test if debug output buffer size will not be exceeded.
- const uint32_t val_spec_offset = kInstStageOutCnt;
- const uint32_t obuf_record_sz = val_spec_offset + param_cnt;
+ const uint32_t first_param_offset = kInstCommonOutInstructionIdx + 1;
+ const uint32_t obuf_record_sz = first_param_offset + param_cnt;
const uint32_t buf_id = GetOutputBufferId();
const uint32_t buf_uint_ptr_id = GetOutputBufferPtrId();
Instruction* obuf_curr_sz_ac_inst = builder.AddAccessChain(
@@ -382,16 +378,9 @@ uint32_t InstDebugPrintfPass::GetStreamWriteFunctionId(uint32_t param_cnt) {
// Store Instruction Idx
GenDebugOutputFieldCode(obuf_curr_sz_id, kInstCommonOutInstructionIdx,
param_ids[kInstructionIndex], &builder);
- // Store stage info. Stage Idx + 3 words of stage-specific data.
- for (uint32_t i = 0; i < 4; ++i) {
- Instruction* field =
- builder.AddCompositeExtract(GetUintId(), param_ids[kStageInfo], {i});
- GenDebugOutputFieldCode(obuf_curr_sz_id, kInstCommonOutStageIdx + i,
- field->result_id(), &builder);
- }
// Gen writes of validation specific data
for (uint32_t i = 0; i < param_cnt; ++i) {
- GenDebugOutputFieldCode(obuf_curr_sz_id, val_spec_offset + i,
+ GenDebugOutputFieldCode(obuf_curr_sz_id, first_param_offset + i,
param_ids[kFirstParam + i], &builder);
}
// Close write block and gen merge block
@@ -416,12 +405,12 @@ uint32_t InstDebugPrintfPass::GetStreamWriteFunctionId(uint32_t param_cnt) {
}
void InstDebugPrintfPass::GenDebugStreamWrite(
- uint32_t shader_id, uint32_t instruction_idx_id, uint32_t stage_info_id,
+ uint32_t shader_id, uint32_t instruction_idx_id,
const std::vector<uint32_t>& validation_ids, InstructionBuilder* builder) {
// Call debug output function. Pass func_idx, instruction_idx and
// validation ids as args.
uint32_t val_id_cnt = static_cast<uint32_t>(validation_ids.size());
- std::vector<uint32_t> args = {shader_id, instruction_idx_id, stage_info_id};
+ std::vector<uint32_t> args = {shader_id, instruction_idx_id};
(void)args.insert(args.end(), validation_ids.begin(), validation_ids.end());
(void)builder->AddFunctionCall(GetVoidId(),
GetStreamWriteFunctionId(val_id_cnt), args);
@@ -455,10 +444,10 @@ Pass::Status InstDebugPrintfPass::ProcessImpl() {
// Perform printf instrumentation on each entry point function in module
InstProcessFunction pfn =
[this](BasicBlock::iterator ref_inst_itr,
- UptrVectorIterator<BasicBlock> ref_block_itr, uint32_t stage_idx,
+ UptrVectorIterator<BasicBlock> ref_block_itr,
+ [[maybe_unused]] uint32_t stage_idx,
std::vector<std::unique_ptr<BasicBlock>>* new_blocks) {
- return GenDebugPrintfCode(ref_inst_itr, ref_block_itr, stage_idx,
- new_blocks);
+ return GenDebugPrintfCode(ref_inst_itr, ref_block_itr, new_blocks);
};
(void)InstProcessEntryPointCallTree(pfn);
// Remove DebugPrintf OpExtInstImport instruction
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.h b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.h
index 3a2078a7dd..5688d38410 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.h
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/inst_debug_printf_pass.h
@@ -28,10 +28,10 @@ namespace opt {
class InstDebugPrintfPass : public InstrumentPass {
public:
// For test harness only
- InstDebugPrintfPass() : InstrumentPass(7, 23) {}
+ InstDebugPrintfPass() : InstrumentPass(7, 23, false, false) {}
// For all other interfaces
InstDebugPrintfPass(uint32_t desc_set, uint32_t shader_id)
- : InstrumentPass(desc_set, shader_id) {}
+ : InstrumentPass(desc_set, shader_id, false, false) {}
~InstDebugPrintfPass() override = default;
@@ -52,9 +52,7 @@ class InstDebugPrintfPass : public InstrumentPass {
// validation and write a record to the end of the stream, if enough space
// in the buffer remains. The record will contain the index of the function
// and instruction within that function |func_idx, instruction_idx| which
- // generated the record. It will also contain additional information to
- // identify the instance of the shader, depending on the stage |stage_idx|
- // of the shader. Finally, the record will contain validation-specific
+ // generated the record. Finally, the record will contain validation-specific
// data contained in |validation_ids| which will identify the validation
// error as well as the values involved in the error.
//
@@ -83,9 +81,6 @@ class InstDebugPrintfPass : public InstrumentPass {
// Record Size
// Shader ID
// Instruction Index
- // Stage
- // Stage-specific Word 0
- // Stage-specific Word 1
// ...
// Validation Error Code
// Validation-specific Word 0
@@ -93,8 +88,8 @@ class InstDebugPrintfPass : public InstrumentPass {
// Validation-specific Word 2
// ...
//
- // Each record consists of three subsections: members common across all
- // validation, members specific to the stage, and members specific to a
+ // Each record consists of two subsections: members common across all
+ // validation and members specific to a
// validation.
//
// The Record Size is the number of 32-bit words in the record, including
@@ -106,18 +101,6 @@ class InstDebugPrintfPass : public InstrumentPass {
// The Instruction Index is the position of the instruction within the
// SPIR-V file which is in error.
//
- // The Stage is the pipeline stage which has generated the error as defined
- // by the SpvExecutionModel_ enumeration. This is used to interpret the
- // following Stage-specific words.
- //
- // The Stage-specific Words identify which invocation of the shader generated
- // the error. Every stage will write a fixed number of words. Vertex shaders
- // will write the Vertex and Instance ID. Fragment shaders will write
- // FragCoord.xy. Compute shaders will write the GlobalInvocation ID.
- // The tessellation eval shader will write the Primitive ID and TessCoords.uv.
- // The tessellation control shader and geometry shader will write the
- // Primitive ID and Invocation ID.
- //
// The Validation Error Code specifies the exact error which has occurred.
// These are enumerated with the kInstError* static consts. This allows
// multiple validation layers to use the same, single output buffer.
@@ -131,7 +114,6 @@ class InstDebugPrintfPass : public InstrumentPass {
// before writing, the size of the debug out buffer can be used by the
// validation layer to control the number of error records that are written.
void GenDebugStreamWrite(uint32_t shader_id, uint32_t instruction_idx_id,
- uint32_t stage_info_id,
const std::vector<uint32_t>& validation_ids,
InstructionBuilder* builder);
@@ -144,7 +126,7 @@ class InstDebugPrintfPass : public InstrumentPass {
// If |ref_inst_itr| is an OpDebugPrintf, return in |new_blocks| the result
// of replacing it with buffer write instructions within its block at
// |ref_block_itr|. The instructions write a record to the printf
- // output buffer stream including |function_idx, instruction_idx, stage_idx|
+ // output buffer stream including |function_idx, instruction_idx|
// and removes the OpDebugPrintf. The block at |ref_block_itr| can just be
// replaced with the block in |new_blocks|. Besides the buffer writes, this
// block will comprise all instructions preceding and following
@@ -162,7 +144,6 @@ class InstDebugPrintfPass : public InstrumentPass {
// DebugPrintf.
void GenDebugPrintfCode(BasicBlock::iterator ref_inst_itr,
UptrVectorIterator<BasicBlock> ref_block_itr,
- uint32_t stage_idx,
std::vector<std::unique_ptr<BasicBlock>>* new_blocks);
// Generate a sequence of uint32 instructions in |builder| (if necessary)
@@ -175,7 +156,7 @@ class InstDebugPrintfPass : public InstrumentPass {
// Generate instructions to write a record containing the operands of
// |printf_inst| arguments to printf buffer, adding new code to the end of
// the last block in |new_blocks|. Kill OpDebugPrintf instruction.
- void GenOutputCode(Instruction* printf_inst, uint32_t stage_idx,
+ void GenOutputCode(Instruction* printf_inst,
std::vector<std::unique_ptr<BasicBlock>>* new_blocks);
// Set the name for a function or global variable, names will be
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.cpp b/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.cpp
index 829de491cd..b6845a5997 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.cpp
@@ -213,14 +213,14 @@ uint32_t InstrumentPass::GenStageInfo(uint32_t stage_idx,
load_id = GenVarLoad(
context()->GetBuiltinInputVarId(uint32_t(spv::BuiltIn::InvocationId)),
builder);
- ids[2] = load_id;
+ ids[2] = GenUintCastCode(load_id, builder);
} break;
case spv::ExecutionModel::TessellationControl: {
// Load and store InvocationId and PrimitiveId
uint32_t load_id = GenVarLoad(
context()->GetBuiltinInputVarId(uint32_t(spv::BuiltIn::InvocationId)),
builder);
- ids[1] = load_id;
+ ids[1] = GenUintCastCode(load_id, builder);
load_id = GenVarLoad(
context()->GetBuiltinInputVarId(uint32_t(spv::BuiltIn::PrimitiveId)),
builder);
@@ -653,44 +653,50 @@ bool InstrumentPass::InstProcessCallTreeFromRoots(InstProcessFunction& pfn,
}
bool InstrumentPass::InstProcessEntryPointCallTree(InstProcessFunction& pfn) {
- // Make sure all entry points have the same execution model. Do not
- // instrument if they do not.
- // TODO(greg-lunarg): Handle mixed stages. Technically, a shader module
- // can contain entry points with different execution models, although
- // such modules will likely be rare as GLSL and HLSL are geared toward
- // one model per module. In such cases we will need
- // to clone any functions which are in the call trees of entrypoints
- // with differing execution models.
- spv::ExecutionModel stage = context()->GetStage();
- // Check for supported stages
- if (stage != spv::ExecutionModel::Vertex &&
- stage != spv::ExecutionModel::Fragment &&
- stage != spv::ExecutionModel::Geometry &&
- stage != spv::ExecutionModel::GLCompute &&
- stage != spv::ExecutionModel::TessellationControl &&
- stage != spv::ExecutionModel::TessellationEvaluation &&
- stage != spv::ExecutionModel::TaskNV &&
- stage != spv::ExecutionModel::MeshNV &&
- stage != spv::ExecutionModel::RayGenerationNV &&
- stage != spv::ExecutionModel::IntersectionNV &&
- stage != spv::ExecutionModel::AnyHitNV &&
- stage != spv::ExecutionModel::ClosestHitNV &&
- stage != spv::ExecutionModel::MissNV &&
- stage != spv::ExecutionModel::CallableNV &&
- stage != spv::ExecutionModel::TaskEXT &&
- stage != spv::ExecutionModel::MeshEXT) {
- if (consumer()) {
- std::string message = "Stage not supported by instrumentation";
- consumer()(SPV_MSG_ERROR, 0, {0, 0, 0}, message.c_str());
+ uint32_t stage_id;
+ if (use_stage_info_) {
+ // Make sure all entry points have the same execution model. Do not
+ // instrument if they do not.
+ // TODO(greg-lunarg): Handle mixed stages. Technically, a shader module
+ // can contain entry points with different execution models, although
+ // such modules will likely be rare as GLSL and HLSL are geared toward
+ // one model per module. In such cases we will need
+ // to clone any functions which are in the call trees of entrypoints
+ // with differing execution models.
+ spv::ExecutionModel stage = context()->GetStage();
+ // Check for supported stages
+ if (stage != spv::ExecutionModel::Vertex &&
+ stage != spv::ExecutionModel::Fragment &&
+ stage != spv::ExecutionModel::Geometry &&
+ stage != spv::ExecutionModel::GLCompute &&
+ stage != spv::ExecutionModel::TessellationControl &&
+ stage != spv::ExecutionModel::TessellationEvaluation &&
+ stage != spv::ExecutionModel::TaskNV &&
+ stage != spv::ExecutionModel::MeshNV &&
+ stage != spv::ExecutionModel::RayGenerationNV &&
+ stage != spv::ExecutionModel::IntersectionNV &&
+ stage != spv::ExecutionModel::AnyHitNV &&
+ stage != spv::ExecutionModel::ClosestHitNV &&
+ stage != spv::ExecutionModel::MissNV &&
+ stage != spv::ExecutionModel::CallableNV &&
+ stage != spv::ExecutionModel::TaskEXT &&
+ stage != spv::ExecutionModel::MeshEXT) {
+ if (consumer()) {
+ std::string message = "Stage not supported by instrumentation";
+ consumer()(SPV_MSG_ERROR, 0, {0, 0, 0}, message.c_str());
+ }
+ return false;
}
- return false;
+ stage_id = static_cast<uint32_t>(stage);
+ } else {
+ stage_id = 0;
}
// Add together the roots of all entry points
std::queue<uint32_t> roots;
for (auto& e : get_module()->entry_points()) {
roots.push(e.GetSingleWordInOperand(kEntryPointFunctionIdInIdx));
}
- bool modified = InstProcessCallTreeFromRoots(pfn, &roots, uint32_t(stage));
+ bool modified = InstProcessCallTreeFromRoots(pfn, &roots, stage_id);
return modified;
}
diff --git a/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.h b/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.h
index 8b643742dd..e4408c93eb 100644
--- a/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.h
+++ b/third_party/vulkan-deps/spirv-tools/src/source/opt/instrument_pass.h
@@ -77,12 +77,13 @@ class InstrumentPass : public Pass {
// set |desc_set| for debug input and output buffers and writes |shader_id|
// into debug output records. |opt_direct_reads| indicates that the pass
// will see direct input buffer reads and should prepare to optimize them.
- InstrumentPass(uint32_t desc_set, uint32_t shader_id,
- bool opt_direct_reads = false)
+ InstrumentPass(uint32_t desc_set, uint32_t shader_id, bool opt_direct_reads,
+ bool use_stage_info)
: Pass(),
desc_set_(desc_set),
shader_id_(shader_id),
- opt_direct_reads_(opt_direct_reads) {}
+ opt_direct_reads_(opt_direct_reads),
+ use_stage_info_(use_stage_info) {}
// Initialize state for instrumentation of module.
void InitializeInstrument();
@@ -312,7 +313,11 @@ class InstrumentPass : public Pass {
// Optimize direct debug input buffer reads. Specifically, move all such
// reads with constant args to first block and reuse them.
- bool opt_direct_reads_{false};
+ const bool opt_direct_reads_;
+
+ // Set true if the instrumentation needs to know the current stage.
+ // Note that this does not work with multi-stage modules.
+ const bool use_stage_info_;
};
} // namespace opt
diff --git a/third_party/vulkan-deps/spirv-tools/src/test/opt/fold_spec_const_op_composite_test.cpp b/third_party/vulkan-deps/spirv-tools/src/test/opt/fold_spec_const_op_composite_test.cpp
index f83e86e961..70ba362056 100644
--- a/third_party/vulkan-deps/spirv-tools/src/test/opt/fold_spec_const_op_composite_test.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/test/opt/fold_spec_const_op_composite_test.cpp
@@ -674,6 +674,31 @@ TEST_F(FoldSpecConstantOpAndCompositePassBasicTest, CompositeInsertMatrixNull) {
SinglePassRunAndMatch<FoldSpecConstantOpAndCompositePass>(test, false);
}
+// Silently ignore spec constants that cannot be folded
+TEST_F(FoldSpecConstantOpAndCompositePassBasicTest, UnfoldableOp) {
+ const std::string test = R"(
+ OpCapability Shader
+ OpCapability SignedZeroInfNanPreserve
+ OpExtension "SPV_KHR_float_controls"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %main "main"
+ OpSource GLSL 450
+ OpDecorate %v SpecId 1
+ %void = OpTypeVoid
+ %3 = OpTypeFunction %void
+ %float = OpTypeFloat 32
+ %v = OpConstant %float 0x1p-1
+%c = OpSpecConstantOp %float QuantizeToF16 %v
+;CHECK: {{%\w+}} = OpSpecConstantOp {{%\w+}} QuantizeToF16 {{%\w+}}
+ %main = OpFunction %void None %3
+ %5 = OpLabel
+ OpReturn
+ OpFunctionEnd
+)";
+
+ SinglePassRunAndMatch<FoldSpecConstantOpAndCompositePass>(test, false);
+}
+
// All types and some common constants that are potentially required in
// FoldSpecConstantOpAndCompositeTest.
std::vector<std::string> CommonTypesAndConstants() {
diff --git a/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_bindless_check_test.cpp b/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_bindless_check_test.cpp
index 0deec5c6a5..08da367fd5 100644
--- a/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_bindless_check_test.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_bindless_check_test.cpp
@@ -916,6 +916,259 @@ OpFunctionEnd
true, 23u);
}
+TEST_F(InstBindlessTest, InstrumentTesc) {
+ // This test verifies that the pass will correctly instrument tessellation
+ // control shader
+ //
+ // clang-format off
+ //
+ // #version 450
+ // layout(vertices = 3) out;
+ // layout(set = 0, binding = 0) uniform texture1D _77;
+ // layout(set = 0, binding = 1) uniform sampler _78;
+
+ // layout(location = 1) flat in int _3[];
+ // layout(location = 0) out vec4 _5[3];
+
+ // void main()
+ // {
+ // float param;
+ // if (_3[gl_InvocationID] == 0)
+ // {
+ // param = 0.0234375;
+ // }
+ // else
+ // {
+ // param = 1.0156199932098388671875;
+ // }
+ // _5[gl_InvocationID] = textureLod(sampler1D(_77, _78), param, 0.0);
+ // vec4 _203;
+ // if (gl_InvocationID == 0)
+ // {
+ // _203 = gl_in[0].gl_Position;
+ // }
+ // else
+ // {
+ // _203 = gl_in[2].gl_Position;
+ // }
+ // gl_out[gl_InvocationID].gl_Position = _203;
+ // gl_TessLevelInner[0] = 2.7999999523162841796875;
+ // gl_TessLevelInner[1] = 2.7999999523162841796875;
+ // gl_TessLevelOuter[0] = 2.7999999523162841796875;
+ // gl_TessLevelOuter[1] = 2.7999999523162841796875;
+ // gl_TessLevelOuter[2] = 2.7999999523162841796875;
+ // gl_TessLevelOuter[3] = 2.7999999523162841796875;
+ // }
+ //
+ // clang-format on
+ //
+ //
+
+ // clang-format off
+ const std::string defs = R"(
+OpCapability Tessellation
+OpCapability Sampled1D
+;CHECK: OpCapability Linkage
+;CHECK: OpExtension "SPV_KHR_storage_buffer_storage_class"
+;CHECK: OpExtension "SPV_KHR_physical_storage_buffer"
+%1 = OpExtInstImport "GLSL.std.450"
+OpMemoryModel Logical GLSL450
+;CHECK: OpMemoryModel PhysicalStorageBuffer64 GLSL450
+OpEntryPoint TessellationControl %main "main" %_3 %gl_InvocationID %_5 %gl_in %gl_out %gl_TessLevelInner %gl_TessLevelOuter
+;CHECK: OpEntryPoint TessellationControl %main "main" %_3 %gl_InvocationID %_5 %gl_in %gl_out %gl_TessLevelInner %gl_TessLevelOuter %gl_PrimitiveID
+OpExecutionMode %main OutputVertices 3
+OpSource GLSL 450
+OpName %main "main"
+OpName %_3 "_3"
+OpName %gl_InvocationID "gl_InvocationID"
+OpName %param "param"
+OpName %_5 "_5"
+OpName %_77 "_77"
+OpName %_78 "_78"
+OpName %_203 "_203"
+OpName %gl_PerVertex "gl_PerVertex"
+OpMemberName %gl_PerVertex 0 "gl_Position"
+OpMemberName %gl_PerVertex 1 "gl_PointSize"
+OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+OpMemberName %gl_PerVertex 3 "gl_CullDistance"
+OpName %gl_in "gl_in"
+OpName %gl_PerVertex_0 "gl_PerVertex"
+OpMemberName %gl_PerVertex_0 0 "gl_Position"
+OpMemberName %gl_PerVertex_0 1 "gl_PointSize"
+OpMemberName %gl_PerVertex_0 2 "gl_ClipDistance"
+OpMemberName %gl_PerVertex_0 3 "gl_CullDistance"
+OpName %gl_out "gl_out"
+OpName %gl_TessLevelInner "gl_TessLevelInner"
+OpName %gl_TessLevelOuter "gl_TessLevelOuter"
+OpDecorate %_3 Flat
+OpDecorate %_3 Location 1
+OpDecorate %gl_InvocationID BuiltIn InvocationId
+OpDecorate %_5 Location 0
+OpDecorate %_77 DescriptorSet 0
+OpDecorate %_77 Binding 0
+OpDecorate %_78 DescriptorSet 0
+OpDecorate %_78 Binding 1
+OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
+OpDecorate %gl_PerVertex Block
+OpMemberDecorate %gl_PerVertex_0 0 BuiltIn Position
+OpMemberDecorate %gl_PerVertex_0 1 BuiltIn PointSize
+OpMemberDecorate %gl_PerVertex_0 2 BuiltIn ClipDistance
+OpMemberDecorate %gl_PerVertex_0 3 BuiltIn CullDistance
+OpDecorate %gl_PerVertex_0 Block
+OpDecorate %gl_TessLevelInner Patch
+OpDecorate %gl_TessLevelInner BuiltIn TessLevelInner
+OpDecorate %gl_TessLevelOuter Patch
+OpDecorate %gl_TessLevelOuter BuiltIn TessLevelOuter
+%void = OpTypeVoid
+%3 = OpTypeFunction %void
+%int = OpTypeInt 32 1
+%uint = OpTypeInt 32 0
+%uint_32 = OpConstant %uint 32
+%_arr_int_uint_32 = OpTypeArray %int %uint_32
+%_ptr_Input__arr_int_uint_32 = OpTypePointer Input %_arr_int_uint_32
+%_3 = OpVariable %_ptr_Input__arr_int_uint_32 Input
+%_ptr_Input_int = OpTypePointer Input %int
+%gl_InvocationID = OpVariable %_ptr_Input_int Input
+%int_0 = OpConstant %int 0
+%bool = OpTypeBool
+%float = OpTypeFloat 32
+%_ptr_Function_float = OpTypePointer Function %float
+%float_0_0234375 = OpConstant %float 0.0234375
+%float_1_01561999 = OpConstant %float 1.01561999
+%v4float = OpTypeVector %float 4
+%uint_3 = OpConstant %uint 3
+%_arr_v4float_uint_3 = OpTypeArray %v4float %uint_3
+%_ptr_Output__arr_v4float_uint_3 = OpTypePointer Output %_arr_v4float_uint_3
+%_5 = OpVariable %_ptr_Output__arr_v4float_uint_3 Output
+%34 = OpTypeImage %float 1D 0 0 0 1 Unknown
+%_ptr_UniformConstant_34 = OpTypePointer UniformConstant %34
+%_77 = OpVariable %_ptr_UniformConstant_34 UniformConstant
+%38 = OpTypeSampler
+%_ptr_UniformConstant_38 = OpTypePointer UniformConstant %38
+%_78 = OpVariable %_ptr_UniformConstant_38 UniformConstant
+%42 = OpTypeSampledImage %34
+%float_0 = OpConstant %float 0
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+%uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
+%_arr_gl_PerVertex_uint_32 = OpTypeArray %gl_PerVertex %uint_32
+%_ptr_Input__arr_gl_PerVertex_uint_32 = OpTypePointer Input %_arr_gl_PerVertex_uint_32
+%gl_in = OpVariable %_ptr_Input__arr_gl_PerVertex_uint_32 Input
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%int_2 = OpConstant %int 2
+%gl_PerVertex_0 = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
+%_arr_gl_PerVertex_0_uint_3 = OpTypeArray %gl_PerVertex_0 %uint_3
+%_ptr_Output__arr_gl_PerVertex_0_uint_3 = OpTypePointer Output %_arr_gl_PerVertex_0_uint_3
+%gl_out = OpVariable %_ptr_Output__arr_gl_PerVertex_0_uint_3 Output
+%uint_2 = OpConstant %uint 2
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
+%_ptr_Output__arr_float_uint_2 = OpTypePointer Output %_arr_float_uint_2
+%gl_TessLevelInner = OpVariable %_ptr_Output__arr_float_uint_2 Output
+%float_2_79999995 = OpConstant %float 2.79999995
+%_ptr_Output_float = OpTypePointer Output %float
+%int_1 = OpConstant %int 1
+%uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+%_ptr_Output__arr_float_uint_4 = OpTypePointer Output %_arr_float_uint_4
+%gl_TessLevelOuter = OpVariable %_ptr_Output__arr_float_uint_4 Output
+%int_3 = OpConstant %int 3
+)";
+
+ const std::string main_func =
+ R"(
+%main = OpFunction %void None %3
+%5 = OpLabel
+%param = OpVariable %_ptr_Function_float Function
+%_203 = OpVariable %_ptr_Function_v4float Function
+%14 = OpLoad %int %gl_InvocationID
+%15 = OpAccessChain %_ptr_Input_int %_3 %14
+%16 = OpLoad %int %15
+%19 = OpIEqual %bool %16 %int_0
+OpSelectionMerge %21 None
+OpBranchConditional %19 %20 %26
+%20 = OpLabel
+;CHECK-NOT: %15 = OpAccessChain %_ptr_Input_int %_3 %14
+;CHECK: OpBranch {{%\w+}}
+;CHECK: {{%\w+}} = OpLabel
+;CHECK: {{%\w+}} = OpLoad %int %gl_InvocationID
+;CHECK: {{%\w+}} = OpAccessChain %_ptr_Input_int %_3 {{%\w+}}
+;CHECK: {{%\w+}} = OpLoad %int {{%\w+}}
+;CHECK: {{%\w+}} = OpIEqual %bool {{%\w+}} %int_0
+;CHECK: OpSelectionMerge {{%\w+}} None
+;CHECK: OpBranchConditional {{%\w+}} {{%\w+}} {{%\w+}}
+;CHECK: {{%\w+}} = OpLabel
+OpStore %param %float_0_0234375
+OpBranch %21
+%26 = OpLabel
+OpStore %param %float_1_01561999
+OpBranch %21
+%21 = OpLabel
+%33 = OpLoad %int %gl_InvocationID
+%37 = OpLoad %34 %_77
+%41 = OpLoad %38 %_78
+%43 = OpSampledImage %42 %37 %41
+%44 = OpLoad %float %param
+;CHECK: {{%\w+}} = OpLoad %int %gl_InvocationID
+;CHECK: {{%\w+}} = OpBitcast %uint {{%\w+}}
+;CHECK: {{%\w+}} = OpLoad %uint %gl_PrimitiveID
+;CHECK: {{%\w+}} = OpCompositeConstruct %v4uint %uint_1 {{%\w+}} {{%\w+}} %uint_0
+;CHECK: {{%\w+}} = OpFunctionCall %bool %inst_bindless_check_desc %uint_23 %uint_129 {{%\w+}} %uint_0 %uint_0 %uint_0 %uint_0
+;CHECK: OpSelectionMerge {{%\w+}} None
+;CHECK: OpBranchConditional {{%\w+}} {{%\w+}} {{%\w+}}
+%46 = OpImageSampleExplicitLod %v4float %43 %44 Lod %float_0
+%48 = OpAccessChain %_ptr_Output_v4float %_5 %33
+OpStore %48 %46
+;CHECK-NOT: %48 = OpAccessChain %_ptr_Output_v4float %_5 %33
+;CHECK-NOT: OpStore %48 %46
+;CHECK: [[phi_result:%\w+]] = OpPhi %v4float {{%\w+}} {{%\w+}} {{%\w+}} {{%\w+}}
+;CHECK: [[access_chain:%\w+]] = OpAccessChain %_ptr_Output_v4float %_5 {{%\w+}}
+;CHECK: OpStore [[access_chain]] [[phi_result]]
+%49 = OpLoad %int %gl_InvocationID
+%50 = OpIEqual %bool %49 %int_0
+OpSelectionMerge %52 None
+OpBranchConditional %50 %51 %64
+%51 = OpLabel
+%62 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
+%63 = OpLoad %v4float %62
+OpStore %_203 %63
+OpBranch %52
+%64 = OpLabel
+%66 = OpAccessChain %_ptr_Input_v4float %gl_in %int_2 %int_0
+%67 = OpLoad %v4float %66
+OpStore %_203 %67
+OpBranch %52
+%52 = OpLabel
+%72 = OpLoad %int %gl_InvocationID
+%73 = OpLoad %v4float %_203
+%74 = OpAccessChain %_ptr_Output_v4float %gl_out %72 %int_0
+OpStore %74 %73
+%81 = OpAccessChain %_ptr_Output_float %gl_TessLevelInner %int_0
+OpStore %81 %float_2_79999995
+%83 = OpAccessChain %_ptr_Output_float %gl_TessLevelInner %int_1
+OpStore %83 %float_2_79999995
+%88 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %int_0
+OpStore %88 %float_2_79999995
+%89 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %int_1
+OpStore %89 %float_2_79999995
+%90 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %int_2
+OpStore %90 %float_2_79999995
+%92 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %int_3
+OpStore %92 %float_2_79999995
+OpReturn
+OpFunctionEnd
+)";
+ // clang-format on
+
+ SetAssembleOptions(SPV_TEXT_TO_BINARY_OPTION_PRESERVE_NUMERIC_IDS);
+ SinglePassRunAndMatch<InstBindlessCheckPass>(defs + kImportStub + main_func,
+ true, 23u);
+}
+
TEST_F(InstBindlessTest, MultipleDebugFunctions) {
// Same source as Simple, but compiled -g and not optimized, especially not
// inlined. The OpSource has had the source extracted for the sake of brevity.
diff --git a/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_debug_printf_test.cpp b/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_debug_printf_test.cpp
index e9774debf6..24c0bc6551 100644
--- a/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_debug_printf_test.cpp
+++ b/third_party/vulkan-deps/spirv-tools/src/test/opt/inst_debug_printf_test.cpp
@@ -74,7 +74,7 @@ OpExtension "SPV_KHR_non_semantic_info"
; CHECK: OpExtension "SPV_KHR_storage_buffer_storage_class"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %2 "MainPs" %3 %4
-; CHECK: OpEntryPoint Fragment %2 "MainPs" %3 %4 %gl_FragCoord
+; CHECK: OpEntryPoint Fragment %2 "MainPs" %3 %4
OpExecutionMode %2 OriginUpperLeft
%5 = OpString "Color is %vn"
)";
@@ -87,8 +87,6 @@ OpDecorate %7 DescriptorSet 0
OpDecorate %7 Binding 0
OpDecorate %3 Location 0
OpDecorate %4 Location 0
-; CHECK: OpDecorate %gl_FragCoord BuiltIn FragCoord
-; CHECK: OpDecorate %_runtimearr_uint ArrayStride 4
)" + kOutputDecorations;
const std::string globals =
@@ -109,10 +107,7 @@ OpDecorate %4 Location 0
%_ptr_Output_v4float = OpTypePointer Output %v4float
%4 = OpVariable %_ptr_Output_v4float Output
; CHECK: %uint = OpTypeInt 32 0
-; CHECK: %_ptr_Input_v4float = OpTypePointer Input %v4float
-; CHECK: %gl_FragCoord = OpVariable %_ptr_Input_v4float Input
-; CHECK: %v4uint = OpTypeVector %uint 4
-; CHECK: [[func_type:%\w+]] = OpTypeFunction %void %uint %uint %v4uint %uint %uint %uint %uint %uint
+; CHECK: [[func_type:%\w+]] = OpTypeFunction %void %uint %uint %uint %uint %uint %uint %uint
; CHECK: %_runtimearr_uint = OpTypeRuntimeArray %uint
)" + kOutputGlobals + R"(
; CHECK: %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
@@ -138,12 +133,7 @@ OpDecorate %4 Location 0
; CHECK: {{%\w+}} = OpBitcast %uint {{%\w+}}
; CHECK: {{%\w+}} = OpCompositeExtract %float %25 3
; CHECK: {{%\w+}} = OpBitcast %uint {{%\w+}}
-; CHECK: {{%\w+}} = OpLoad %v4float %gl_FragCoord
-; CHECK: {{%\w+}} = OpBitcast %v4uint {{%\w+}}
-; CHECK: {{%\w+}} = OpCompositeExtract %uint {{%\w+}} 0
-; CHECK: {{%\w+}} = OpCompositeExtract %uint {{%\w+}} 1
-; CHECK: {{%\w+}} = OpCompositeConstruct %v4uint %uint_4 {{%\w+}} {{%\w+}} %uint_0
-; CHECK: {{%\w+}} = OpFunctionCall %void %inst_printf_stream_write_5 %uint_23 %uint_36 {{%\w+}} %uint_5 {{%\w+}} {{%\w+}} {{%\w+}} {{%\w+}}
+; CHECK: {{%\w+}} = OpFunctionCall %void %inst_printf_stream_write_5 %uint_23 %uint_36 %uint_5 {{%\w+}} {{%\w+}} {{%\w+}} {{%\w+}}
; CHECK: OpBranch {{%\w+}}
; CHECK: {{%\w+}} = OpLabel
OpStore %4 %25
@@ -155,7 +145,6 @@ OpFunctionEnd
; CHECK: %inst_printf_stream_write_5 = OpFunction %void None {{%\w+}}
; CHECK: [[sw_shader_id:%\w+]] = OpFunctionParameter %uint
; CHECK: [[sw_inst_idx:%\w+]] = OpFunctionParameter %uint
-; CHECK: [[sw_stage_info:%\w+]] = OpFunctionParameter %v4uint
; CHECK: [[sw_param_1:%\w+]] = OpFunctionParameter %uint
; CHECK: [[sw_param_2:%\w+]] = OpFunctionParameter %uint
; CHECK: [[sw_param_3:%\w+]] = OpFunctionParameter %uint
@@ -163,8 +152,8 @@ OpFunctionEnd
; CHECK: [[sw_param_5:%\w+]] = OpFunctionParameter %uint
; CHECK: {{%\w+}} = OpLabel
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_1
-; CHECK: {{%\w+}} = OpAtomicIAdd %uint {{%\w+}} %uint_4 %uint_0 %uint_12
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_12
+; CHECK: {{%\w+}} = OpAtomicIAdd %uint {{%\w+}} %uint_4 %uint_0 %uint_8
+; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_8
; CHECK: {{%\w+}} = OpArrayLength %uint [[output_buffer_var]] 2
; CHECK: {{%\w+}} = OpULessThanEqual %bool {{%\w+}} {{%\w+}}
; CHECK: OpSelectionMerge {{%\w+}} None
@@ -172,42 +161,26 @@ OpFunctionEnd
; CHECK: {{%\w+}} = OpLabel
; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_0
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
-; CHECK: OpStore {{%\w+}} %uint_12
+; CHECK: OpStore {{%\w+}} %uint_8
; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_1
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_shader_id]]
; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_2
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_inst_idx]]
-; CHECK: {{%\w+}} = OpCompositeExtract %uint [[sw_stage_info]] 0
; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_3
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
-; CHECK: OpStore {{%\w+}} {{%\w+}}
-; CHECK: {{%\w+}} = OpCompositeExtract %uint [[sw_stage_info]] 1
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_4
-; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
-; CHECK: OpStore {{%\w+}} {{%\w+}}
-; CHECK: {{%\w+}} = OpCompositeExtract %uint [[sw_stage_info]] 2
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_5
-; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
-; CHECK: OpStore {{%\w+}} {{%\w+}}
-; CHECK: {{%\w+}} = OpCompositeExtract %uint [[sw_stage_info]] 3
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_6
-; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
-; CHECK: OpStore {{%\w+}} {{%\w+}}
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_7
-; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_param_1]]
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_8
+; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_4
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_param_2]]
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_9
+; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_5
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_param_3]]
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_10
+; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_6
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_param_4]]
-; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_11
+; CHECK: {{%\w+}} = OpIAdd %uint {{%\w+}} %uint_7
; CHECK: {{%\w+}} = OpAccessChain %_ptr_StorageBuffer_uint [[output_buffer_var]] %uint_2 {{%\w+}}
; CHECK: OpStore {{%\w+}} [[sw_param_5]]
; CHECK: OpBranch {{%\w+}}
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.cppm b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.cppm
index ec65c34bfe..8fc7d71f91 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.cppm
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.cppm
@@ -826,6 +826,9 @@ export namespace VULKAN_HPP_NAMESPACE
//=== VK_NV_ray_tracing_invocation_reorder ===
using VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV;
+ //=== VK_EXT_layer_settings ===
+ using VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT;
+
//=== VK_NV_low_latency2 ===
using VULKAN_HPP_NAMESPACE::LatencyMarkerNV;
using VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV;
@@ -2259,6 +2262,10 @@ export namespace VULKAN_HPP_NAMESPACE
using VULKAN_HPP_NAMESPACE::EXTNonSeamlessCubeMapExtensionName;
using VULKAN_HPP_NAMESPACE::EXTNonSeamlessCubeMapSpecVersion;
+ //=== VK_ARM_render_pass_striped ===
+ using VULKAN_HPP_NAMESPACE::ARMRenderPassStripedExtensionName;
+ using VULKAN_HPP_NAMESPACE::ARMRenderPassStripedSpecVersion;
+
//=== VK_QCOM_fragment_density_map_offset ===
using VULKAN_HPP_NAMESPACE::QCOMFragmentDensityMapOffsetExtensionName;
using VULKAN_HPP_NAMESPACE::QCOMFragmentDensityMapOffsetSpecVersion;
@@ -2374,6 +2381,10 @@ export namespace VULKAN_HPP_NAMESPACE
using VULKAN_HPP_NAMESPACE::EXTMutableDescriptorTypeExtensionName;
using VULKAN_HPP_NAMESPACE::EXTMutableDescriptorTypeSpecVersion;
+ //=== VK_EXT_layer_settings ===
+ using VULKAN_HPP_NAMESPACE::EXTLayerSettingsExtensionName;
+ using VULKAN_HPP_NAMESPACE::EXTLayerSettingsSpecVersion;
+
//=== VK_ARM_shader_core_builtins ===
using VULKAN_HPP_NAMESPACE::ARMShaderCoreBuiltinsExtensionName;
using VULKAN_HPP_NAMESPACE::ARMShaderCoreBuiltinsSpecVersion;
@@ -3969,6 +3980,7 @@ export namespace VULKAN_HPP_NAMESPACE
//=== VK_HUAWEI_cluster_culling_shader ===
using VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
using VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
+ using VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
//=== VK_EXT_border_color_swizzle ===
using VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT;
@@ -4000,6 +4012,13 @@ export namespace VULKAN_HPP_NAMESPACE
//=== VK_EXT_non_seamless_cube_map ===
using VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
+ //=== VK_ARM_render_pass_striped ===
+ using VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM;
+ using VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM;
+ using VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM;
+ using VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM;
+ using VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM;
+
//=== VK_QCOM_fragment_density_map_offset ===
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
@@ -4137,6 +4156,10 @@ export namespace VULKAN_HPP_NAMESPACE
using VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
using VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
+ //=== VK_EXT_layer_settings ===
+ using VULKAN_HPP_NAMESPACE::LayerSettingEXT;
+ using VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT;
+
//=== VK_ARM_shader_core_builtins ===
using VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM;
using VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM;
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.hpp
index f1119c2b0f..c08ff0ad4a 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan.hpp
@@ -56,7 +56,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h
# include <span>
#endif
-static_assert( VK_HEADER_VERSION == 271, "Wrong VK_HEADER_VERSION!" );
+static_assert( VK_HEADER_VERSION == 272, "Wrong VK_HEADER_VERSION!" );
// <tuple> includes <sys/sysmacros.h> through some other header
// this results in major(x) being resolved to gnu_dev_major(x)
@@ -7033,9 +7033,9 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceGroupSpecVersion = VK_KHR_DEVICE_GROUP_SPEC_VERSION;
//=== VK_EXT_validation_flags ===
- VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_flags extension has been deprecated by VK_EXT_validation_features." )
+ VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_flags extension has been deprecated by VK_EXT_layer_settings." )
VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFlagsExtensionName = VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME;
- VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_flags extension has been deprecated by VK_EXT_validation_features." )
+ VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_flags extension has been deprecated by VK_EXT_layer_settings." )
VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFlagsSpecVersion = VK_EXT_VALIDATION_FLAGS_SPEC_VERSION;
#if defined( VK_USE_PLATFORM_VI_NN )
@@ -7771,8 +7771,10 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_CONSTEXPR_INLINE auto EXTSeparateStencilUsageSpecVersion = VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION;
//=== VK_EXT_validation_features ===
+ VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_features extension has been deprecated by VK_EXT_layer_settings." )
VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFeaturesExtensionName = VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME;
- VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFeaturesSpecVersion = VK_EXT_VALIDATION_FEATURES_SPEC_VERSION;
+ VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_features extension has been deprecated by VK_EXT_layer_settings." )
+ VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFeaturesSpecVersion = VK_EXT_VALIDATION_FEATURES_SPEC_VERSION;
//=== VK_KHR_present_wait ===
VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentWaitExtensionName = VK_KHR_PRESENT_WAIT_EXTENSION_NAME;
@@ -8280,6 +8282,10 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_CONSTEXPR_INLINE auto EXTNonSeamlessCubeMapExtensionName = VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME;
VULKAN_HPP_CONSTEXPR_INLINE auto EXTNonSeamlessCubeMapSpecVersion = VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION;
+ //=== VK_ARM_render_pass_striped ===
+ VULKAN_HPP_CONSTEXPR_INLINE auto ARMRenderPassStripedExtensionName = VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME;
+ VULKAN_HPP_CONSTEXPR_INLINE auto ARMRenderPassStripedSpecVersion = VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION;
+
//=== VK_QCOM_fragment_density_map_offset ===
VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFragmentDensityMapOffsetExtensionName = VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME;
VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFragmentDensityMapOffsetSpecVersion = VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION;
@@ -8394,6 +8400,10 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_CONSTEXPR_INLINE auto EXTMutableDescriptorTypeExtensionName = VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME;
VULKAN_HPP_CONSTEXPR_INLINE auto EXTMutableDescriptorTypeSpecVersion = VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION;
+ //=== VK_EXT_layer_settings ===
+ VULKAN_HPP_CONSTEXPR_INLINE auto EXTLayerSettingsExtensionName = VK_EXT_LAYER_SETTINGS_EXTENSION_NAME;
+ VULKAN_HPP_CONSTEXPR_INLINE auto EXTLayerSettingsSpecVersion = VK_EXT_LAYER_SETTINGS_SPEC_VERSION;
+
//=== VK_ARM_shader_core_builtins ===
VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderCoreBuiltinsExtensionName = VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME;
VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderCoreBuiltinsSpecVersion = VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION;
@@ -13997,6 +14007,14 @@ namespace VULKAN_HPP_NAMESPACE
value = true
};
};
+ template <>
+ struct StructExtends<PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI, PhysicalDeviceClusterCullingShaderFeaturesHUAWEI>
+ {
+ enum
+ {
+ value = true
+ };
+ };
//=== VK_EXT_border_color_swizzle ===
template <>
@@ -14174,6 +14192,56 @@ namespace VULKAN_HPP_NAMESPACE
};
};
+ //=== VK_ARM_render_pass_striped ===
+ template <>
+ struct StructExtends<PhysicalDeviceRenderPassStripedFeaturesARM, PhysicalDeviceFeatures2>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<PhysicalDeviceRenderPassStripedFeaturesARM, DeviceCreateInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<PhysicalDeviceRenderPassStripedPropertiesARM, PhysicalDeviceProperties2>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<RenderPassStripeBeginInfoARM, RenderingInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<RenderPassStripeBeginInfoARM, RenderPassBeginInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<RenderPassStripeSubmitInfoARM, CommandBufferSubmitInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+
//=== VK_QCOM_fragment_density_map_offset ===
template <>
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, PhysicalDeviceFeatures2>
@@ -14950,6 +15018,16 @@ namespace VULKAN_HPP_NAMESPACE
};
};
+ //=== VK_EXT_layer_settings ===
+ template <>
+ struct StructExtends<LayerSettingsCreateInfoEXT, InstanceCreateInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+
//=== VK_ARM_shader_core_builtins ===
template <>
struct StructExtends<PhysicalDeviceShaderCoreBuiltinsFeaturesARM, PhysicalDeviceFeatures2>
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_core.h b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_core.h
index bc0949c80b..e19dd1b835 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_core.h
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_core.h
@@ -69,7 +69,7 @@ extern "C" {
#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
// Version of this file
-#define VK_HEADER_VERSION 271
+#define VK_HEADER_VERSION 272
// Complete version of this file
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)
@@ -1037,6 +1037,7 @@ typedef enum VkStructureType {
#endif
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000,
VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000,
@@ -1051,6 +1052,11 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001,
+ VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002,
+ VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003,
+ VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001,
VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002,
@@ -1117,6 +1123,7 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000,
VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002,
+ VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000,
@@ -11361,7 +11368,7 @@ typedef struct VkExportMemoryAllocateInfoNV {
// VK_EXT_validation_flags is a preprocessor guard. Do not pass it to API calls.
#define VK_EXT_validation_flags 1
-#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2
+#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 3
#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
typedef enum VkValidationCheckEXT {
@@ -13762,7 +13769,7 @@ typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
// VK_EXT_validation_features is a preprocessor guard. Do not pass it to API calls.
#define VK_EXT_validation_features 1
-#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5
+#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 6
#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
typedef enum VkValidationFeatureEnableEXT {
@@ -16503,7 +16510,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetMicromapBuildSizesEXT(
// VK_HUAWEI_cluster_culling_shader is a preprocessor guard. Do not pass it to API calls.
#define VK_HUAWEI_cluster_culling_shader 1
-#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 2
+#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 3
#define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME "VK_HUAWEI_cluster_culling_shader"
typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
VkStructureType sType;
@@ -16521,6 +16528,12 @@ typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
VkDeviceSize indirectBufferOffsetAlignment;
} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
+typedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 clusterShadingRate;
+} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
+
typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterIndirectHUAWEI)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
@@ -16706,6 +16719,45 @@ typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
+// VK_ARM_render_pass_striped is a preprocessor guard. Do not pass it to API calls.
+#define VK_ARM_render_pass_striped 1
+#define VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION 1
+#define VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME "VK_ARM_render_pass_striped"
+typedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 renderPassStriped;
+} VkPhysicalDeviceRenderPassStripedFeaturesARM;
+
+typedef struct VkPhysicalDeviceRenderPassStripedPropertiesARM {
+ VkStructureType sType;
+ void* pNext;
+ VkExtent2D renderPassStripeGranularity;
+ uint32_t maxRenderPassStripes;
+} VkPhysicalDeviceRenderPassStripedPropertiesARM;
+
+typedef struct VkRenderPassStripeInfoARM {
+ VkStructureType sType;
+ const void* pNext;
+ VkRect2D stripeArea;
+} VkRenderPassStripeInfoARM;
+
+typedef struct VkRenderPassStripeBeginInfoARM {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t stripeInfoCount;
+ VkRenderPassStripeInfoARM* pStripeInfos;
+} VkRenderPassStripeBeginInfoARM;
+
+typedef struct VkRenderPassStripeSubmitInfoARM {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t stripeSemaphoreInfoCount;
+ const VkSemaphoreSubmitInfo* pStripeSemaphoreInfos;
+} VkRenderPassStripeSubmitInfoARM;
+
+
+
// VK_QCOM_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls.
#define VK_QCOM_fragment_density_map_offset 1
#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1
@@ -17744,6 +17796,39 @@ typedef struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_EXT_mutable_descriptor_type"
+// VK_EXT_layer_settings is a preprocessor guard. Do not pass it to API calls.
+#define VK_EXT_layer_settings 1
+#define VK_EXT_LAYER_SETTINGS_SPEC_VERSION 2
+#define VK_EXT_LAYER_SETTINGS_EXTENSION_NAME "VK_EXT_layer_settings"
+
+typedef enum VkLayerSettingTypeEXT {
+ VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0,
+ VK_LAYER_SETTING_TYPE_INT32_EXT = 1,
+ VK_LAYER_SETTING_TYPE_INT64_EXT = 2,
+ VK_LAYER_SETTING_TYPE_UINT32_EXT = 3,
+ VK_LAYER_SETTING_TYPE_UINT64_EXT = 4,
+ VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5,
+ VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6,
+ VK_LAYER_SETTING_TYPE_STRING_EXT = 7,
+ VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
+} VkLayerSettingTypeEXT;
+typedef struct VkLayerSettingEXT {
+ const char* pLayerName;
+ const char* pSettingName;
+ VkLayerSettingTypeEXT type;
+ uint32_t valueCount;
+ const void* pValues;
+} VkLayerSettingEXT;
+
+typedef struct VkLayerSettingsCreateInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t settingCount;
+ const VkLayerSettingEXT* pSettings;
+} VkLayerSettingsCreateInfoEXT;
+
+
+
// VK_ARM_shader_core_builtins is a preprocessor guard. Do not pass it to API calls.
#define VK_ARM_shader_core_builtins 1
#define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp
index 6ca3878a6f..812b528ade 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp
@@ -1260,6 +1260,7 @@ namespace VULKAN_HPP_NAMESPACE
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI,
ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI,
+ ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI,
ePhysicalDeviceBorderColorSwizzleFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
eSamplerBorderColorComponentMappingCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
@@ -1278,6 +1279,11 @@ namespace VULKAN_HPP_NAMESPACE
eDescriptorSetLayoutHostMappingInfoVALVE = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE,
ePhysicalDeviceDepthClampZeroOneFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT,
ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT,
+ ePhysicalDeviceRenderPassStripedFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM,
+ ePhysicalDeviceRenderPassStripedPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM,
+ eRenderPassStripeBeginInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM,
+ eRenderPassStripeInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM,
+ eRenderPassStripeSubmitInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM,
ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM,
ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM,
eSubpassFragmentDensityMapOffsetEndInfoQCOM = VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM,
@@ -1347,6 +1353,7 @@ namespace VULKAN_HPP_NAMESPACE
ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV,
ePhysicalDeviceMutableDescriptorTypeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
eMutableDescriptorTypeCreateInfoEXT = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
+ eLayerSettingsCreateInfoEXT = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT,
ePhysicalDeviceShaderCoreBuiltinsFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM,
ePhysicalDeviceShaderCoreBuiltinsPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM,
ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT,
@@ -7103,6 +7110,20 @@ namespace VULKAN_HPP_NAMESPACE
eReorder = VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV
};
+ //=== VK_EXT_layer_settings ===
+
+ enum class LayerSettingTypeEXT
+ {
+ eBool32 = VK_LAYER_SETTING_TYPE_BOOL32_EXT,
+ eInt32 = VK_LAYER_SETTING_TYPE_INT32_EXT,
+ eInt64 = VK_LAYER_SETTING_TYPE_INT64_EXT,
+ eUint32 = VK_LAYER_SETTING_TYPE_UINT32_EXT,
+ eUint64 = VK_LAYER_SETTING_TYPE_UINT64_EXT,
+ eFloat32 = VK_LAYER_SETTING_TYPE_FLOAT32_EXT,
+ eFloat64 = VK_LAYER_SETTING_TYPE_FLOAT64_EXT,
+ eString = VK_LAYER_SETTING_TYPE_STRING_EXT
+ };
+
//=== VK_NV_low_latency2 ===
enum class LatencyMarkerNV
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_extension_inspection.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_extension_inspection.hpp
index 85a05c9ee5..3e9a4d3aa4 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_extension_inspection.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_extension_inspection.hpp
@@ -53,7 +53,7 @@ namespace VULKAN_HPP_NAMESPACE
#if defined( VK_USE_PLATFORM_WIN32_KHR )
{ "VK_NV_external_memory_win32", "VK_KHR_external_memory_win32"},
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
-{ "VK_EXT_validation_flags", "VK_EXT_validation_features"},
+{ "VK_EXT_validation_flags", "VK_EXT_layer_settings"},
{ "VK_EXT_shader_subgroup_ballot", "VK_VERSION_1_2"},
{ "VK_EXT_shader_subgroup_vote", "VK_VERSION_1_1"},
#if defined( VK_USE_PLATFORM_IOS_MVK )
@@ -63,7 +63,8 @@ namespace VULKAN_HPP_NAMESPACE
{ "VK_MVK_macos_surface", "VK_EXT_metal_surface"},
#endif /*VK_USE_PLATFORM_MACOS_MVK*/
{ "VK_AMD_gpu_shader_int16", "VK_KHR_shader_float16_int8"},
-{ "VK_EXT_buffer_device_address", "VK_KHR_buffer_device_address"} };
+{ "VK_EXT_buffer_device_address", "VK_KHR_buffer_device_address"},
+{ "VK_EXT_validation_features", "VK_EXT_layer_settings"} };
return deprecatedExtensions;
}
@@ -375,6 +376,7 @@ namespace VULKAN_HPP_NAMESPACE
"VK_VALVE_descriptor_set_host_mapping",
"VK_EXT_depth_clamp_zero_one",
"VK_EXT_non_seamless_cube_map",
+"VK_ARM_render_pass_striped",
"VK_QCOM_fragment_density_map_offset",
"VK_NV_copy_memory_indirect",
"VK_NV_memory_decompression",
@@ -490,7 +492,8 @@ namespace VULKAN_HPP_NAMESPACE
#endif /*VK_USE_PLATFORM_SCREEN_QNX*/
"VK_KHR_portability_enumeration",
"VK_GOOGLE_surfaceless_query",
-"VK_LUNARG_direct_driver_loading" };
+"VK_LUNARG_direct_driver_loading",
+"VK_EXT_layer_settings" };
return instanceExtensions;
}
@@ -786,6 +789,7 @@ namespace VULKAN_HPP_NAMESPACE
{ "VK_VALVE_descriptor_set_host_mapping", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", } } } } },
{ "VK_EXT_depth_clamp_zero_one", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", } } } } },
{ "VK_EXT_non_seamless_cube_map", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", } } } } },
+{ "VK_ARM_render_pass_striped", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", "VK_KHR_synchronization2", } } } } },
{ "VK_QCOM_fragment_density_map_offset", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", "VK_EXT_fragment_density_map", } } } } },
{ "VK_NV_copy_memory_indirect", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", "VK_KHR_buffer_device_address", } } } } },
{ "VK_NV_memory_decompression", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", "VK_KHR_buffer_device_address", } } } } },
@@ -991,7 +995,7 @@ namespace VULKAN_HPP_NAMESPACE
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
if ( extension == "VK_EXT_validation_flags" )
{
- return "VK_EXT_validation_features";
+ return "VK_EXT_layer_settings";
}
if ( extension == "VK_EXT_shader_subgroup_ballot" )
{
@@ -1021,6 +1025,10 @@ namespace VULKAN_HPP_NAMESPACE
{
return "VK_KHR_buffer_device_address";
}
+ if ( extension == "VK_EXT_validation_features" )
+ {
+ return "VK_EXT_layer_settings";
+ }
return "";
}
@@ -1367,7 +1375,7 @@ namespace VULKAN_HPP_NAMESPACE
#if defined( VK_USE_PLATFORM_MACOS_MVK )
( extension == "VK_MVK_macos_surface" ) ||
#endif /*VK_USE_PLATFORM_MACOS_MVK*/
- ( extension == "VK_AMD_gpu_shader_int16" ) || ( extension == "VK_EXT_buffer_device_address" );
+ ( extension == "VK_AMD_gpu_shader_int16" ) || ( extension == "VK_EXT_buffer_device_address" ) || ( extension == "VK_EXT_validation_features" );
}
VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeviceExtension( std::string const & extension )
@@ -1534,7 +1542,7 @@ namespace VULKAN_HPP_NAMESPACE
( extension == "VK_EXT_border_color_swizzle" ) || ( extension == "VK_EXT_pageable_device_local_memory" ) || ( extension == "VK_KHR_maintenance4" ) ||
( extension == "VK_ARM_shader_core_properties" ) || ( extension == "VK_ARM_scheduling_controls" ) ||
( extension == "VK_EXT_image_sliced_view_of_3d" ) || ( extension == "VK_VALVE_descriptor_set_host_mapping" ) ||
- ( extension == "VK_EXT_depth_clamp_zero_one" ) || ( extension == "VK_EXT_non_seamless_cube_map" ) ||
+ ( extension == "VK_EXT_depth_clamp_zero_one" ) || ( extension == "VK_EXT_non_seamless_cube_map" ) || ( extension == "VK_ARM_render_pass_striped" ) ||
( extension == "VK_QCOM_fragment_density_map_offset" ) || ( extension == "VK_NV_copy_memory_indirect" ) ||
( extension == "VK_NV_memory_decompression" ) || ( extension == "VK_NV_device_generated_commands_compute" ) ||
( extension == "VK_NV_linear_color_attachment" ) || ( extension == "VK_EXT_image_compression_control_swapchain" ) ||
@@ -1618,7 +1626,7 @@ namespace VULKAN_HPP_NAMESPACE
|| ( extension == "VK_QNX_screen_surface" )
#endif /*VK_USE_PLATFORM_SCREEN_QNX*/
|| ( extension == "VK_KHR_portability_enumeration" ) || ( extension == "VK_GOOGLE_surfaceless_query" ) ||
- ( extension == "VK_LUNARG_direct_driver_loading" );
+ ( extension == "VK_LUNARG_direct_driver_loading" ) || ( extension == "VK_EXT_layer_settings" );
}
VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isObsoletedExtension( std::string const & extension )
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_handles.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_handles.hpp
index 22c36696a3..9f234fa174 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_handles.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_handles.hpp
@@ -1519,6 +1519,7 @@ namespace VULKAN_HPP_NAMESPACE
//=== VK_HUAWEI_cluster_culling_shader ===
struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
+ struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
//=== VK_EXT_border_color_swizzle ===
struct PhysicalDeviceBorderColorSwizzleFeaturesEXT;
@@ -1550,6 +1551,13 @@ namespace VULKAN_HPP_NAMESPACE
//=== VK_EXT_non_seamless_cube_map ===
struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
+ //=== VK_ARM_render_pass_striped ===
+ struct PhysicalDeviceRenderPassStripedFeaturesARM;
+ struct PhysicalDeviceRenderPassStripedPropertiesARM;
+ struct RenderPassStripeBeginInfoARM;
+ struct RenderPassStripeInfoARM;
+ struct RenderPassStripeSubmitInfoARM;
+
//=== VK_QCOM_fragment_density_map_offset ===
struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
@@ -1687,6 +1695,10 @@ namespace VULKAN_HPP_NAMESPACE
struct MutableDescriptorTypeCreateInfoEXT;
using MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
+ //=== VK_EXT_layer_settings ===
+ struct LayerSettingsCreateInfoEXT;
+ struct LayerSettingEXT;
+
//=== VK_ARM_shader_core_builtins ===
struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM;
struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM;
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_hash.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_hash.hpp
index f9e94ee4a8..3df3fd5507 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_hash.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_hash.hpp
@@ -6501,6 +6501,41 @@ namespace std
}
};
+ template <>
+ struct hash<VULKAN_HPP_NAMESPACE::LayerSettingEXT>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::LayerSettingEXT const & layerSettingEXT ) const VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ for ( const char * p = layerSettingEXT.pLayerName; *p != '\0'; ++p )
+ {
+ VULKAN_HPP_HASH_COMBINE( seed, *p );
+ }
+ for ( const char * p = layerSettingEXT.pSettingName; *p != '\0'; ++p )
+ {
+ VULKAN_HPP_HASH_COMBINE( seed, *p );
+ }
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingEXT.type );
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingEXT.valueCount );
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingEXT.pValues );
+ return seed;
+ }
+ };
+
+ template <>
+ struct hash<VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT const & layerSettingsCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.settingCount );
+ VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.pSettings );
+ return seed;
+ }
+ };
+
# if defined( VK_USE_PLATFORM_MACOS_MVK )
template <>
struct hash<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK>
@@ -7530,6 +7565,21 @@ namespace std
};
template <>
+ struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>
+ {
+ std::size_t
+ operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI ) const
+ VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.clusterShadingRate );
+ return seed;
+ }
+ };
+
+ template <>
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD>
{
std::size_t
@@ -10612,6 +10662,35 @@ namespace std
};
template <>
+ struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM const & physicalDeviceRenderPassStripedFeaturesARM ) const
+ VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedFeaturesARM.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedFeaturesARM.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedFeaturesARM.renderPassStriped );
+ return seed;
+ }
+ };
+
+ template <>
+ struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM const & physicalDeviceRenderPassStripedPropertiesARM ) const
+ VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.renderPassStripeGranularity );
+ VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.maxRenderPassStripes );
+ return seed;
+ }
+ };
+
+ template <>
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>
{
std::size_t
@@ -13531,6 +13610,63 @@ namespace std
};
template <>
+ struct hash<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM const & renderPassStripeInfoARM ) const VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeInfoARM.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeInfoARM.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeInfoARM.stripeArea );
+ return seed;
+ }
+ };
+
+ template <>
+ struct hash<VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM const & renderPassStripeBeginInfoARM ) const VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.stripeInfoCount );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.pStripeInfos );
+ return seed;
+ }
+ };
+
+ template <>
+ struct hash<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const & semaphoreSubmitInfo ) const VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.semaphore );
+ VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.value );
+ VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.stageMask );
+ VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.deviceIndex );
+ return seed;
+ }
+ };
+
+ template <>
+ struct hash<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM>
+ {
+ std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM const & renderPassStripeSubmitInfoARM ) const VULKAN_HPP_NOEXCEPT
+ {
+ std::size_t seed = 0;
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.sType );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.pNext );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.stripeSemaphoreInfoCount );
+ VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.pStripeSemaphoreInfos );
+ return seed;
+ }
+ };
+
+ template <>
struct hash<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT>
{
std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT const & renderPassSubpassFeedbackInfoEXT ) const VULKAN_HPP_NOEXCEPT
@@ -13948,22 +14084,6 @@ namespace std
};
template <>
- struct hash<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo>
- {
- std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const & semaphoreSubmitInfo ) const VULKAN_HPP_NOEXCEPT
- {
- std::size_t seed = 0;
- VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.sType );
- VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.pNext );
- VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.semaphore );
- VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.value );
- VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.stageMask );
- VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.deviceIndex );
- return seed;
- }
- };
-
- template <>
struct hash<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo>
{
std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const & semaphoreTypeCreateInfo ) const VULKAN_HPP_NOEXCEPT
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_static_assertions.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_static_assertions.hpp
index 71905f8da4..263f80c106 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_static_assertions.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_static_assertions.hpp
@@ -6222,6 +6222,14 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Physical
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI>::value,
"PhysicalDeviceClusterCullingShaderPropertiesHUAWEI is not nothrow_move_constructible!" );
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI ) ==
+ sizeof( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>::value,
+ "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>::value,
+ "PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI is not nothrow_move_constructible!" );
+
//=== VK_EXT_border_color_swizzle ===
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT ) ==
@@ -6343,6 +6351,41 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Physical
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT>::value,
"PhysicalDeviceNonSeamlessCubeMapFeaturesEXT is not nothrow_move_constructible!" );
+//=== VK_ARM_render_pass_striped ===
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM ) == sizeof( VkPhysicalDeviceRenderPassStripedFeaturesARM ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM>::value,
+ "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM>::value,
+ "PhysicalDeviceRenderPassStripedFeaturesARM is not nothrow_move_constructible!" );
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM ) ==
+ sizeof( VkPhysicalDeviceRenderPassStripedPropertiesARM ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM>::value,
+ "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM>::value,
+ "PhysicalDeviceRenderPassStripedPropertiesARM is not nothrow_move_constructible!" );
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM ) == sizeof( VkRenderPassStripeBeginInfoARM ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM>::value, "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM>::value,
+ "RenderPassStripeBeginInfoARM is not nothrow_move_constructible!" );
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM ) == sizeof( VkRenderPassStripeInfoARM ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM>::value, "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM>::value,
+ "RenderPassStripeInfoARM is not nothrow_move_constructible!" );
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM ) == sizeof( VkRenderPassStripeSubmitInfoARM ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM>::value, "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM>::value,
+ "RenderPassStripeSubmitInfoARM is not nothrow_move_constructible!" );
+
//=== VK_QCOM_fragment_density_map_offset ===
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ) ==
@@ -6932,6 +6975,19 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MutableD
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT>::value,
"MutableDescriptorTypeCreateInfoEXT is not nothrow_move_constructible!" );
+//=== VK_EXT_layer_settings ===
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT ) == sizeof( VkLayerSettingsCreateInfoEXT ),
+ "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT>::value, "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT>::value,
+ "LayerSettingsCreateInfoEXT is not nothrow_move_constructible!" );
+
+VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerSettingEXT ) == sizeof( VkLayerSettingEXT ), "struct and wrapper have different size!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::LayerSettingEXT>::value, "struct wrapper is not a standard layout!" );
+VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::LayerSettingEXT>::value,
+ "LayerSettingEXT is not nothrow_move_constructible!" );
+
//=== VK_ARM_shader_core_builtins ===
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM ) ==
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_structs.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_structs.hpp
index 2669391761..1eff4a7e3d 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_structs.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_structs.hpp
@@ -49503,6 +49503,280 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
};
+ struct LayerSettingEXT
+ {
+ using NativeType = VkLayerSettingEXT;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR LayerSettingEXT( const char * pLayerName_ = {},
+ const char * pSettingName_ = {},
+ VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_ = VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT::eBool32,
+ uint32_t valueCount_ = {},
+ const void * pValues_ = {} ) VULKAN_HPP_NOEXCEPT
+ : pLayerName( pLayerName_ )
+ , pSettingName( pSettingName_ )
+ , type( type_ )
+ , valueCount( valueCount_ )
+ , pValues( pValues_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR LayerSettingEXT( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ LayerSettingEXT( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT : LayerSettingEXT( *reinterpret_cast<LayerSettingEXT const *>( &rhs ) ) {}
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ template <typename T>
+ LayerSettingEXT( const char * pLayerName_,
+ const char * pSettingName_,
+ VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_,
+ VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_ )
+ : pLayerName( pLayerName_ )
+ , pSettingName( pSettingName_ )
+ , type( type_ )
+ , valueCount( static_cast<uint32_t>( values_.size() * sizeof( T ) ) )
+ , pValues( values_.data() )
+ {
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+
+ LayerSettingEXT & operator=( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ LayerSettingEXT & operator=( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerSettingEXT const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPLayerName( const char * pLayerName_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pLayerName = pLayerName_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPSettingName( const char * pSettingName_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pSettingName = pSettingName_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setType( VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
+ {
+ type = type_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setValueCount( uint32_t valueCount_ ) VULKAN_HPP_NOEXCEPT
+ {
+ valueCount = valueCount_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPValues( const void * pValues_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pValues = pValues_;
+ return *this;
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ template <typename T>
+ LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_ ) VULKAN_HPP_NOEXCEPT
+ {
+ valueCount = static_cast<uint32_t>( values_.size() * sizeof( T ) );
+ pValues = values_.data();
+ return *this;
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkLayerSettingEXT const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkLayerSettingEXT *>( this );
+ }
+
+ operator VkLayerSettingEXT &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkLayerSettingEXT *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<const char * const &, const char * const &, VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT const &, uint32_t const &, const void * const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( pLayerName, pSettingName, type, valueCount, pValues );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ std::strong_ordering operator<=>( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ if ( pLayerName != rhs.pLayerName )
+ if ( auto cmp = strcmp( pLayerName, rhs.pLayerName ); cmp != 0 )
+ return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
+ if ( pSettingName != rhs.pSettingName )
+ if ( auto cmp = strcmp( pSettingName, rhs.pSettingName ); cmp != 0 )
+ return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
+ if ( auto cmp = type <=> rhs.type; cmp != 0 )
+ return cmp;
+ if ( auto cmp = valueCount <=> rhs.valueCount; cmp != 0 )
+ return cmp;
+ if ( auto cmp = pValues <=> rhs.pValues; cmp != 0 )
+ return cmp;
+
+ return std::strong_ordering::equivalent;
+ }
+#endif
+
+ bool operator==( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return ( ( pLayerName == rhs.pLayerName ) || ( strcmp( pLayerName, rhs.pLayerName ) == 0 ) ) &&
+ ( ( pSettingName == rhs.pSettingName ) || ( strcmp( pSettingName, rhs.pSettingName ) == 0 ) ) && ( type == rhs.type ) &&
+ ( valueCount == rhs.valueCount ) && ( pValues == rhs.pValues );
+ }
+
+ bool operator!=( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+
+ public:
+ const char * pLayerName = {};
+ const char * pSettingName = {};
+ VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type = VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT::eBool32;
+ uint32_t valueCount = {};
+ const void * pValues = {};
+ };
+
+ struct LayerSettingsCreateInfoEXT
+ {
+ using NativeType = VkLayerSettingsCreateInfoEXT;
+
+ static const bool allowDuplicate = true;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLayerSettingsCreateInfoEXT;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( uint32_t settingCount_ = {},
+ const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings_ = {},
+ const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , settingCount( settingCount_ )
+ , pSettings( pSettings_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ LayerSettingsCreateInfoEXT( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
+ : LayerSettingsCreateInfoEXT( *reinterpret_cast<LayerSettingsCreateInfoEXT const *>( &rhs ) )
+ {
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ LayerSettingsCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::LayerSettingEXT> const & settings_,
+ const void * pNext_ = nullptr )
+ : pNext( pNext_ ), settingCount( static_cast<uint32_t>( settings_.size() ) ), pSettings( settings_.data() )
+ {
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+
+ LayerSettingsCreateInfoEXT & operator=( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ LayerSettingsCreateInfoEXT & operator=( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setSettingCount( uint32_t settingCount_ ) VULKAN_HPP_NOEXCEPT
+ {
+ settingCount = settingCount_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPSettings( const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pSettings = pSettings_;
+ return *this;
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ LayerSettingsCreateInfoEXT &
+ setSettings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::LayerSettingEXT> const & settings_ ) VULKAN_HPP_NOEXCEPT
+ {
+ settingCount = static_cast<uint32_t>( settings_.size() );
+ pSettings = settings_.data();
+ return *this;
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkLayerSettingsCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkLayerSettingsCreateInfoEXT *>( this );
+ }
+
+ operator VkLayerSettingsCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkLayerSettingsCreateInfoEXT *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::LayerSettingEXT * const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, settingCount, pSettings );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( LayerSettingsCreateInfoEXT const & ) const = default;
+#else
+ bool operator==( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( settingCount == rhs.settingCount ) && ( pSettings == rhs.pSettings );
+# endif
+ }
+
+ bool operator!=( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eLayerSettingsCreateInfoEXT;
+ const void * pNext = {};
+ uint32_t settingCount = {};
+ const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::eLayerSettingsCreateInfoEXT>
+ {
+ using Type = LayerSettingsCreateInfoEXT;
+ };
+
#if defined( VK_USE_PLATFORM_MACOS_MVK )
struct MacOSSurfaceCreateInfoMVK
{
@@ -57243,6 +57517,106 @@ namespace VULKAN_HPP_NAMESPACE
using Type = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
};
+ struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI
+ {
+ using NativeType = VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate_ = {},
+ void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , clusterShadingRate( clusterShadingRate_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR
+ PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
+ : PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *>( &rhs ) )
+ {
+ }
+
+ PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &
+ operator=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &
+ setClusterShadingRate( VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate_ ) VULKAN_HPP_NOEXCEPT
+ {
+ clusterShadingRate = clusterShadingRate_;
+ return *this;
+ }
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *>( this );
+ }
+
+ operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, clusterShadingRate );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & ) const = default;
+#else
+ bool operator==( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clusterShadingRate == rhs.clusterShadingRate );
+# endif
+ }
+
+ bool operator!=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
+ void * pNext = {};
+ VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>
+ {
+ using Type = PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
+ };
+
struct PhysicalDeviceCoherentMemoryFeaturesAMD
{
using NativeType = VkPhysicalDeviceCoherentMemoryFeaturesAMD;
@@ -77931,6 +78305,191 @@ namespace VULKAN_HPP_NAMESPACE
using Type = PhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
};
+ struct PhysicalDeviceRenderPassStripedFeaturesARM
+ {
+ using NativeType = VkPhysicalDeviceRenderPassStripedFeaturesARM;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped_ = {},
+ void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , renderPassStriped( renderPassStriped_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ PhysicalDeviceRenderPassStripedFeaturesARM( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ : PhysicalDeviceRenderPassStripedFeaturesARM( *reinterpret_cast<PhysicalDeviceRenderPassStripedFeaturesARM const *>( &rhs ) )
+ {
+ }
+
+ PhysicalDeviceRenderPassStripedFeaturesARM & operator=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ PhysicalDeviceRenderPassStripedFeaturesARM & operator=( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM &
+ setRenderPassStriped( VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped_ ) VULKAN_HPP_NOEXCEPT
+ {
+ renderPassStriped = renderPassStriped_;
+ return *this;
+ }
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkPhysicalDeviceRenderPassStripedFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkPhysicalDeviceRenderPassStripedFeaturesARM *>( this );
+ }
+
+ operator VkPhysicalDeviceRenderPassStripedFeaturesARM &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkPhysicalDeviceRenderPassStripedFeaturesARM *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, renderPassStriped );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( PhysicalDeviceRenderPassStripedFeaturesARM const & ) const = default;
+#else
+ bool operator==( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStriped == rhs.renderPassStriped );
+# endif
+ }
+
+ bool operator!=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM;
+ void * pNext = {};
+ VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM>
+ {
+ using Type = PhysicalDeviceRenderPassStripedFeaturesARM;
+ };
+
+ struct PhysicalDeviceRenderPassStripedPropertiesARM
+ {
+ using NativeType = VkPhysicalDeviceRenderPassStripedPropertiesARM;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( VULKAN_HPP_NAMESPACE::Extent2D renderPassStripeGranularity_ = {},
+ uint32_t maxRenderPassStripes_ = {},
+ void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , renderPassStripeGranularity( renderPassStripeGranularity_ )
+ , maxRenderPassStripes( maxRenderPassStripes_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ PhysicalDeviceRenderPassStripedPropertiesARM( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ : PhysicalDeviceRenderPassStripedPropertiesARM( *reinterpret_cast<PhysicalDeviceRenderPassStripedPropertiesARM const *>( &rhs ) )
+ {
+ }
+
+ PhysicalDeviceRenderPassStripedPropertiesARM & operator=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ PhysicalDeviceRenderPassStripedPropertiesARM & operator=( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM const *>( &rhs );
+ return *this;
+ }
+
+ operator VkPhysicalDeviceRenderPassStripedPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkPhysicalDeviceRenderPassStripedPropertiesARM *>( this );
+ }
+
+ operator VkPhysicalDeviceRenderPassStripedPropertiesARM &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkPhysicalDeviceRenderPassStripedPropertiesARM *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, renderPassStripeGranularity, maxRenderPassStripes );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( PhysicalDeviceRenderPassStripedPropertiesARM const & ) const = default;
+#else
+ bool operator==( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStripeGranularity == rhs.renderPassStripeGranularity ) &&
+ ( maxRenderPassStripes == rhs.maxRenderPassStripes );
+# endif
+ }
+
+ bool operator!=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM;
+ void * pNext = {};
+ VULKAN_HPP_NAMESPACE::Extent2D renderPassStripeGranularity = {};
+ uint32_t maxRenderPassStripes = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM>
+ {
+ using Type = PhysicalDeviceRenderPassStripedPropertiesARM;
+ };
+
struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV
{
using NativeType = VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
@@ -100060,6 +100619,484 @@ namespace VULKAN_HPP_NAMESPACE
using Type = RenderPassSampleLocationsBeginInfoEXT;
};
+ struct RenderPassStripeInfoARM
+ {
+ using NativeType = VkRenderPassStripeInfoARM;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassStripeInfoARM;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( VULKAN_HPP_NAMESPACE::Rect2D stripeArea_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , stripeArea( stripeArea_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ RenderPassStripeInfoARM( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ : RenderPassStripeInfoARM( *reinterpret_cast<RenderPassStripeInfoARM const *>( &rhs ) )
+ {
+ }
+
+ RenderPassStripeInfoARM & operator=( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ RenderPassStripeInfoARM & operator=( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setStripeArea( VULKAN_HPP_NAMESPACE::Rect2D const & stripeArea_ ) VULKAN_HPP_NOEXCEPT
+ {
+ stripeArea = stripeArea_;
+ return *this;
+ }
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkRenderPassStripeInfoARM const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkRenderPassStripeInfoARM *>( this );
+ }
+
+ operator VkRenderPassStripeInfoARM &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkRenderPassStripeInfoARM *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Rect2D const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, stripeArea );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( RenderPassStripeInfoARM const & ) const = default;
+#else
+ bool operator==( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeArea == rhs.stripeArea );
+# endif
+ }
+
+ bool operator!=( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassStripeInfoARM;
+ const void * pNext = {};
+ VULKAN_HPP_NAMESPACE::Rect2D stripeArea = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::eRenderPassStripeInfoARM>
+ {
+ using Type = RenderPassStripeInfoARM;
+ };
+
+ struct RenderPassStripeBeginInfoARM
+ {
+ using NativeType = VkRenderPassStripeBeginInfoARM;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassStripeBeginInfoARM;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( uint32_t stripeInfoCount_ = {},
+ VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos_ = {},
+ const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , stripeInfoCount( stripeInfoCount_ )
+ , pStripeInfos( pStripeInfos_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ RenderPassStripeBeginInfoARM( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ : RenderPassStripeBeginInfoARM( *reinterpret_cast<RenderPassStripeBeginInfoARM const *>( &rhs ) )
+ {
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ RenderPassStripeBeginInfoARM( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM> const & stripeInfos_,
+ const void * pNext_ = nullptr )
+ : pNext( pNext_ ), stripeInfoCount( static_cast<uint32_t>( stripeInfos_.size() ) ), pStripeInfos( stripeInfos_.data() )
+ {
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+
+ RenderPassStripeBeginInfoARM & operator=( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ RenderPassStripeBeginInfoARM & operator=( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setStripeInfoCount( uint32_t stripeInfoCount_ ) VULKAN_HPP_NOEXCEPT
+ {
+ stripeInfoCount = stripeInfoCount_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setPStripeInfos( VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pStripeInfos = pStripeInfos_;
+ return *this;
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ RenderPassStripeBeginInfoARM &
+ setStripeInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM> const & stripeInfos_ ) VULKAN_HPP_NOEXCEPT
+ {
+ stripeInfoCount = static_cast<uint32_t>( stripeInfos_.size() );
+ pStripeInfos = stripeInfos_.data();
+ return *this;
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkRenderPassStripeBeginInfoARM const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkRenderPassStripeBeginInfoARM *>( this );
+ }
+
+ operator VkRenderPassStripeBeginInfoARM &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkRenderPassStripeBeginInfoARM *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, stripeInfoCount, pStripeInfos );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( RenderPassStripeBeginInfoARM const & ) const = default;
+#else
+ bool operator==( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeInfoCount == rhs.stripeInfoCount ) && ( pStripeInfos == rhs.pStripeInfos );
+# endif
+ }
+
+ bool operator!=( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassStripeBeginInfoARM;
+ const void * pNext = {};
+ uint32_t stripeInfoCount = {};
+ VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::eRenderPassStripeBeginInfoARM>
+ {
+ using Type = RenderPassStripeBeginInfoARM;
+ };
+
+ struct SemaphoreSubmitInfo
+ {
+ using NativeType = VkSemaphoreSubmitInfo;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSubmitInfo;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {},
+ uint64_t value_ = {},
+ VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ = {},
+ uint32_t deviceIndex_ = {},
+ const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , semaphore( semaphore_ )
+ , value( value_ )
+ , stageMask( stageMask_ )
+ , deviceIndex( deviceIndex_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSubmitInfo( *reinterpret_cast<SemaphoreSubmitInfo const *>( &rhs ) )
+ {
+ }
+
+ SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
+ {
+ semaphore = semaphore_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
+ {
+ value = value_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ ) VULKAN_HPP_NOEXCEPT
+ {
+ stageMask = stageMask_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT
+ {
+ deviceIndex = deviceIndex_;
+ return *this;
+ }
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkSemaphoreSubmitInfo *>( this );
+ }
+
+ operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkSemaphoreSubmitInfo *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
+ const void * const &,
+ VULKAN_HPP_NAMESPACE::Semaphore const &,
+ uint64_t const &,
+ VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
+ uint32_t const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( SemaphoreSubmitInfo const & ) const = default;
+#else
+ bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value ) && ( stageMask == rhs.stageMask ) &&
+ ( deviceIndex == rhs.deviceIndex );
+# endif
+ }
+
+ bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSubmitInfo;
+ const void * pNext = {};
+ VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
+ uint64_t value = {};
+ VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask = {};
+ uint32_t deviceIndex = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::eSemaphoreSubmitInfo>
+ {
+ using Type = SemaphoreSubmitInfo;
+ };
+ using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
+
+ struct RenderPassStripeSubmitInfoARM
+ {
+ using NativeType = VkRenderPassStripeSubmitInfoARM;
+
+ static const bool allowDuplicate = false;
+ static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassStripeSubmitInfoARM;
+
+#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
+ VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( uint32_t stripeSemaphoreInfoCount_ = {},
+ const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos_ = {},
+ const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
+ : pNext( pNext_ )
+ , stripeSemaphoreInfoCount( stripeSemaphoreInfoCount_ )
+ , pStripeSemaphoreInfos( pStripeSemaphoreInfos_ )
+ {
+ }
+
+ VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
+ RenderPassStripeSubmitInfoARM( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ : RenderPassStripeSubmitInfoARM( *reinterpret_cast<RenderPassStripeSubmitInfoARM const *>( &rhs ) )
+ {
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ RenderPassStripeSubmitInfoARM( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & stripeSemaphoreInfos_,
+ const void * pNext_ = nullptr )
+ : pNext( pNext_ )
+ , stripeSemaphoreInfoCount( static_cast<uint32_t>( stripeSemaphoreInfos_.size() ) )
+ , pStripeSemaphoreInfos( stripeSemaphoreInfos_.data() )
+ {
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+
+ RenderPassStripeSubmitInfoARM & operator=( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
+
+ RenderPassStripeSubmitInfoARM & operator=( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
+ {
+ *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM const *>( &rhs );
+ return *this;
+ }
+
+#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pNext = pNext_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfoCount( uint32_t stripeSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
+ {
+ stripeSemaphoreInfoCount = stripeSemaphoreInfoCount_;
+ return *this;
+ }
+
+ VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM &
+ setPStripeSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
+ {
+ pStripeSemaphoreInfos = pStripeSemaphoreInfos_;
+ return *this;
+ }
+
+# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
+ RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfos(
+ VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & stripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
+ {
+ stripeSemaphoreInfoCount = static_cast<uint32_t>( stripeSemaphoreInfos_.size() );
+ pStripeSemaphoreInfos = stripeSemaphoreInfos_.data();
+ return *this;
+ }
+# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
+#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
+
+ operator VkRenderPassStripeSubmitInfoARM const &() const VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<const VkRenderPassStripeSubmitInfoARM *>( this );
+ }
+
+ operator VkRenderPassStripeSubmitInfoARM &() VULKAN_HPP_NOEXCEPT
+ {
+ return *reinterpret_cast<VkRenderPassStripeSubmitInfoARM *>( this );
+ }
+
+#if defined( VULKAN_HPP_USE_REFLECT )
+# if 14 <= VULKAN_HPP_CPP_VERSION
+ auto
+# else
+ std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &>
+# endif
+ reflect() const VULKAN_HPP_NOEXCEPT
+ {
+ return std::tie( sType, pNext, stripeSemaphoreInfoCount, pStripeSemaphoreInfos );
+ }
+#endif
+
+#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
+ auto operator<=>( RenderPassStripeSubmitInfoARM const & ) const = default;
+#else
+ bool operator==( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+# if defined( VULKAN_HPP_USE_REFLECT )
+ return this->reflect() == rhs.reflect();
+# else
+ return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeSemaphoreInfoCount == rhs.stripeSemaphoreInfoCount ) &&
+ ( pStripeSemaphoreInfos == rhs.pStripeSemaphoreInfos );
+# endif
+ }
+
+ bool operator!=( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
+ {
+ return !operator==( rhs );
+ }
+#endif
+
+ public:
+ VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassStripeSubmitInfoARM;
+ const void * pNext = {};
+ uint32_t stripeSemaphoreInfoCount = {};
+ const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos = {};
+ };
+
+ template <>
+ struct CppType<StructureType, StructureType::eRenderPassStripeSubmitInfoARM>
+ {
+ using Type = RenderPassStripeSubmitInfoARM;
+ };
+
struct RenderPassSubpassFeedbackInfoEXT
{
using NativeType = VkRenderPassSubpassFeedbackInfoEXT;
@@ -103486,136 +104523,6 @@ namespace VULKAN_HPP_NAMESPACE
};
using SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
- struct SemaphoreSubmitInfo
- {
- using NativeType = VkSemaphoreSubmitInfo;
-
- static const bool allowDuplicate = false;
- static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSubmitInfo;
-
-#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
- VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {},
- uint64_t value_ = {},
- VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ = {},
- uint32_t deviceIndex_ = {},
- const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
- : pNext( pNext_ )
- , semaphore( semaphore_ )
- , value( value_ )
- , stageMask( stageMask_ )
- , deviceIndex( deviceIndex_ )
- {
- }
-
- VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
-
- SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSubmitInfo( *reinterpret_cast<SemaphoreSubmitInfo const *>( &rhs ) )
- {
- }
-
- SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
-#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
-
- SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
- {
- *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const *>( &rhs );
- return *this;
- }
-
-#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
- VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
- {
- pNext = pNext_;
- return *this;
- }
-
- VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
- {
- semaphore = semaphore_;
- return *this;
- }
-
- VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
- {
- value = value_;
- return *this;
- }
-
- VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ ) VULKAN_HPP_NOEXCEPT
- {
- stageMask = stageMask_;
- return *this;
- }
-
- VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT
- {
- deviceIndex = deviceIndex_;
- return *this;
- }
-#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
-
- operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
- {
- return *reinterpret_cast<const VkSemaphoreSubmitInfo *>( this );
- }
-
- operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
- {
- return *reinterpret_cast<VkSemaphoreSubmitInfo *>( this );
- }
-
-#if defined( VULKAN_HPP_USE_REFLECT )
-# if 14 <= VULKAN_HPP_CPP_VERSION
- auto
-# else
- std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
- const void * const &,
- VULKAN_HPP_NAMESPACE::Semaphore const &,
- uint64_t const &,
- VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
- uint32_t const &>
-# endif
- reflect() const VULKAN_HPP_NOEXCEPT
- {
- return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex );
- }
-#endif
-
-#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
- auto operator<=>( SemaphoreSubmitInfo const & ) const = default;
-#else
- bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
- {
-# if defined( VULKAN_HPP_USE_REFLECT )
- return this->reflect() == rhs.reflect();
-# else
- return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value ) && ( stageMask == rhs.stageMask ) &&
- ( deviceIndex == rhs.deviceIndex );
-# endif
- }
-
- bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
- {
- return !operator==( rhs );
- }
-#endif
-
- public:
- VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSubmitInfo;
- const void * pNext = {};
- VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
- uint64_t value = {};
- VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask = {};
- uint32_t deviceIndex = {};
- };
-
- template <>
- struct CppType<StructureType, StructureType::eSemaphoreSubmitInfo>
- {
- using Type = SemaphoreSubmitInfo;
- };
- using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
-
struct SemaphoreTypeCreateInfo
{
using NativeType = VkSemaphoreTypeCreateInfo;
diff --git a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_to_string.hpp b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_to_string.hpp
index fdbc85bd3c..58f86c97df 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_to_string.hpp
+++ b/third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_to_string.hpp
@@ -4397,6 +4397,7 @@ namespace VULKAN_HPP_NAMESPACE
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
case StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI: return "PhysicalDeviceClusterCullingShaderFeaturesHUAWEI";
case StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI: return "PhysicalDeviceClusterCullingShaderPropertiesHUAWEI";
+ case StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI: return "PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI";
case StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT: return "PhysicalDeviceBorderColorSwizzleFeaturesEXT";
case StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT: return "SamplerBorderColorComponentMappingCreateInfoEXT";
case StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT: return "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT";
@@ -4411,6 +4412,11 @@ namespace VULKAN_HPP_NAMESPACE
case StructureType::eDescriptorSetLayoutHostMappingInfoVALVE: return "DescriptorSetLayoutHostMappingInfoVALVE";
case StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT: return "PhysicalDeviceDepthClampZeroOneFeaturesEXT";
case StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT: return "PhysicalDeviceNonSeamlessCubeMapFeaturesEXT";
+ case StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM: return "PhysicalDeviceRenderPassStripedFeaturesARM";
+ case StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM: return "PhysicalDeviceRenderPassStripedPropertiesARM";
+ case StructureType::eRenderPassStripeBeginInfoARM: return "RenderPassStripeBeginInfoARM";
+ case StructureType::eRenderPassStripeInfoARM: return "RenderPassStripeInfoARM";
+ case StructureType::eRenderPassStripeSubmitInfoARM: return "RenderPassStripeSubmitInfoARM";
case StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM: return "PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM";
case StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM: return "PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM";
case StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM: return "SubpassFragmentDensityMapOffsetEndInfoQCOM";
@@ -4479,6 +4485,7 @@ namespace VULKAN_HPP_NAMESPACE
case StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV: return "PhysicalDeviceExtendedSparseAddressSpacePropertiesNV";
case StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT: return "PhysicalDeviceMutableDescriptorTypeFeaturesEXT";
case StructureType::eMutableDescriptorTypeCreateInfoEXT: return "MutableDescriptorTypeCreateInfoEXT";
+ case StructureType::eLayerSettingsCreateInfoEXT: return "LayerSettingsCreateInfoEXT";
case StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM: return "PhysicalDeviceShaderCoreBuiltinsFeaturesARM";
case StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM: return "PhysicalDeviceShaderCoreBuiltinsPropertiesARM";
case StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT: return "PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT";
@@ -8932,6 +8939,24 @@ namespace VULKAN_HPP_NAMESPACE
}
}
+ //=== VK_EXT_layer_settings ===
+
+ VULKAN_HPP_INLINE std::string to_string( LayerSettingTypeEXT value )
+ {
+ switch ( value )
+ {
+ case LayerSettingTypeEXT::eBool32: return "Bool32";
+ case LayerSettingTypeEXT::eInt32: return "Int32";
+ case LayerSettingTypeEXT::eInt64: return "Int64";
+ case LayerSettingTypeEXT::eUint32: return "Uint32";
+ case LayerSettingTypeEXT::eUint64: return "Uint64";
+ case LayerSettingTypeEXT::eFloat32: return "Float32";
+ case LayerSettingTypeEXT::eFloat64: return "Float64";
+ case LayerSettingTypeEXT::eString: return "String";
+ default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )";
+ }
+ }
+
//=== VK_NV_low_latency2 ===
VULKAN_HPP_INLINE std::string to_string( LatencyMarkerNV value )
diff --git a/third_party/vulkan-deps/vulkan-headers/src/registry/validusage.json b/third_party/vulkan-deps/vulkan-headers/src/registry/validusage.json
index 7c01ab7702..1bd014e450 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/registry/validusage.json
+++ b/third_party/vulkan-deps/vulkan-headers/src/registry/validusage.json
@@ -1,9 +1,9 @@
{
"version info": {
"schema version": 2,
- "api version": "1.3.271",
- "comment": "from git branch: github-main commit: dbad946f7edc9137dbb972ea8e271592e3fb9746",
- "date": "2023-11-27 05:16:04Z"
+ "api version": "1.3.272",
+ "comment": "from git branch: github-main commit: 73207ec2babd7fce921920499ac4427583d7293d",
+ "date": "2023-12-01 10:31:24Z"
},
"validation": {
"vkGetInstanceProcAddr": {
@@ -101,12 +101,12 @@
},
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-pNext",
- "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkDirectDriverLoadingListLUNARG\">VkDirectDriverLoadingListLUNARG</a>, <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>",
+ "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkDirectDriverLoadingListLUNARG\">VkDirectDriverLoadingListLUNARG</a>, <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkLayerSettingsCreateInfoEXT\">VkLayerSettingsCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>",
"page": "vkspec"
},
{
"vuid": "VUID-VkInstanceCreateInfo-sType-unique",
- "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a> or <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
+ "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, or <a href=\"#VkLayerSettingsCreateInfoEXT\">VkLayerSettingsCreateInfoEXT</a>",
"page": "vkspec"
},
{
@@ -179,6 +179,44 @@
}
]
},
+ "VkLayerSettingsCreateInfoEXT": {
+ "core": [
+ {
+ "vuid": "VUID-VkLayerSettingsCreateInfoEXT-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkLayerSettingsCreateInfoEXT-pSettings-parameter",
+ "text": "If <code>settingCount</code> is not <code>0</code>, <code>pSettings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>settingCount</code> valid <a href=\"#VkLayerSettingEXT\">VkLayerSettingEXT</a> structures",
+ "page": "vkspec"
+ }
+ ]
+ },
+ "VkLayerSettingEXT": {
+ "core": [
+ {
+ "vuid": "VUID-VkLayerSettingEXT-pLayerName-parameter",
+ "text": "<code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkLayerSettingEXT-pSettingName-parameter",
+ "text": "<code>pSettingName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkLayerSettingEXT-type-parameter",
+ "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLayerSettingTypeEXT\">VkLayerSettingTypeEXT</a> value",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkLayerSettingEXT-pValues-parameter",
+ "text": "If <code>valueCount</code> is not <code>0</code>, <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>valueCount</code> bytes",
+ "page": "vkspec"
+ }
+ ]
+ },
"VkDirectDriverLoadingListLUNARG": {
"core": [
{
@@ -331,7 +369,7 @@
},
{
"vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
- "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\">VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesKHR\">VkPhysicalDeviceCooperativeMatrixPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectPropertiesNV\">VkPhysicalDeviceCopyMemoryIndirectPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchPropertiesNV\">VkPhysicalDeviceCudaKernelLaunchPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\">VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3PropertiesEXT\">VkPhysicalDeviceExtendedDynamicState3PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV\">VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolvePropertiesANDROID\">VkPhysicalDeviceExternalFormatResolvePropertiesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceImageProcessing2PropertiesQCOM\">VkPhysicalDeviceImageProcessing2PropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingPropertiesQCOM\">VkPhysicalDeviceImageProcessingPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLayeredDriverPropertiesMSFT\">VkPhysicalDeviceLayeredDriverPropertiesMSFT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance5PropertiesKHR\">VkPhysicalDeviceMaintenance5PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionPropertiesNV\">VkPhysicalDeviceMemoryDecompressionPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferPropertiesEXT\">VkPhysicalDeviceNestedCommandBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowPropertiesNV\">VkPhysicalDeviceOpticalFlowPropertiesNV</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV\">VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\">VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesARM\">VkPhysicalDeviceShaderCorePropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderEnqueuePropertiesAMDX\">VkPhysicalDeviceShaderEnqueuePropertiesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectPropertiesEXT\">VkPhysicalDeviceShaderObjectPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShaderTileImagePropertiesEXT\">VkPhysicalDeviceShaderTileImagePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>",
+ "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\">VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesKHR\">VkPhysicalDeviceCooperativeMatrixPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectPropertiesNV\">VkPhysicalDeviceCopyMemoryIndirectPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchPropertiesNV\">VkPhysicalDeviceCudaKernelLaunchPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\">VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3PropertiesEXT\">VkPhysicalDeviceExtendedDynamicState3PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV\">VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolvePropertiesANDROID\">VkPhysicalDeviceExternalFormatResolvePropertiesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceImageProcessing2PropertiesQCOM\">VkPhysicalDeviceImageProcessing2PropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingPropertiesQCOM\">VkPhysicalDeviceImageProcessingPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLayeredDriverPropertiesMSFT\">VkPhysicalDeviceLayeredDriverPropertiesMSFT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance5PropertiesKHR\">VkPhysicalDeviceMaintenance5PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionPropertiesNV\">VkPhysicalDeviceMemoryDecompressionPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferPropertiesEXT\">VkPhysicalDeviceNestedCommandBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowPropertiesNV\">VkPhysicalDeviceOpticalFlowPropertiesNV</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV\">VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\">VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesARM\">VkPhysicalDeviceShaderCorePropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderEnqueuePropertiesAMDX\">VkPhysicalDeviceShaderEnqueuePropertiesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectPropertiesEXT\">VkPhysicalDeviceShaderObjectPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShaderTileImagePropertiesEXT\">VkPhysicalDeviceShaderTileImagePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>",
"page": "vkspec"
},
{
@@ -853,7 +891,7 @@
},
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
- "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceAddressBindingReportFeaturesEXT\">VkPhysicalDeviceAddressBindingReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAmigoProfilingFeaturesSEC\">VkPhysicalDeviceAmigoProfilingFeaturesSEC</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI\">VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesKHR\">VkPhysicalDeviceCooperativeMatrixFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectFeaturesNV\">VkPhysicalDeviceCopyMemoryIndirectFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCubicClampFeaturesQCOM\">VkPhysicalDeviceCubicClampFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCubicWeightsFeaturesQCOM\">VkPhysicalDeviceCubicWeightsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchFeaturesNV\">VkPhysicalDeviceCudaKernelLaunchFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthBiasControlFeaturesEXT\">VkPhysicalDeviceDepthBiasControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampZeroOneFeaturesEXT\">VkPhysicalDeviceDepthClampZeroOneFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferFeaturesEXT\">VkPhysicalDeviceDescriptorBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV\">VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapFeaturesNV\">VkPhysicalDeviceDisplacementMicromapFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT\">VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState3FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV\">VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolveFeaturesANDROID\">VkPhysicalDeviceExternalFormatResolveFeaturesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\">VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX</a>, <a href=\"#VkPhysicalDeviceFaultFeaturesEXT\">VkPhysicalDeviceFaultFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFrameBoundaryFeaturesEXT\">VkPhysicalDeviceFrameBoundaryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyFeaturesEXT\">VkPhysicalDeviceHostImageCopyFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageProcessing2FeaturesQCOM\">VkPhysicalDeviceImageProcessing2FeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingFeaturesQCOM\">VkPhysicalDeviceImageProcessingFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT\">VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLegacyDitheringFeaturesEXT\">VkPhysicalDeviceLegacyDitheringFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMaintenance5FeaturesKHR\">VkPhysicalDeviceMaintenance5FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionFeaturesNV\">VkPhysicalDeviceMemoryDecompressionFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesEXT\">VkPhysicalDeviceMeshShaderFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferFeaturesEXT\">VkPhysicalDeviceNestedCommandBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapFeaturesEXT\">VkPhysicalDeviceOpacityMicromapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowFeaturesNV\">VkPhysicalDeviceOpticalFlowFeaturesNV</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT\">VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineProtectedAccessFeaturesEXT\">VkPhysicalDevicePipelineProtectedAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentBarrierFeaturesNV\">VkPhysicalDevicePresentBarrierFeaturesNV</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV\">VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR\">VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG\">VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsFeaturesARM\">VkPhysicalDeviceSchedulingControlsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM\">VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderEnqueueFeaturesAMDX\">VkPhysicalDeviceShaderEnqueueFeaturesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectFeaturesEXT\">VkPhysicalDeviceShaderObjectFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTileImageFeaturesEXT\">VkPhysicalDeviceShaderTileImageFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT\">VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTilePropertiesFeaturesQCOM\">VkPhysicalDeviceTilePropertiesFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrDegammaFeaturesQCOM\">VkPhysicalDeviceYcbcrDegammaFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>",
+ "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceAddressBindingReportFeaturesEXT\">VkPhysicalDeviceAddressBindingReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAmigoProfilingFeaturesSEC\">VkPhysicalDeviceAmigoProfilingFeaturesSEC</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI\">VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesKHR\">VkPhysicalDeviceCooperativeMatrixFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectFeaturesNV\">VkPhysicalDeviceCopyMemoryIndirectFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCubicClampFeaturesQCOM\">VkPhysicalDeviceCubicClampFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCubicWeightsFeaturesQCOM\">VkPhysicalDeviceCubicWeightsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchFeaturesNV\">VkPhysicalDeviceCudaKernelLaunchFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthBiasControlFeaturesEXT\">VkPhysicalDeviceDepthBiasControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampZeroOneFeaturesEXT\">VkPhysicalDeviceDepthClampZeroOneFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferFeaturesEXT\">VkPhysicalDeviceDescriptorBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV\">VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapFeaturesNV\">VkPhysicalDeviceDisplacementMicromapFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT\">VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState3FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV\">VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolveFeaturesANDROID\">VkPhysicalDeviceExternalFormatResolveFeaturesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\">VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX</a>, <a href=\"#VkPhysicalDeviceFaultFeaturesEXT\">VkPhysicalDeviceFaultFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFrameBoundaryFeaturesEXT\">VkPhysicalDeviceFrameBoundaryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyFeaturesEXT\">VkPhysicalDeviceHostImageCopyFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageProcessing2FeaturesQCOM\">VkPhysicalDeviceImageProcessing2FeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingFeaturesQCOM\">VkPhysicalDeviceImageProcessingFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT\">VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLegacyDitheringFeaturesEXT\">VkPhysicalDeviceLegacyDitheringFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMaintenance5FeaturesKHR\">VkPhysicalDeviceMaintenance5FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionFeaturesNV\">VkPhysicalDeviceMemoryDecompressionFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesEXT\">VkPhysicalDeviceMeshShaderFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferFeaturesEXT\">VkPhysicalDeviceNestedCommandBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapFeaturesEXT\">VkPhysicalDeviceOpacityMicromapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowFeaturesNV\">VkPhysicalDeviceOpticalFlowFeaturesNV</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT\">VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineProtectedAccessFeaturesEXT\">VkPhysicalDevicePipelineProtectedAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentBarrierFeaturesNV\">VkPhysicalDevicePresentBarrierFeaturesNV</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV\">VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR\">VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG\">VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedFeaturesARM\">VkPhysicalDeviceRenderPassStripedFeaturesARM</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsFeaturesARM\">VkPhysicalDeviceSchedulingControlsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM\">VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderEnqueueFeaturesAMDX\">VkPhysicalDeviceShaderEnqueueFeaturesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectFeaturesEXT\">VkPhysicalDeviceShaderObjectFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTileImageFeaturesEXT\">VkPhysicalDeviceShaderTileImageFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT\">VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTilePropertiesFeaturesQCOM\">VkPhysicalDeviceTilePropertiesFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrDegammaFeaturesQCOM\">VkPhysicalDeviceYcbcrDegammaFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>",
"page": "vkspec"
},
{
@@ -2107,13 +2145,28 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-VkCommandBufferSubmitInfo-commandBuffer-09445",
+ "text": "If any render pass instance in <code>commandBuffer</code> was recorded with a <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a> structure in its pNext chain, a <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a> <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferSubmitInfo-pNext-09446",
+ "text": "If a <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a> is included in the <code>pNext</code> chain, the value of <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a>::<code>stripeSemaphoreInfoCount</code> <strong class=\"purple\">must</strong> be equal to the sum of the <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a>::<code>stripeInfoCount</code> parameters provided to render pass instances recorded in <code>commandBuffer</code>",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-VkCommandBufferSubmitInfo-sType-sType",
"text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO</code>",
"page": "vkspec"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfo-pNext-pNext",
- "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
+ "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkCommandBufferSubmitInfo-sType-unique",
+ "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
"page": "vkspec"
},
{
@@ -2123,6 +2176,30 @@
}
]
},
+ "VkRenderPassStripeSubmitInfoARM": {
+ "core": [
+ {
+ "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-semaphore-09447",
+ "text": "The <code>semaphore</code> member of each element of <code>pStripeSemaphoreInfos</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-pStripeSemaphoreInfos-parameter",
+ "text": "<code>pStripeSemaphoreInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stripeSemaphoreInfoCount</code> valid <a href=\"#VkSemaphoreSubmitInfo\">VkSemaphoreSubmitInfo</a> structures",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-stripeSemaphoreInfoCount-arraylength",
+ "text": "<code>stripeSemaphoreInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
+ "page": "vkspec"
+ }
+ ]
+ },
"vkQueueSubmit": {
"core": [
{
@@ -3791,7 +3868,7 @@
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254",
- "text": "If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution",
+ "text": "If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
"page": "vkspec"
},
{
@@ -8637,7 +8714,7 @@
},
{
"vuid": "VUID-VkRenderingInfo-resolveMode-09322",
- "text": "If the <code>resolveMode</code> of any element of <code>pColorAttachments</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
+ "text": "If the <code>resolveMode</code> of any element of <code>pColorAttachments</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> If the <code>pNext</code> chain contains a <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a> structure, the union of stripe areas defined by the elements of <a href=\"#VkRenderPassStripeInfoARM\">VkRenderPassStripeInfoARM</a>::<code>pStripeInfos</code> <strong class=\"purple\">must</strong> cover the <code>renderArea</code>",
"page": "vkspec"
},
{
@@ -8647,7 +8724,7 @@
},
{
"vuid": "VUID-VkRenderingInfo-pNext-pNext",
- "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>, <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>, <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a>, <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>, or <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>",
+ "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>, <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>, <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a>, <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a>, <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>, or <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>",
"page": "vkspec"
},
{
@@ -9012,6 +9089,69 @@
}
]
},
+ "VkRenderPassStripeBeginInfoARM": {
+ "core": [
+ {
+ "vuid": "VUID-VkRenderPassStripeBeginInfoARM-stripeInfoCount-09450",
+ "text": "<code>stripeInfoCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRenderPassStripedPropertiesARM</code>::<code>maxRenderPassStripes</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeBeginInfoARM-stripeArea-09451",
+ "text": "The <code>stripeArea</code> defined by each element of <code>pStripeInfos</code> <strong class=\"purple\">must</strong> not overlap the <code>stripeArea</code> of any other element",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeBeginInfoARM-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeBeginInfoARM-pStripeInfos-parameter",
+ "text": "<code>pStripeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stripeInfoCount</code> <a href=\"#VkRenderPassStripeInfoARM\">VkRenderPassStripeInfoARM</a> structures",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeBeginInfoARM-stripeInfoCount-arraylength",
+ "text": "<code>stripeInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
+ "page": "vkspec"
+ }
+ ]
+ },
+ "VkRenderPassStripeInfoARM": {
+ "core": [
+ {
+ "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09452",
+ "text": "<code>stripeArea.offset.x</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.width</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09453",
+ "text": "<code>stripeArea.extent.width</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.width</code>, or the sum of <code>stripeArea.offset.x</code> and <code>stripeArea.extent.width</code> <strong class=\"purple\">must</strong> be equal to the <code>renderArea.extent.width</code> of the render pass instance",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09454",
+ "text": "<code>stripeArea.offset.y</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.height</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09455",
+ "text": "<code>stripeArea.extent.height</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.height</code>, or the sum of <code>stripeArea.offset.y</code> and <code>stripeArea.extent.height</code> <strong class=\"purple\">must</strong> be equal to the <code>renderArea.extent.height</code> of the render pass instance",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeInfoARM-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkRenderPassStripeInfoARM-pNext-pNext",
+ "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
+ "page": "vkspec"
+ }
+ ]
+ },
"vkCmdEndRendering": {
"core": [
{
@@ -10661,8 +10801,8 @@
"page": "vkspec"
},
{
- "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03070",
- "text": "If the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension is enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>",
+ "vuid": "VUID-VkSubpassDescription2-None-09456",
+ "text": "If either of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>all attachments in <code>pColorAttachments</code> that are not\n<code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or\nequal to the sample count of <code>pDepthStencilAttachment</code> if it is not\n<code>VK_ATTACHMENT_UNUSED</code></p>\n</div>",
"page": "vkspec"
},
{
@@ -12102,7 +12242,7 @@
},
{
"vuid": "VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07860",
- "text": "If the <code>perViewRenderAreaCount</code> member of a <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a> structure included in the <code>pNext</code> chain is not <code>0</code>, then <code>renderArea</code> <strong class=\"purple\">must</strong> specify a render area that includes the union of all per view render areas.",
+ "text": "If the <code>perViewRenderAreaCount</code> member of a <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a> structure included in the <code>pNext</code> chain is not <code>0</code>, then <code>renderArea</code> <strong class=\"purple\">must</strong> specify a render area that includes the union of all per view render areas. If the <code>pNext</code> chain contains a <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a> structure, the union of stripe areas defined by the elements of <a href=\"#VkRenderPassStripeInfoARM\">VkRenderPassStripeInfoARM</a>::<code>pStripeInfos</code> <strong class=\"purple\">must</strong> cover the <code>renderArea</code>",
"page": "vkspec"
},
{
@@ -12112,7 +12252,7 @@
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
- "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a>, <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a>, <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>, or <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>",
+ "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a>, <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a>, <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>, <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a>, or <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>",
"page": "vkspec"
},
{
@@ -14228,7 +14368,7 @@
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-09007",
- "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
+ "text": "If the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
"page": "vkspec"
},
{
@@ -21608,7 +21748,12 @@
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02397",
- "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>usage</code> <strong class=\"purple\">must</strong> not include any usages except <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>",
+ "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>usage</code> <strong class=\"purple\">must</strong> not include any usages except <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-VkImageCreateInfo-pNext-09457",
+ "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, and <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is not enabled, <code>usage</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
"page": "vkspec"
},
{
@@ -22164,7 +22309,7 @@
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-08886",
- "text": "If <code>format</code> of the <code>image</code> is a color format, <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, and does not have a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
+ "text": "If <code>format</code> of the <code>image</code> is a color format that is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, and <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
"page": "vkspec"
},
{
@@ -22257,7 +22402,7 @@
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2KHR-format-08886",
- "text": "If <code>format</code> of the <code>image</code> is a color format, <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, and does not have a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
+ "text": "If <code>format</code> of the <code>image</code> is a color format that is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, and <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
"page": "vkspec"
},
{
@@ -22402,7 +22547,7 @@
},
{
"vuid": "VUID-VkDeviceImageSubresourceInfoKHR-format-08886",
- "text": "If <code>format</code> of the <code>pCreateInfo</code> is a color format, <code>tiling</code> of the <code>pCreateInfo</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, and does not have a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
+ "text": "If <code>format</code> of the <code>image</code> is a color format that is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, and <code>tiling</code> of the <code>pCreateInfo</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
"page": "vkspec"
},
{
@@ -30175,6 +30320,20 @@
}
]
},
+ "ClusterShadingRateHUAWEI": {
+ "core": [
+ {
+ "vuid": "VUID-ClusterShadingRateHUAWEI-ClusterShadingRateHUAWEI-09448",
+ "text": "The <code>ClusterShadingRateHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-ClusterShadingRateHUAWEI-ClusterShadingRateHUAWEI-09449",
+ "text": "The variable decorated with <code>ClusterShadingRateHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
+ "page": "vkspec"
+ }
+ ]
+ },
"CullDistance": {
"core": [
{
@@ -32345,6 +32504,16 @@
"vkCmdResetQueryPool": {
"core": [
{
+ "vuid": "VUID-vkCmdResetQueryPool-firstQuery-09436",
+ "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdResetQueryPool-firstQuery-09437",
+ "text": "The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdResetQueryPool-None-02841",
"text": "All queries used by the command <strong class=\"purple\">must</strong> not be active",
"page": "vkspec"
@@ -32394,6 +32563,16 @@
"vkResetQueryPool": {
"core": [
{
+ "vuid": "VUID-vkResetQueryPool-firstQuery-09436",
+ "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkResetQueryPool-firstQuery-09437",
+ "text": "The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkResetQueryPool-None-02665",
"text": "The <a href=\"#features-hostQueryReset\"><code>hostQueryReset</code></a> feature <strong class=\"purple\">must</strong> be enabled",
"page": "vkspec"
@@ -32979,6 +33158,46 @@
"vkGetQueryPoolResults": {
"core": [
{
+ "vuid": "VUID-vkGetQueryPoolResults-firstQuery-09436",
+ "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-firstQuery-09437",
+ "text": "The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryCount-09438",
+ "text": "If <code>queryCount</code> is greater than 1, <code>stride</code> <strong class=\"purple\">must</strong> not be zero",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryType-09439",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryType-09440",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code>, or <code>VK_QUERY_RESULT_64_BIT</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryType-09441",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been recorded once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-queryType-09442",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkGetQueryPoolResults-flags-09443",
+ "text": "If <code>flags</code> includes <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> not include <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkGetQueryPoolResults-None-09401",
"text": "All queries used by the command <strong class=\"purple\">must</strong> not be uninitialized",
"page": "vkspec"
@@ -33048,6 +33267,46 @@
"vkCmdCopyQueryPoolResults": {
"core": [
{
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-09436",
+ "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-09437",
+ "text": "The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryCount-09438",
+ "text": "If <code>queryCount</code> is greater than 1, <code>stride</code> <strong class=\"purple\">must</strong> not be zero",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09439",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09440",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code>, or <code>VK_QUERY_RESULT_64_BIT</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09441",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been recorded once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09442",
+ "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>",
+ "page": "vkspec"
+ },
+ {
+ "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-09443",
+ "text": "If <code>flags</code> includes <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> not include <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdCopyQueryPoolResults-None-09402",
"text": "All queries used by the command <strong class=\"purple\">must</strong> not be uninitialized when the command is executed",
"page": "vkspec"
@@ -39879,22 +40138,22 @@
},
{
"vuid": "VUID-vkCmdDraw-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDraw-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDraw-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDraw-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -39933,11 +40192,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDraw-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDraw-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -39958,6 +40212,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDraw-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDraw-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -40283,11 +40542,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDraw-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -40514,12 +40768,12 @@
},
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDraw-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -40573,13 +40827,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -40739,17 +40993,17 @@
},
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -41668,22 +41922,22 @@
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexed-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -41722,11 +41976,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexed-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndexed-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -41747,6 +41996,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawIndexed-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawIndexed-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -42072,11 +42326,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndexed-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -42303,12 +42552,12 @@
},
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -42362,13 +42611,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -42528,17 +42777,17 @@
},
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -43472,22 +43721,22 @@
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -43526,11 +43775,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiEXT-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMultiEXT-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -43551,6 +43795,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMultiEXT-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMultiEXT-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -43876,11 +44125,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMultiEXT-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -44107,12 +44351,12 @@
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -44166,13 +44410,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -44332,17 +44576,17 @@
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -45281,22 +45525,22 @@
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -45335,11 +45579,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -45360,6 +45599,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -45685,11 +45929,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -45916,12 +46155,12 @@
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -45975,13 +46214,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -46141,17 +46380,17 @@
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -47110,22 +47349,22 @@
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirect-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -47164,11 +47403,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirect-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndirect-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -47189,6 +47423,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawIndirect-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawIndirect-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -47514,11 +47753,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndirect-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -47745,12 +47979,12 @@
},
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -47804,13 +48038,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -47970,17 +48204,17 @@
},
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -48953,22 +49187,22 @@
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -49007,11 +49241,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectCount-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndirectCount-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -49032,6 +49261,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawIndirectCount-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawIndirectCount-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -49357,11 +49591,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndirectCount-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -49588,12 +49817,12 @@
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -49647,13 +49876,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -49813,17 +50042,17 @@
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -50812,22 +51041,22 @@
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -50866,11 +51095,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -50891,6 +51115,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawIndexedIndirect-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -51216,11 +51445,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -51447,12 +51671,12 @@
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -51506,13 +51730,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -51672,17 +51896,17 @@
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -52670,22 +52894,22 @@
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -52724,11 +52948,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -52749,6 +52968,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -53074,11 +53298,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -53305,12 +53524,12 @@
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -53364,13 +53583,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -53530,17 +53749,17 @@
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -54539,22 +54758,22 @@
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -54593,11 +54812,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -54618,6 +54832,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -54943,11 +55162,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -55174,12 +55388,12 @@
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -55233,13 +55447,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -55399,17 +55613,17 @@
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -56475,22 +56689,22 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -56529,11 +56743,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -56554,6 +56763,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMeshTasksNV-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -56879,11 +57093,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -57110,12 +57319,12 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -57169,13 +57378,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -57335,17 +57544,17 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -58194,22 +58403,22 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -58248,11 +58457,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -58273,6 +58477,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -58598,11 +58807,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -58829,12 +59033,12 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -58888,13 +59092,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -59054,17 +59258,17 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -59972,22 +60176,22 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -60026,11 +60230,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -60051,6 +60250,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -60376,11 +60580,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -60607,12 +60806,12 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -60666,13 +60865,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -60832,17 +61031,17 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -61771,22 +61970,22 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -61825,11 +62024,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -61850,6 +62044,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMeshTasksEXT-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -62175,11 +62374,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -62406,12 +62600,12 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -62465,13 +62659,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -62631,17 +62825,17 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -63525,22 +63719,22 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -63579,11 +63773,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -63604,6 +63793,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -63929,11 +64123,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -64160,12 +64349,12 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -64219,13 +64408,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -64385,17 +64574,17 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -65338,22 +65527,22 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -65392,11 +65581,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -65417,6 +65601,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -65742,11 +65931,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -65973,12 +66157,12 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -66032,13 +66216,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -66198,17 +66382,17 @@
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -67137,22 +67321,22 @@
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -67191,11 +67375,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -67216,6 +67395,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawClusterHUAWEI-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -67541,11 +67725,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -67772,12 +67951,12 @@
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -67831,13 +68010,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -67997,17 +68176,17 @@
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -68871,22 +69050,22 @@
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -68925,11 +69104,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -68950,6 +69124,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -69275,11 +69454,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -69506,12 +69680,12 @@
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -69565,13 +69739,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -69731,17 +69905,17 @@
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -71757,12 +71931,12 @@
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135",
- "text": "If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> set then <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise it <strong class=\"purple\">must</strong> be greater than <code>0</code>",
+ "text": "If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> set then <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
"page": "vkspec"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136",
- "text": "If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> set then <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise it <strong class=\"purple\">must</strong> be greater than <code>0</code>",
+ "text": "If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> set then <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
"page": "vkspec"
},
{
@@ -75403,22 +75577,22 @@
},
{
"vuid": "VUID-vkCmdDispatch-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatch-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatch-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatch-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -75457,11 +75631,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDispatch-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDispatch-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -75482,6 +75651,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDispatch-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDispatch-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -75777,22 +75951,22 @@
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -75831,11 +76005,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDispatchIndirect-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDispatchIndirect-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -75856,6 +76025,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDispatchIndirect-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDispatchIndirect-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -76175,22 +76349,22 @@
},
{
"vuid": "VUID-vkCmdDispatchBase-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchBase-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -76229,11 +76403,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDispatchBase-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDispatchBase-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -76254,6 +76423,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDispatchBase-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDispatchBase-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -76569,22 +76743,22 @@
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -76623,11 +76797,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -76648,6 +76817,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -77557,22 +77731,22 @@
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -77611,11 +77785,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -77636,6 +77805,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -77961,11 +78135,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07934",
- "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07840",
"text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command",
"page": "vkspec"
@@ -78192,12 +78361,12 @@
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07284",
- "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
+ "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08644",
- "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is enabled, then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the current command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the same as the number of samples for the current render pass color and/or depth/stencil attachments",
+ "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
"page": "vkspec"
},
{
@@ -78251,13 +78420,13 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08911",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08912",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08912",
- "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
+ "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08911",
+ "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
"page": "vkspec"
},
{
@@ -78417,17 +78586,17 @@
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07285",
- "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07286",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07287",
- "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
+ "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
"page": "vkspec"
},
{
@@ -80000,7 +80169,7 @@
},
{
"vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245",
- "text": "All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution",
+ "text": "All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> referring to a semaphore created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
"page": "vkspec"
},
{
@@ -81662,7 +81831,7 @@
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06522",
- "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
+ "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
"page": "vkspec"
},
{
@@ -81952,7 +82121,7 @@
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06525",
- "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
+ "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
"page": "vkspec"
},
{
@@ -81991,7 +82160,7 @@
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06522",
- "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
+ "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
"page": "vkspec"
},
{
@@ -82049,7 +82218,7 @@
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06525",
- "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
+ "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
"page": "vkspec"
},
{
@@ -82088,7 +82257,7 @@
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06522",
- "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
+ "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
"page": "vkspec"
},
{
@@ -83107,7 +83276,7 @@
},
{
"vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03268",
- "text": "All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution",
+ "text": "All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
"page": "vkspec"
},
{
@@ -85216,7 +85385,7 @@
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-06742",
- "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
+ "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
"page": "vkspec"
},
{
@@ -86296,7 +86465,7 @@
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06742",
- "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
+ "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
"page": "vkspec"
},
{
@@ -87497,22 +87666,22 @@
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -87551,11 +87720,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdTraceRaysNV-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdTraceRaysNV-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -87576,6 +87740,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysNV-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysNV-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -87731,6 +87900,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysNV-None-09458",
+ "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-04624",
"text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
"page": "vkspec"
@@ -87986,22 +88160,22 @@
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -88040,11 +88214,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdTraceRaysKHR-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdTraceRaysKHR-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -88065,6 +88234,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysKHR-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysKHR-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -88220,6 +88394,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysKHR-None-09458",
+ "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679",
"text": "This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline",
"page": "vkspec"
@@ -88618,22 +88797,22 @@
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -88672,11 +88851,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -88697,6 +88871,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -88852,6 +89031,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-09458",
+ "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679",
"text": "This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline",
"page": "vkspec"
@@ -89186,22 +89370,22 @@
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -89240,11 +89424,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -89265,6 +89444,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -89420,6 +89604,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-09458",
+ "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-maxPipelineRayRecursionDepth-03679",
"text": "This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline",
"page": "vkspec"
@@ -92921,7 +93110,7 @@
},
{
"vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09007",
- "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
+ "text": "If the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
"page": "vkspec"
},
{
@@ -93260,22 +93449,22 @@
},
{
"vuid": "VUID-vkCmdDispatchGraphAMDX-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphAMDX-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphAMDX-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphAMDX-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -93314,11 +93503,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDispatchGraphAMDX-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -93339,6 +93523,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDispatchGraphAMDX-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -93679,22 +93868,22 @@
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -93733,11 +93922,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -93758,6 +93942,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -94118,22 +94307,22 @@
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08600",
- "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array that was used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08601",
- "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-maintenance4-08602",
- "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> or <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or <a href=\"#VkShaderEXT\">VkShaderEXT</a>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
+ "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
"page": "vkspec"
},
{
"vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08114",
- "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
+ "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
"page": "vkspec"
},
{
@@ -94172,11 +94361,6 @@
"page": "vkspec"
},
{
- "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08607",
- "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
- "page": "vkspec"
- },
- {
"vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08608",
"text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
"page": "vkspec"
@@ -94197,6 +94381,11 @@
"page": "vkspec"
},
{
+ "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08607",
+ "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
+ "page": "vkspec"
+ },
+ {
"vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-uniformBuffers-06935",
"text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
"page": "vkspec"
@@ -96314,6 +96503,15 @@
}
]
},
+ "VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI": {
+ "core": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI</code>",
+ "page": "vkspec"
+ }
+ ]
+ },
"VkPhysicalDeviceShaderEnqueueFeaturesAMDX": {
"core": [
{
@@ -96395,6 +96593,15 @@
}
]
},
+ "VkPhysicalDeviceRenderPassStripedFeaturesARM": {
+ "core": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceRenderPassStripedFeaturesARM-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM</code>",
+ "page": "vkspec"
+ }
+ ]
+ },
"VkPhysicalDevicePushDescriptorPropertiesKHR": {
"core": [
{
@@ -97058,6 +97265,15 @@
}
]
},
+ "VkPhysicalDeviceRenderPassStripedPropertiesARM": {
+ "core": [
+ {
+ "vuid": "VUID-VkPhysicalDeviceRenderPassStripedPropertiesARM-sType-sType",
+ "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM</code>",
+ "page": "vkspec"
+ }
+ ]
+ },
"vkGetPhysicalDeviceMultisamplePropertiesEXT": {
"core": [
{
diff --git a/third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml b/third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml
index ab05ed3dc7..fe8038d1b4 100644
--- a/third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml
+++ b/third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml
@@ -175,7 +175,7 @@ branch of the member gitlab server.
#define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type>
<type api="vulkan" category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 271</type>
+#define <name>VK_HEADER_VERSION</name> 272</type>
<type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file
#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type>
<type api="vulkansc" category="define">// Version of this file
@@ -866,6 +866,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type name="VkDeviceFaultAddressTypeEXT" category="enum"/>
<type name="VkPresentScalingFlagBitsEXT" category="enum"/>
<type name="VkPresentGravityFlagBitsEXT" category="enum"/>
+ <type name="VkLayerSettingTypeEXT" category="enum"/>
<type name="VkLatencyMarkerNV" category="enum"/>
<type name="VkOutOfBandQueueTypeNV" category="enum"/>
<type name="VkPhysicalDeviceSchedulingControlsFlagBitsARM" category="enum"/>
@@ -2235,6 +2236,19 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true"><type>uint32_t</type> <name>disabledValidationFeatureCount</name><comment>Number of validation features to disable</comment></member>
<member len="disabledValidationFeatureCount">const <type>VkValidationFeatureDisableEXT</type>* <name>pDisabledValidationFeatures</name><comment>Validation features to disable</comment></member>
</type>
+ <type category="struct" name="VkLayerSettingsCreateInfoEXT" allowduplicate="true" structextends="VkInstanceCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name><comment>Must be VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT</comment></member>
+ <member optional="true">const <type>void</type>* <name>pNext</name></member>
+ <member optional="true"><type>uint32_t</type> <name>settingCount</name><comment>Number of settings to configure</comment></member>
+ <member len="settingCount">const <type>VkLayerSettingEXT</type>* <name>pSettings</name><comment>Validation features to enable</comment></member>
+ </type>
+ <type category="struct" name="VkLayerSettingEXT">
+ <member len="null-terminated">const <type>char</type>* <name>pLayerName</name></member>
+ <member len="null-terminated">const <type>char</type>* <name>pSettingName</name></member>
+ <member><type>VkLayerSettingTypeEXT</type> <name>type</name><comment>The type of the object</comment></member>
+ <member optional="true"><type>uint32_t</type> <name>valueCount</name><comment>Number of values of the setting</comment></member>
+ <member len="valueCount">const <type>void</type>* <name>pValues</name><comment>Values to pass for a setting</comment></member>
+ </type>
<type category="struct" name="VkApplicationParametersEXT" allowduplicate="true" structextends="VkApplicationInfo,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
@@ -5995,8 +6009,13 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>*<name>pNext</name></member>
<member><type>VkBool32</type> <name>clustercullingShader</name></member>
- <member><type>VkBool32</type> <name>multiviewClusterCullingShader</name></member>
- </type>
+ <member><type>VkBool32</type> <name>multiviewClusterCullingShader</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI" structextends="VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>*<name>pNext</name></member>
+ <member><type>VkBool32</type> <name>clusterShadingRate</name></member>
+ </type>
<type category="struct" name="VkBufferCopy2">
<member values="VK_STRUCTURE_TYPE_BUFFER_COPY_2"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
@@ -8843,6 +8862,34 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>relaxedLineRasterization</name></member>
</type>
+ <type category="struct" name="VkPhysicalDeviceRenderPassStripedFeaturesARM" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkBool32</type> <name>renderPassStriped</name></member>
+ </type>
+ <type category="struct" name="VkPhysicalDeviceRenderPassStripedPropertiesARM" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
+ <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true"><type>void</type>* <name>pNext</name></member>
+ <member><type>VkExtent2D</type> <name>renderPassStripeGranularity</name></member>
+ <member><type>uint32_t</type> <name>maxRenderPassStripes</name></member>
+ </type>
+ <type category="struct" name="VkRenderPassStripeInfoARM">
+ <member values="VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true">const <type>void</type>* <name>pNext</name></member>
+ <member><type>VkRect2D</type> <name>stripeArea</name></member>
+ </type>
+ <type category="struct" name="VkRenderPassStripeBeginInfoARM" structextends="VkRenderingInfo,VkRenderPassBeginInfo">
+ <member values="VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true">const <type>void</type>* <name>pNext</name></member>
+ <member><type>uint32_t</type> <name>stripeInfoCount</name></member>
+ <member len="stripeInfoCount"><type>VkRenderPassStripeInfoARM</type>* <name>pStripeInfos</name></member>
+ </type>
+ <type category="struct" name="VkRenderPassStripeSubmitInfoARM" structextends="VkCommandBufferSubmitInfo">
+ <member values="VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"><type>VkStructureType</type> <name>sType</name></member>
+ <member optional="true">const <type>void</type>* <name>pNext</name></member>
+ <member><type>uint32_t</type> <name>stripeSemaphoreInfoCount</name></member>
+ <member len="stripeSemaphoreInfoCount">const <type>VkSemaphoreSubmitInfo</type>* <name>pStripeSemaphoreInfos</name></member>
+ </type>
</types>
@@ -9809,6 +9856,16 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="6" name="VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"/>
<enum value="7" name="VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT"/>
</enums>
+ <enums name="VkLayerSettingTypeEXT" type="enum">
+ <enum value="0" name="VK_LAYER_SETTING_TYPE_BOOL32_EXT"/>
+ <enum value="1" name="VK_LAYER_SETTING_TYPE_INT32_EXT"/>
+ <enum value="2" name="VK_LAYER_SETTING_TYPE_INT64_EXT"/>
+ <enum value="3" name="VK_LAYER_SETTING_TYPE_UINT32_EXT"/>
+ <enum value="4" name="VK_LAYER_SETTING_TYPE_UINT64_EXT"/>
+ <enum value="5" name="VK_LAYER_SETTING_TYPE_FLOAT32_EXT"/>
+ <enum value="6" name="VK_LAYER_SETTING_TYPE_FLOAT64_EXT"/>
+ <enum value="7" name="VK_LAYER_SETTING_TYPE_STRING_EXT"/>
+ </enums>
<enums name="VkSubgroupFeatureFlagBits" type="bitmask">
<enum bitpos="0" name="VK_SUBGROUP_FEATURE_BASIC_BIT" comment="Basic subgroup operations"/>
<enum bitpos="1" name="VK_SUBGROUP_FEATURE_VOTE_BIT" comment="Vote subgroup operations"/>
@@ -17452,9 +17509,9 @@ typedef void* <name>MTLSharedEvent_id</name>;
<command name="vkAcquireNextImage2KHR"/>
</require>
</extension>
- <extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" specialuse="debugging" supported="vulkan" deprecatedby="VK_EXT_validation_features">
+ <extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" specialuse="debugging" supported="vulkan" deprecatedby="VK_EXT_layer_settings">
<require>
- <enum value="2" name="VK_EXT_VALIDATION_FLAGS_SPEC_VERSION"/>
+ <enum value="3" name="VK_EXT_VALIDATION_FLAGS_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_validation_flags&quot;" name="VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"/>
<type name="VkValidationFlagsEXT"/>
@@ -19975,9 +20032,9 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type name="VkImageStencilUsageCreateInfoEXT"/>
</require>
</extension>
- <extension name="VK_EXT_validation_features" number="248" type="instance" author="LUNARG" contact="Karl Schultz @karl-lunarg" specialuse="debugging" supported="vulkan,vulkansc">
+ <extension name="VK_EXT_validation_features" number="248" type="instance" author="LUNARG" contact="Karl Schultz @karl-lunarg" specialuse="debugging" supported="vulkan,vulkansc" deprecatedby="VK_EXT_layer_settings">
<require>
- <enum value="5" name="VK_EXT_VALIDATION_FEATURES_SPEC_VERSION"/>
+ <enum value="6" name="VK_EXT_VALIDATION_FEATURES_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_validation_features&quot;" name="VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"/>
<type name="VkValidationFeaturesEXT"/>
@@ -22099,17 +22156,19 @@ typedef void* <name>MTLSharedEvent_id</name>;
</extension>
<extension name="VK_HUAWEI_cluster_culling_shader" number="405" type="device" depends="VK_KHR_get_physical_device_properties2" author="HUAWEI" contact="Yuchang Wang @richard_Wang2" supported="vulkan">
<require>
- <enum value="2" name="VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION"/>
+ <enum value="3" name="VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION"/>
<enum value="&quot;VK_HUAWEI_cluster_culling_shader&quot;" name="VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"/>
+ <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI"/>
<enum bitpos="41" extends="VkPipelineStageFlagBits2" name="VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"/>
<enum bitpos="19" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI"/>
<enum bitpos="13" extends="VkQueryPipelineStatisticFlagBits" name="VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI"/>
<command name="vkCmdDrawClusterHUAWEI"/>
<command name="vkCmdDrawClusterIndirectHUAWEI"/>
<type name="VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI"/>
- <type name="VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI"/>
+ <type name="VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI"/>
+ <type name="VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI"/>
</require>
</extension>
<extension name="VK_HUAWEI_extension_406" number="406" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" supported="disabled">
@@ -22274,10 +22333,20 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="&quot;VK_ARM_extension_424&quot;" name="VK_ARM_EXTENSION_424_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_ARM_extension_425" number="425" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
+ <extension name="VK_ARM_render_pass_striped" number="425" type="device" depends="VK_KHR_get_physical_device_properties2,VK_KHR_synchronization2" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
<require>
- <enum value="0" name="VK_ARM_EXTENSION_425_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_425&quot;" name="VK_ARM_EXTENSION_425_EXTENSION_NAME"/>
+ <enum value="1" name="VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION"/>
+ <enum value="&quot;VK_ARM_render_pass_striped&quot;" name="VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM"/>
+ <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM"/>
+ <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM"/>
+ <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM"/>
+ <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM"/>
+ <type name="VkPhysicalDeviceRenderPassStripedFeaturesARM"/>
+ <type name="VkPhysicalDeviceRenderPassStripedPropertiesARM"/>
+ <type name="VkRenderPassStripeBeginInfoARM"/>
+ <type name="VkRenderPassStripeInfoARM"/>
+ <type name="VkRenderPassStripeSubmitInfoARM"/>
</require>
</extension>
<extension name="VK_QCOM_fragment_density_map_offset" number="426" type="device" depends="VK_KHR_get_physical_device_properties2+VK_EXT_fragment_density_map" author="QCOM" contact="Matthew Netsch @mnetsch" supported="vulkan">
@@ -23267,10 +23336,14 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="&quot;VK_EXT_extension_496&quot;" name="VK_EXT_EXTENSION_496_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_EXT_extension_497" number="497" author="EXT" contact="Christophe Riccio @christophe" type="device" supported="disabled">
+ <extension name="VK_EXT_layer_settings" number="497" author="EXT" contact="Christophe Riccio @christophe" type="instance" supported="vulkan" ratified="vulkan">
<require>
- <enum value="0" name="VK_EXT_EXTENSION_497_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_497&quot;" name="VK_EXT_EXTENSION_497_EXTENSION_NAME"/>
+ <enum value="2" name="VK_EXT_LAYER_SETTINGS_SPEC_VERSION"/>
+ <enum value="&quot;VK_EXT_layer_settings&quot;" name="VK_EXT_LAYER_SETTINGS_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT"/>
+ <type name="VkLayerSettingsCreateInfoEXT"/>
+ <type name="VkLayerSettingEXT"/>
+ <type name="VkLayerSettingTypeEXT"/>
</require>
</extension>
<extension name="VK_ARM_shader_core_builtins" number="498" author="ARM" contact="Kevin Petit @kpet" type="device" depends="VK_KHR_get_physical_device_properties2" supported="vulkan">