From f2eb8781a874be9ba00254edf0221c777660bec8 Mon Sep 17 00:00:00 2001 From: Mohan Maiya Date: Sat, 14 Sep 2024 16:16:53 -0700 Subject: [PATCH] Vulkan: Selectively enable emulateR32fImageAtomicExchange Only emulate R32F imageAtomicExchange if shaderImageFloat32Atomics feature is not supported Bug: angleproject:42264071 Change-Id: I305ab88bf3ac918eff5d8c399f0ed02ec8c60c2d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5860814 Reviewed-by: Shahbaz Youssefi Commit-Queue: Shahbaz Youssefi --- include/GLSLANG/ShaderLang.h | 5 +- .../Static_builtins.json | 6 +- .../translator/SymbolTable_ESSL_autogen.cpp | 132 +++++++++--------- .../translator/SymbolTable_autogen.cpp | 132 +++++++++--------- .../builtin_function_declarations.txt | 4 +- .../translator/spirv/TranslatorSPIRV.cpp | 2 +- src/libANGLE/renderer/vulkan/ShaderVk.cpp | 5 + src/libANGLE/renderer/vulkan/vk_renderer.cpp | 25 +++- src/libANGLE/renderer/vulkan/vk_renderer.h | 1 + 9 files changed, 170 insertions(+), 142 deletions(-) diff --git a/include/GLSLANG/ShaderLang.h b/include/GLSLANG/ShaderLang.h index 2b8fcc4cf38..0de4da314fa 100644 --- a/include/GLSLANG/ShaderLang.h +++ b/include/GLSLANG/ShaderLang.h @@ -26,7 +26,7 @@ // Version number for shader translation API. // It is incremented every time the API changes. -#define ANGLE_SH_VERSION 359 +#define ANGLE_SH_VERSION 360 enum ShShaderSpec { @@ -454,6 +454,9 @@ struct ShCompileOptions // uint64_t rejectWebglShadersWithUndefinedBehavior : 1; + // Emulate r32f image with an r32ui image + uint64_t emulateR32fImageAtomicExchange : 1; + ShCompileOptionsMetal metal; ShPixelLocalStorageOptions pls; }; diff --git a/scripts/code_generation_hashes/Static_builtins.json b/scripts/code_generation_hashes/Static_builtins.json index 5e5f8e2872f..8b9216c8e95 100644 --- a/scripts/code_generation_hashes/Static_builtins.json +++ b/scripts/code_generation_hashes/Static_builtins.json @@ -6,13 +6,13 @@ "src/compiler/translator/Operator_autogen.h": "abab7c615d0c5d9405fd1b1660e30f31", "src/compiler/translator/SymbolTable_ESSL_autogen.cpp": - "42141261ac6c15d767d8058268bf8ae8", + "4c9ec06c7ac26aaa550216e60e7b9e4c", "src/compiler/translator/SymbolTable_autogen.cpp": - "5641b3bdbfb672e5aee894912153e67c", + "379371d3b1060179b10929b183cbe6ae", "src/compiler/translator/SymbolTable_autogen.h": "36d32dd6e9e1111a1a04d3e64fddf8d0", "src/compiler/translator/builtin_function_declarations.txt": - "a0a7b543ad96c6a2a5254de1c0371428", + "c13a6d729055b3ca43b1c2d4efe14aa1", "src/compiler/translator/builtin_variables.json": "1cae0a0367342e78f702e789b63e6f55", "src/compiler/translator/gen_builtin_symbols.py": diff --git a/src/compiler/translator/SymbolTable_ESSL_autogen.cpp b/src/compiler/translator/SymbolTable_ESSL_autogen.cpp index 4bf359d233d..66ef844f78a 100644 --- a/src/compiler/translator/SymbolTable_ESSL_autogen.cpp +++ b/src/compiler/translator/SymbolTable_ESSL_autogen.cpp @@ -15573,7 +15573,7 @@ constexpr const TFunction imageAtomicExchange_00z10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p00z10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01K10D00B( @@ -15582,7 +15582,7 @@ constexpr const TFunction imageAtomicExchange_01K10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01K10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01V10D00B( @@ -15591,7 +15591,7 @@ constexpr const TFunction imageAtomicExchange_01V10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01V10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01A20D00B( @@ -15600,7 +15600,7 @@ constexpr const TFunction imageAtomicExchange_01A20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01A20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01L20D00B( @@ -15609,7 +15609,7 @@ constexpr const TFunction imageAtomicExchange_01L20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01L20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01W20D00B( @@ -15618,7 +15618,7 @@ constexpr const TFunction imageAtomicExchange_01W20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01W20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01C20D00B( @@ -15627,7 +15627,7 @@ constexpr const TFunction imageAtomicExchange_01C20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01C20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01N20D00B( @@ -15636,7 +15636,7 @@ constexpr const TFunction imageAtomicExchange_01N20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01N20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01Y20D00B( @@ -15645,7 +15645,7 @@ constexpr const TFunction imageAtomicExchange_01Y20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01Y20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01J00D00B( @@ -15654,7 +15654,7 @@ constexpr const TFunction imageAtomicExchange_01J00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01J00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01U00D00B( @@ -15663,7 +15663,7 @@ constexpr const TFunction imageAtomicExchange_01U00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01U00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01f00D00B( @@ -15672,7 +15672,7 @@ constexpr const TFunction imageAtomicExchange_01f00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01f00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01B20D00B( @@ -15681,7 +15681,7 @@ constexpr const TFunction imageAtomicExchange_01B20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01B20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01M20D00B( @@ -15690,7 +15690,7 @@ constexpr const TFunction imageAtomicExchange_01M20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01M20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01X20D00B( @@ -15699,7 +15699,7 @@ constexpr const TFunction imageAtomicExchange_01X20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01X20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01H20D00B( @@ -15708,7 +15708,7 @@ constexpr const TFunction imageAtomicExchange_01H20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01H20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01S20D00B( @@ -15717,7 +15717,7 @@ constexpr const TFunction imageAtomicExchange_01S20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01S20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01d20D00B( @@ -15726,7 +15726,7 @@ constexpr const TFunction imageAtomicExchange_01d20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01d20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01D00D00B( @@ -15735,7 +15735,7 @@ constexpr const TFunction imageAtomicExchange_01D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01D00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01O00D00B( @@ -15744,7 +15744,7 @@ constexpr const TFunction imageAtomicExchange_01O00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01O00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01Z00D00B( @@ -15753,7 +15753,7 @@ constexpr const TFunction imageAtomicExchange_01Z00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01Z00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01E10D00B( @@ -15762,7 +15762,7 @@ constexpr const TFunction imageAtomicExchange_01E10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01E10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01P10D00B( @@ -15771,7 +15771,7 @@ constexpr const TFunction imageAtomicExchange_01P10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01P10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01a10D00B( @@ -15780,7 +15780,7 @@ constexpr const TFunction imageAtomicExchange_01a10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01a10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01I10D00B( @@ -15789,7 +15789,7 @@ constexpr const TFunction imageAtomicExchange_01I10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01I10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01T10D00B( @@ -15798,7 +15798,7 @@ constexpr const TFunction imageAtomicExchange_01T10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01T10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01e10D00B( @@ -15807,7 +15807,7 @@ constexpr const TFunction imageAtomicExchange_01e10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01e10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01F10D00D00B( @@ -15816,7 +15816,7 @@ constexpr const TFunction imageAtomicExchange_01F10D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01F10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01Q10D00D00B( @@ -15825,7 +15825,7 @@ constexpr const TFunction imageAtomicExchange_01Q10D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01Q10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01b10D00D00B( @@ -15834,7 +15834,7 @@ constexpr const TFunction imageAtomicExchange_01b10D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01b10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01G20D00D00B( @@ -15843,7 +15843,7 @@ constexpr const TFunction imageAtomicExchange_01G20D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01G20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01R20D00D00B( @@ -15852,7 +15852,7 @@ constexpr const TFunction imageAtomicExchange_01R20D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01R20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01c20D00D00B( @@ -15861,7 +15861,7 @@ constexpr const TFunction imageAtomicExchange_01c20D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01c20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicCompSwap_00z10D00E00E( @@ -20622,7 +20622,7 @@ constexpr const TFunction imageAtomicExchangeExt_00z10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p00z10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01K10D00B( @@ -20631,7 +20631,7 @@ constexpr const TFunction imageAtomicExchangeExt_01K10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01K10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01V10D00B( @@ -20640,7 +20640,7 @@ constexpr const TFunction imageAtomicExchangeExt_01V10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01V10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01A20D00B( @@ -20649,7 +20649,7 @@ constexpr const TFunction imageAtomicExchangeExt_01A20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01A20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01L20D00B( @@ -20658,7 +20658,7 @@ constexpr const TFunction imageAtomicExchangeExt_01L20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01L20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01W20D00B( @@ -20667,7 +20667,7 @@ constexpr const TFunction imageAtomicExchangeExt_01W20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01W20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01C20D00B( @@ -20676,7 +20676,7 @@ constexpr const TFunction imageAtomicExchangeExt_01C20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01C20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01N20D00B( @@ -20685,7 +20685,7 @@ constexpr const TFunction imageAtomicExchangeExt_01N20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01N20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01Y20D00B( @@ -20694,7 +20694,7 @@ constexpr const TFunction imageAtomicExchangeExt_01Y20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01Y20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01J00D00B( @@ -20703,7 +20703,7 @@ constexpr const TFunction imageAtomicExchangeExt_01J00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01J00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01U00D00B( @@ -20712,7 +20712,7 @@ constexpr const TFunction imageAtomicExchangeExt_01U00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01U00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01f00D00B( @@ -20721,7 +20721,7 @@ constexpr const TFunction imageAtomicExchangeExt_01f00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01f00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01B20D00B( @@ -20730,7 +20730,7 @@ constexpr const TFunction imageAtomicExchangeExt_01B20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01B20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01M20D00B( @@ -20739,7 +20739,7 @@ constexpr const TFunction imageAtomicExchangeExt_01M20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01M20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01X20D00B( @@ -20748,7 +20748,7 @@ constexpr const TFunction imageAtomicExchangeExt_01X20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01X20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01H20D00B( @@ -20757,7 +20757,7 @@ constexpr const TFunction imageAtomicExchangeExt_01H20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01H20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01S20D00B( @@ -20766,7 +20766,7 @@ constexpr const TFunction imageAtomicExchangeExt_01S20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01S20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01d20D00B( @@ -20775,7 +20775,7 @@ constexpr const TFunction imageAtomicExchangeExt_01d20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01d20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01D00D00B( @@ -20784,7 +20784,7 @@ constexpr const TFunction imageAtomicExchangeExt_01D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01D00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01O00D00B( @@ -20793,7 +20793,7 @@ constexpr const TFunction imageAtomicExchangeExt_01O00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01O00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01Z00D00B( @@ -20802,7 +20802,7 @@ constexpr const TFunction imageAtomicExchangeExt_01Z00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01Z00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01E10D00B( @@ -20811,7 +20811,7 @@ constexpr const TFunction imageAtomicExchangeExt_01E10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01E10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01P10D00B( @@ -20820,7 +20820,7 @@ constexpr const TFunction imageAtomicExchangeExt_01P10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01P10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01a10D00B( @@ -20829,7 +20829,7 @@ constexpr const TFunction imageAtomicExchangeExt_01a10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01a10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01I10D00B( @@ -20838,7 +20838,7 @@ constexpr const TFunction imageAtomicExchangeExt_01I10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01I10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01T10D00B( @@ -20847,7 +20847,7 @@ constexpr const TFunction imageAtomicExchangeExt_01T10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01T10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01e10D00B( @@ -20856,7 +20856,7 @@ constexpr const TFunction imageAtomicExchangeExt_01e10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01e10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01F10D00D00B( @@ -20865,7 +20865,7 @@ constexpr const TFunction imageAtomicExchangeExt_01F10D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01F10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01Q10D00D00B( @@ -20874,7 +20874,7 @@ constexpr const TFunction imageAtomicExchangeExt_01Q10D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01Q10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01b10D00D00B( @@ -20883,7 +20883,7 @@ constexpr const TFunction imageAtomicExchangeExt_01b10D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01b10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01G20D00D00B( @@ -20892,7 +20892,7 @@ constexpr const TFunction imageAtomicExchangeExt_01G20D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01G20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01R20D00D00B( @@ -20901,7 +20901,7 @@ constexpr const TFunction imageAtomicExchangeExt_01R20D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01R20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01c20D00D00B( @@ -20910,7 +20910,7 @@ constexpr const TFunction imageAtomicExchangeExt_01c20D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01c20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicCompSwapExt_00z10D00E00E( diff --git a/src/compiler/translator/SymbolTable_autogen.cpp b/src/compiler/translator/SymbolTable_autogen.cpp index ed0114eda71..1d95ba81475 100644 --- a/src/compiler/translator/SymbolTable_autogen.cpp +++ b/src/compiler/translator/SymbolTable_autogen.cpp @@ -20613,7 +20613,7 @@ constexpr const TFunction imageAtomicExchange_00z10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p00z10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01K10D00B( @@ -20622,7 +20622,7 @@ constexpr const TFunction imageAtomicExchange_01K10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01K10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01V10D00B( @@ -20631,7 +20631,7 @@ constexpr const TFunction imageAtomicExchange_01V10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01V10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01A20D00B( @@ -20640,7 +20640,7 @@ constexpr const TFunction imageAtomicExchange_01A20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01A20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01L20D00B( @@ -20649,7 +20649,7 @@ constexpr const TFunction imageAtomicExchange_01L20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01L20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01W20D00B( @@ -20658,7 +20658,7 @@ constexpr const TFunction imageAtomicExchange_01W20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01W20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01C20D00B( @@ -20667,7 +20667,7 @@ constexpr const TFunction imageAtomicExchange_01C20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01C20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01N20D00B( @@ -20676,7 +20676,7 @@ constexpr const TFunction imageAtomicExchange_01N20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01N20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01Y20D00B( @@ -20685,7 +20685,7 @@ constexpr const TFunction imageAtomicExchange_01Y20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01Y20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01J00D00B( @@ -20694,7 +20694,7 @@ constexpr const TFunction imageAtomicExchange_01J00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01J00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01U00D00B( @@ -20703,7 +20703,7 @@ constexpr const TFunction imageAtomicExchange_01U00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01U00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01f00D00B( @@ -20712,7 +20712,7 @@ constexpr const TFunction imageAtomicExchange_01f00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01f00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01B20D00B( @@ -20721,7 +20721,7 @@ constexpr const TFunction imageAtomicExchange_01B20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01B20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01M20D00B( @@ -20730,7 +20730,7 @@ constexpr const TFunction imageAtomicExchange_01M20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01M20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01X20D00B( @@ -20739,7 +20739,7 @@ constexpr const TFunction imageAtomicExchange_01X20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01X20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01H20D00B( @@ -20748,7 +20748,7 @@ constexpr const TFunction imageAtomicExchange_01H20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01H20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01S20D00B( @@ -20757,7 +20757,7 @@ constexpr const TFunction imageAtomicExchange_01S20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01S20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01d20D00B( @@ -20766,7 +20766,7 @@ constexpr const TFunction imageAtomicExchange_01d20D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01d20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01D00D00B( @@ -20775,7 +20775,7 @@ constexpr const TFunction imageAtomicExchange_01D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01D00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01O00D00B( @@ -20784,7 +20784,7 @@ constexpr const TFunction imageAtomicExchange_01O00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01O00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01Z00D00B( @@ -20793,7 +20793,7 @@ constexpr const TFunction imageAtomicExchange_01Z00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01Z00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01E10D00B( @@ -20802,7 +20802,7 @@ constexpr const TFunction imageAtomicExchange_01E10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01E10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01P10D00B( @@ -20811,7 +20811,7 @@ constexpr const TFunction imageAtomicExchange_01P10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01P10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01a10D00B( @@ -20820,7 +20820,7 @@ constexpr const TFunction imageAtomicExchange_01a10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01a10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01I10D00B( @@ -20829,7 +20829,7 @@ constexpr const TFunction imageAtomicExchange_01I10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01I10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01T10D00B( @@ -20838,7 +20838,7 @@ constexpr const TFunction imageAtomicExchange_01T10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01T10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01e10D00B( @@ -20847,7 +20847,7 @@ constexpr const TFunction imageAtomicExchange_01e10D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01e10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01F10D00D00B( @@ -20856,7 +20856,7 @@ constexpr const TFunction imageAtomicExchange_01F10D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01F10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01Q10D00D00B( @@ -20865,7 +20865,7 @@ constexpr const TFunction imageAtomicExchange_01Q10D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01Q10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01b10D00D00B( @@ -20874,7 +20874,7 @@ constexpr const TFunction imageAtomicExchange_01b10D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01b10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01G20D00D00B( @@ -20883,7 +20883,7 @@ constexpr const TFunction imageAtomicExchange_01G20D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01G20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01R20D00D00B( @@ -20892,7 +20892,7 @@ constexpr const TFunction imageAtomicExchange_01R20D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01R20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchange_01c20D00D00B( @@ -20901,7 +20901,7 @@ constexpr const TFunction imageAtomicExchange_01c20D00D00B( std::array{{TExtension::UNDEFINED}}, BuiltInParameters::p01c20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicCompSwap_00z10D00E00E( @@ -25662,7 +25662,7 @@ constexpr const TFunction imageAtomicExchangeExt_00z10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p00z10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01K10D00B( @@ -25671,7 +25671,7 @@ constexpr const TFunction imageAtomicExchangeExt_01K10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01K10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01V10D00B( @@ -25680,7 +25680,7 @@ constexpr const TFunction imageAtomicExchangeExt_01V10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01V10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01A20D00B( @@ -25689,7 +25689,7 @@ constexpr const TFunction imageAtomicExchangeExt_01A20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01A20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01L20D00B( @@ -25698,7 +25698,7 @@ constexpr const TFunction imageAtomicExchangeExt_01L20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01L20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01W20D00B( @@ -25707,7 +25707,7 @@ constexpr const TFunction imageAtomicExchangeExt_01W20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01W20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01C20D00B( @@ -25716,7 +25716,7 @@ constexpr const TFunction imageAtomicExchangeExt_01C20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01C20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01N20D00B( @@ -25725,7 +25725,7 @@ constexpr const TFunction imageAtomicExchangeExt_01N20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01N20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01Y20D00B( @@ -25734,7 +25734,7 @@ constexpr const TFunction imageAtomicExchangeExt_01Y20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01Y20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01J00D00B( @@ -25743,7 +25743,7 @@ constexpr const TFunction imageAtomicExchangeExt_01J00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01J00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01U00D00B( @@ -25752,7 +25752,7 @@ constexpr const TFunction imageAtomicExchangeExt_01U00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01U00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01f00D00B( @@ -25761,7 +25761,7 @@ constexpr const TFunction imageAtomicExchangeExt_01f00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01f00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01B20D00B( @@ -25770,7 +25770,7 @@ constexpr const TFunction imageAtomicExchangeExt_01B20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01B20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01M20D00B( @@ -25779,7 +25779,7 @@ constexpr const TFunction imageAtomicExchangeExt_01M20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01M20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01X20D00B( @@ -25788,7 +25788,7 @@ constexpr const TFunction imageAtomicExchangeExt_01X20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01X20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01H20D00B( @@ -25797,7 +25797,7 @@ constexpr const TFunction imageAtomicExchangeExt_01H20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01H20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01S20D00B( @@ -25806,7 +25806,7 @@ constexpr const TFunction imageAtomicExchangeExt_01S20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01S20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01d20D00B( @@ -25815,7 +25815,7 @@ constexpr const TFunction imageAtomicExchangeExt_01d20D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01d20D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01D00D00B( @@ -25824,7 +25824,7 @@ constexpr const TFunction imageAtomicExchangeExt_01D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01D00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01O00D00B( @@ -25833,7 +25833,7 @@ constexpr const TFunction imageAtomicExchangeExt_01O00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01O00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01Z00D00B( @@ -25842,7 +25842,7 @@ constexpr const TFunction imageAtomicExchangeExt_01Z00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01Z00D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01E10D00B( @@ -25851,7 +25851,7 @@ constexpr const TFunction imageAtomicExchangeExt_01E10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01E10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01P10D00B( @@ -25860,7 +25860,7 @@ constexpr const TFunction imageAtomicExchangeExt_01P10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01P10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01a10D00B( @@ -25869,7 +25869,7 @@ constexpr const TFunction imageAtomicExchangeExt_01a10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01a10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01I10D00B( @@ -25878,7 +25878,7 @@ constexpr const TFunction imageAtomicExchangeExt_01I10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01I10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01T10D00B( @@ -25887,7 +25887,7 @@ constexpr const TFunction imageAtomicExchangeExt_01T10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01T10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01e10D00B( @@ -25896,7 +25896,7 @@ constexpr const TFunction imageAtomicExchangeExt_01e10D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01e10D00B, 3, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01F10D00D00B( @@ -25905,7 +25905,7 @@ constexpr const TFunction imageAtomicExchangeExt_01F10D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01F10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01Q10D00D00B( @@ -25914,7 +25914,7 @@ constexpr const TFunction imageAtomicExchangeExt_01Q10D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01Q10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01b10D00D00B( @@ -25923,7 +25923,7 @@ constexpr const TFunction imageAtomicExchangeExt_01b10D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01b10D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01G20D00D00B( @@ -25932,7 +25932,7 @@ constexpr const TFunction imageAtomicExchangeExt_01G20D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01G20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01R20D00D00B( @@ -25941,7 +25941,7 @@ constexpr const TFunction imageAtomicExchangeExt_01R20D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01R20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicExchangeExt_01c20D00D00B( @@ -25950,7 +25950,7 @@ constexpr const TFunction imageAtomicExchangeExt_01c20D00D00B( std::array{{TExtension::OES_shader_image_atomic}}, BuiltInParameters::p01c20D00D00B, 4, - StaticType::Get(), + StaticType::Get(), EOpImageAtomicExchange, false); constexpr const TFunction imageAtomicCompSwapExt_00z10D00E00E( diff --git a/src/compiler/translator/builtin_function_declarations.txt b/src/compiler/translator/builtin_function_declarations.txt index 8a61558c04d..80a00843632 100644 --- a/src/compiler/translator/builtin_function_declarations.txt +++ b/src/compiler/translator/builtin_function_declarations.txt @@ -1113,7 +1113,7 @@ GROUP BEGIN Image {"queryFunction": true} uint imageAtomicExchange(IMAGE_PARAMS, uint); int imageAtomicExchange(IMAGE_PARAMS, int); DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_5_BUILTINS", "hasSideEffects": true} - int imageAtomicExchange(IMAGE_PARAMS, float); + float imageAtomicExchange(IMAGE_PARAMS, float); DEFAULT METADATA {"essl_level": "ESSL3_2_BUILTINS", "glsl_level": "GLSL4_2_BUILTINS", "hasSideEffects": true} uint imageAtomicCompSwap(IMAGE_PARAMS, uint, uint); int imageAtomicCompSwap(IMAGE_PARAMS, int, int); @@ -1132,7 +1132,7 @@ GROUP BEGIN Image {"queryFunction": true} int imageAtomicXor(readonly writeonly IMAGE_PARAMS, int); uint imageAtomicExchange(readonly writeonly IMAGE_PARAMS, uint); int imageAtomicExchange(readonly writeonly IMAGE_PARAMS, int); - int imageAtomicExchange(readonly writeonly IMAGE_PARAMS, float); + float imageAtomicExchange(readonly writeonly IMAGE_PARAMS, float); uint imageAtomicCompSwap(readonly writeonly IMAGE_PARAMS, uint, uint); int imageAtomicCompSwap(readonly writeonly IMAGE_PARAMS, int, int); GROUP END Atomic diff --git a/src/compiler/translator/spirv/TranslatorSPIRV.cpp b/src/compiler/translator/spirv/TranslatorSPIRV.cpp index c84dca37204..92890f44b6e 100644 --- a/src/compiler/translator/spirv/TranslatorSPIRV.cpp +++ b/src/compiler/translator/spirv/TranslatorSPIRV.cpp @@ -875,7 +875,7 @@ bool TranslatorSPIRV::translateImpl(TIntermBlock *root, driverUniforms->getDriverUniformsVariable()->getType().getInterfaceBlock()->uniqueId(), vk::spirv::kIdDriverUniformsBlock); - if (r32fImageCount > 0) + if (r32fImageCount > 0 && compileOptions.emulateR32fImageAtomicExchange) { if (!RewriteR32fImages(this, root, &getSymbolTable())) { diff --git a/src/libANGLE/renderer/vulkan/ShaderVk.cpp b/src/libANGLE/renderer/vulkan/ShaderVk.cpp index 6d00ae67e19..24b653d29fd 100644 --- a/src/libANGLE/renderer/vulkan/ShaderVk.cpp +++ b/src/libANGLE/renderer/vulkan/ShaderVk.cpp @@ -136,6 +136,11 @@ std::shared_ptr ShaderVk::compile(const gl::Context *contex options->wrapSwitchInIfTrue = true; } + if (contextVk->getFeatures().emulateR32fImageAtomicExchange.enabled) + { + options->emulateR32fImageAtomicExchange = true; + } + // The Vulkan backend needs no post-processing of the translated shader. return std::shared_ptr(new ShaderTranslateTask); } diff --git a/src/libANGLE/renderer/vulkan/vk_renderer.cpp b/src/libANGLE/renderer/vulkan/vk_renderer.cpp index bafebc275c1..7c73d012aa6 100644 --- a/src/libANGLE/renderer/vulkan/vk_renderer.cpp +++ b/src/libANGLE/renderer/vulkan/vk_renderer.cpp @@ -2295,6 +2295,7 @@ angle::Result Renderer::initializeMemoryAllocator(vk::Context *context) // - VK_ANDROID_external_format_resolve: externalFormatResolve (feature) // - VK_EXT_vertex_input_dynamic_state: vertexInputDynamicState (feature) // - VK_KHR_dynamic_rendering_local_read: dynamicRenderingLocalRead (feature) +// - VK_EXT_shader_atomic_float shaderImageFloat32Atomics (feature) // void Renderer::appendDeviceExtensionFeaturesNotPromoted( const vk::ExtensionNameList &deviceExtensionNames, @@ -2407,6 +2408,11 @@ void Renderer::appendDeviceExtensionFeaturesNotPromoted( vk::AddToPNextChain(deviceFeatures, &mRasterizationOrderAttachmentAccessFeatures); } + if (ExtensionFound(VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, deviceExtensionNames)) + { + vk::AddToPNextChain(deviceFeatures, &mShaderAtomicFloatFeatures); + } + if (ExtensionFound(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME, deviceExtensionNames)) { vk::AddToPNextChain(deviceFeatures, &mSwapchainMaintenance1Features); @@ -2801,6 +2807,10 @@ void Renderer::queryDeviceExtensionFeatures(const vk::ExtensionNameList &deviceE mMaintenance5Features = {}; mMaintenance5Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR; + mShaderAtomicFloatFeatures = {}; + mShaderAtomicFloatFeatures.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT; + mSwapchainMaintenance1Features = {}; mSwapchainMaintenance1Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT; @@ -2912,6 +2922,7 @@ void Renderer::queryDeviceExtensionFeatures(const vk::ExtensionNameList &deviceE mPipelineRobustnessFeatures.pNext = nullptr; mPipelineProtectedAccessFeatures.pNext = nullptr; mRasterizationOrderAttachmentAccessFeatures.pNext = nullptr; + mShaderAtomicFloatFeatures.pNext = nullptr; mMaintenance5Features.pNext = nullptr; mSwapchainMaintenance1Features.pNext = nullptr; mDitheringFeatures.pNext = nullptr; @@ -3178,6 +3189,13 @@ void Renderer::enableDeviceExtensionsNotPromoted(const vk::ExtensionNameList &de vk::AddToPNextChain(&mEnabledFeatures, &mRasterizationOrderAttachmentAccessFeatures); } + if (!mFeatures.emulateR32fImageAtomicExchange.enabled) + { + ASSERT(ExtensionFound(VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, deviceExtensionNames)); + mEnabledDeviceExtensions.push_back(VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME); + vk::AddToPNextChain(&mEnabledFeatures, &mShaderAtomicFloatFeatures); + } + if (mFeatures.supportsImage2dViewOf3d.enabled) { mEnabledDeviceExtensions.push_back(VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME); @@ -4810,9 +4828,10 @@ void Renderer::initFeatures(const vk::ExtensionNameList &deviceExtensionNames, &mFeatures, preferDrawClearOverVkCmdClearAttachments, isQualcommProprietary && qualcommDriverVersion < QualcommDriverVersion(512, 762, 12)); - // r32f image emulation is done unconditionally so VK_FORMAT_FEATURE_STORAGE_*_ATOMIC_BIT is not - // required. - ANGLE_FEATURE_CONDITION(&mFeatures, emulateR32fImageAtomicExchange, true); + // R32F imageAtomicExchange emulation is done if shaderImageFloat32Atomics feature is not + // supported. + ANGLE_FEATURE_CONDITION(&mFeatures, emulateR32fImageAtomicExchange, + mShaderAtomicFloatFeatures.shaderImageFloat32Atomics != VK_TRUE); // Whether non-conformant configurations and extensions should be exposed. ANGLE_FEATURE_CONDITION(&mFeatures, exposeNonConformantExtensionsAndVersions, diff --git a/src/libANGLE/renderer/vulkan/vk_renderer.h b/src/libANGLE/renderer/vulkan/vk_renderer.h index dbdd1d465c8..bb6d4a689a9 100644 --- a/src/libANGLE/renderer/vulkan/vk_renderer.h +++ b/src/libANGLE/renderer/vulkan/vk_renderer.h @@ -945,6 +945,7 @@ class Renderer : angle::NonCopyable VkPhysicalDevicePipelineProtectedAccessFeaturesEXT mPipelineProtectedAccessFeatures; VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT mRasterizationOrderAttachmentAccessFeatures; + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT mShaderAtomicFloatFeatures; VkPhysicalDeviceMaintenance5FeaturesKHR mMaintenance5Features; VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT mSwapchainMaintenance1Features; VkPhysicalDeviceLegacyDitheringFeaturesEXT mDitheringFeatures;