summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-core-module-textures.cpp3
-rw-r--r--tests/bugs/gh-5518.slang18
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);
+}