diff options
| -rw-r--r-- | source/slang/slang-core-module-textures.cpp | 3 | ||||
| -rw-r--r-- | tests/bugs/gh-5518.slang | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/source/slang/slang-core-module-textures.cpp b/source/slang/slang-core-module-textures.cpp index 0d20cc1dd..e0b8d2b27 100644 --- a/source/slang/slang-core-module-textures.cpp +++ b/source/slang/slang-core-module-textures.cpp @@ -374,6 +374,8 @@ void TextureTypeInfo::writeGetDimensionFunctions() glsl << ", ($" << aa++ << " = textureQueryLevels($0))"; } }; + glsl << "if (isCombined == 0) { " + "__requireGLSLExtension(\"GL_EXT_samplerless_texture_functions\"); }\n"; glsl << "if (access == " << kCoreModule_ResourceAccessReadOnly << ") __intrinsic_asm \""; emitIntrinsic(toSlice("textureSize"), !isMultisample); @@ -491,7 +493,6 @@ void TextureTypeInfo::writeGetDimensionFunctions() } sb << " __glsl_version(450)\n"; - sb << " __glsl_extension(GL_EXT_samplerless_texture_functions)\n"; sb << " [require(cpp"; if (glsl.getLength()) diff --git a/tests/bugs/gh-5518.slang b/tests/bugs/gh-5518.slang new file mode 100644 index 000000000..18a987afd --- /dev/null +++ b/tests/bugs/gh-5518.slang @@ -0,0 +1,18 @@ +//TEST:SIMPLE(filecheck=GLSL): -profile spirv_1_5+fragment -entry fragmentMain -target glsl + +// Ensure that the use of combined samplers does not needlessly require +// GL_EXT_samplerless_texture_functions + +// GLSL-NOT: #extension GL_EXT_samplerless_texture_functions : require + +layout(binding=1) Sampler3D sampler; + +[shader("fragment")] +float4 fragmentMain() : SV_Target +{ + int sizeX; + int sizeY; + int sizeZ; + sampler.GetDimensions(sizeX, sizeY, sizeZ); + return float4(sizeX, sizeY, sizeZ, 1.0); +} |
