summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/slang/core.meta.slang2
-rw-r--r--tests/cross-compile/glsl-calculatelevelofdetail.slang11
2 files changed, 13 insertions, 0 deletions
diff --git a/source/slang/core.meta.slang b/source/slang/core.meta.slang
index ddb81fd87..77b9405ba 100644
--- a/source/slang/core.meta.slang
+++ b/source/slang/core.meta.slang
@@ -1358,9 +1358,11 @@ struct TextureTypeInfo
if( !isMultisample )
{
+ sb << "__target_intrinsic(glsl, \"textureQueryLod($p, $2).x\")";
sb << "float CalculateLevelOfDetail(" << samplerStateParam;
sb << "float" << base.coordCount << " location);\n";
+ sb << "__target_intrinsic(glsl, \"textureQueryLod($p, $2).y\")";
sb << "float CalculateLevelOfDetailUnclamped(" << samplerStateParam;
sb << "float" << base.coordCount << " location);\n";
}
diff --git a/tests/cross-compile/glsl-calculatelevelofdetail.slang b/tests/cross-compile/glsl-calculatelevelofdetail.slang
new file mode 100644
index 000000000..eb8c44a8b
--- /dev/null
+++ b/tests/cross-compile/glsl-calculatelevelofdetail.slang
@@ -0,0 +1,11 @@
+//TEST:CROSS_COMPILE(filecheck=CHECK): -profile ps_5_0 -entry main -target glsl
+
+// CHECK: textureQueryLod(sampler2D(t_0,s_0), ({{.*}})).x
+// CHECK: textureQueryLod(sampler2D(t_0,s_0), ({{.*}})).y
+
+Texture2D t;
+SamplerState s;
+float main()
+{
+ return t.CalculateLevelOfDetail(s, float2(0,0)) + t.CalculateLevelOfDetailUnclamped(s, float2(0,0));
+}