mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 20:10:06 +00:00
GLSL 4.6: Implement draw parameters.
This commit is contained in:
parent
0d0c6d38f0
commit
941f3bbd7a
@ -37,5 +37,7 @@ void foo()
|
|||||||
atomicCounterXor(aui, ui); // ERROR, need 4.6
|
atomicCounterXor(aui, ui); // ERROR, need 4.6
|
||||||
atomicCounterExchange(aui, ui); // ERROR, need 4.6
|
atomicCounterExchange(aui, ui); // ERROR, need 4.6
|
||||||
atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6
|
atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6
|
||||||
|
|
||||||
|
int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6
|
||||||
}
|
}
|
||||||
; // ERROR: no extraneous semicolons
|
; // ERROR: no extraneous semicolons
|
||||||
|
@ -11,8 +11,12 @@ ERROR: 0:36: 'atomicCounterOr' : no matching overloaded function found
|
|||||||
ERROR: 0:37: 'atomicCounterXor' : no matching overloaded function found
|
ERROR: 0:37: 'atomicCounterXor' : no matching overloaded function found
|
||||||
ERROR: 0:38: 'atomicCounterExchange' : no matching overloaded function found
|
ERROR: 0:38: 'atomicCounterExchange' : no matching overloaded function found
|
||||||
ERROR: 0:39: 'atomicCounterCompSwap' : no matching overloaded function found
|
ERROR: 0:39: 'atomicCounterCompSwap' : no matching overloaded function found
|
||||||
ERROR: 0:41: 'extraneous semicolon' : not supported for this version or the enabled extensions
|
ERROR: 0:41: 'gl_BaseVertex' : undeclared identifier
|
||||||
ERROR: 13 compilation errors. No code generated.
|
ERROR: 0:41: 'gl_BaseInstance' : undeclared identifier
|
||||||
|
ERROR: 0:41: 'gl_DrawID' : undeclared identifier
|
||||||
|
ERROR: 0:41: '=' : cannot convert from ' temp float' to ' temp int'
|
||||||
|
ERROR: 0:43: 'extraneous semicolon' : not supported for this version or the enabled extensions
|
||||||
|
ERROR: 17 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 450
|
Shader version: 450
|
||||||
|
45
Test/baseResults/spv.460.vert.out
Executable file
45
Test/baseResults/spv.460.vert.out
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
spv.460.vert
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80001
|
||||||
|
// Id's are bound by 20
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability DrawParameters
|
||||||
|
Extension "SPV_KHR_shader_draw_parameters"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 10 12 15 18 19
|
||||||
|
Source GLSL 460
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "a"
|
||||||
|
Name 10 "gl_BaseVertex"
|
||||||
|
Name 12 "gl_BaseInstance"
|
||||||
|
Name 15 "gl_DrawID"
|
||||||
|
Name 18 "gl_VertexID"
|
||||||
|
Name 19 "gl_InstanceID"
|
||||||
|
Decorate 10(gl_BaseVertex) BuiltIn BaseVertex
|
||||||
|
Decorate 12(gl_BaseInstance) BuiltIn BaseInstance
|
||||||
|
Decorate 15(gl_DrawID) BuiltIn DrawIndex
|
||||||
|
Decorate 18(gl_VertexID) BuiltIn VertexId
|
||||||
|
Decorate 19(gl_InstanceID) BuiltIn InstanceId
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeInt 32 1
|
||||||
|
7: TypePointer Function 6(int)
|
||||||
|
9: TypePointer Input 6(int)
|
||||||
|
10(gl_BaseVertex): 9(ptr) Variable Input
|
||||||
|
12(gl_BaseInstance): 9(ptr) Variable Input
|
||||||
|
15(gl_DrawID): 9(ptr) Variable Input
|
||||||
|
18(gl_VertexID): 9(ptr) Variable Input
|
||||||
|
19(gl_InstanceID): 9(ptr) Variable Input
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
8(a): 7(ptr) Variable Function
|
||||||
|
11: 6(int) Load 10(gl_BaseVertex)
|
||||||
|
13: 6(int) Load 12(gl_BaseInstance)
|
||||||
|
14: 6(int) IAdd 11 13
|
||||||
|
16: 6(int) Load 15(gl_DrawID)
|
||||||
|
17: 6(int) IAdd 14 16
|
||||||
|
Store 8(a) 17
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
6
Test/spv.460.vert
Normal file
6
Test/spv.460.vert
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#version 460
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID;
|
||||||
|
}
|
@ -3416,6 +3416,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
"in int gl_DrawIDARB;"
|
"in int gl_DrawIDARB;"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if (version >= 460) {
|
||||||
|
stageBuiltins[EShLangVertex].append(
|
||||||
|
"in int gl_BaseVertex;"
|
||||||
|
"in int gl_BaseInstance;"
|
||||||
|
"in int gl_DrawID;"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef NV_EXTENSIONS
|
#ifdef NV_EXTENSIONS
|
||||||
if (version >= 450)
|
if (version >= 450)
|
||||||
@ -5230,16 +5237,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||||||
switch(language) {
|
switch(language) {
|
||||||
case EShLangVertex:
|
case EShLangVertex:
|
||||||
if (profile != EEsProfile) {
|
if (profile != EEsProfile) {
|
||||||
|
if (version >= 440) {
|
||||||
symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters);
|
symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters);
|
||||||
symbolTable.setVariableExtensions("gl_BaseInstanceARB", 1, &E_GL_ARB_shader_draw_parameters);
|
symbolTable.setVariableExtensions("gl_BaseInstanceARB", 1, &E_GL_ARB_shader_draw_parameters);
|
||||||
symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters);
|
symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters);
|
||||||
|
|
||||||
BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable);
|
BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable);
|
||||||
BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable);
|
BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable);
|
||||||
BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable);
|
BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable);
|
||||||
}
|
}
|
||||||
|
if (version >= 460) {
|
||||||
if (profile != EEsProfile) {
|
BuiltInVariable("gl_BaseVertex", EbvBaseVertex, symbolTable);
|
||||||
|
BuiltInVariable("gl_BaseInstance", EbvBaseInstance, symbolTable);
|
||||||
|
BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable);
|
||||||
|
}
|
||||||
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
|
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
|
||||||
symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot);
|
symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot);
|
||||||
symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot);
|
symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot);
|
||||||
|
@ -361,6 +361,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
Glsl, CompileOpenGLToSpirvTest,
|
Glsl, CompileOpenGLToSpirvTest,
|
||||||
::testing::ValuesIn(std::vector<std::string>({
|
::testing::ValuesIn(std::vector<std::string>({
|
||||||
"spv.460.frag",
|
"spv.460.frag",
|
||||||
|
"spv.460.vert",
|
||||||
"spv.atomic.comp",
|
"spv.atomic.comp",
|
||||||
"spv.glFragColor.frag",
|
"spv.glFragColor.frag",
|
||||||
"spv.specConst.vert",
|
"spv.specConst.vert",
|
||||||
|
Loading…
Reference in New Issue
Block a user