diff options
| -rw-r--r-- | .gitignore | 5 | ||||
| -rw-r--r-- | source/slang/glsl.meta.slang | 1 | ||||
| -rw-r--r-- | source/slang/slang-ir-glsl-legalize.cpp | 3 | ||||
| -rw-r--r-- | tests/glsl-intrinsic/gl-drawid.slang | 11 |
4 files changed, 20 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index dac907f55..6330eae45 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,11 @@ tools/gfx-unit-test/test-tmp-* # Files generated by other shader compilers *.spv +*.spv-asm +*.glsl +*.hlsl +*.metal +*.wgsl # Intermediate source files generated during build process /source/slang/slang-generated-*.h diff --git a/source/slang/glsl.meta.slang b/source/slang/glsl.meta.slang index f63daf6b0..c78aa2a15 100644 --- a/source/slang/glsl.meta.slang +++ b/source/slang/glsl.meta.slang @@ -215,6 +215,7 @@ public in int gl_ViewIndex : SV_ViewID; public in int gl_ViewportIndex : SV_ViewportArrayIndex; public in int gl_BaseVertex : SV_StartVertexLocation; public in int gl_BaseInstance : SV_StartInstanceLocation; +public in int gl_DrawID : SV_DrawIndex; public in int gl_FragInvocationCountEXT : SV_FragInvocationCount; public in int2 gl_FragSizeEXT : SV_FragSize; diff --git a/source/slang/slang-ir-glsl-legalize.cpp b/source/slang/slang-ir-glsl-legalize.cpp index bc26b223b..1511bbff2 100644 --- a/source/slang/slang-ir-glsl-legalize.cpp +++ b/source/slang/slang-ir-glsl-legalize.cpp @@ -678,6 +678,9 @@ GLSLSystemValueInfo* getGLSLSystemValueInfo( } else if (semanticName == "sv_drawindex") { + context->requireGLSLVersion(ProfileVersion::GLSL_460); + context->requireGLSLExtension(toSlice("GL_ARB_shader_draw_parameters")); + name = "gl_DrawID"; requiredType = builder->getBasicType(BaseType::Int); } diff --git a/tests/glsl-intrinsic/gl-drawid.slang b/tests/glsl-intrinsic/gl-drawid.slang new file mode 100644 index 000000000..d9daca8a4 --- /dev/null +++ b/tests/glsl-intrinsic/gl-drawid.slang @@ -0,0 +1,11 @@ +//TEST:SIMPLE(filecheck=SPIRV): -target spirv -entry main -stage vertex + +// SPIRV: OpDecorate %{{.*}} BuiltIn DrawIndex + +#version 460 + +void main() +{ + int drawID = gl_DrawID; + gl_Position = vec4(drawID, 0, 0, 1); +} |
