mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +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
|
||||
atomicCounterExchange(aui, 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
|
||||
|
@ -11,8 +11,12 @@ ERROR: 0:36: 'atomicCounterOr' : 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:39: 'atomicCounterCompSwap' : no matching overloaded function found
|
||||
ERROR: 0:41: 'extraneous semicolon' : not supported for this version or the enabled extensions
|
||||
ERROR: 13 compilation errors. No code generated.
|
||||
ERROR: 0:41: 'gl_BaseVertex' : undeclared identifier
|
||||
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
|
||||
|
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;"
|
||||
);
|
||||
}
|
||||
if (version >= 460) {
|
||||
stageBuiltins[EShLangVertex].append(
|
||||
"in int gl_BaseVertex;"
|
||||
"in int gl_BaseInstance;"
|
||||
"in int gl_DrawID;"
|
||||
);
|
||||
}
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
if (version >= 450)
|
||||
@ -5230,16 +5237,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
||||
switch(language) {
|
||||
case EShLangVertex:
|
||||
if (profile != EEsProfile) {
|
||||
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_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters);
|
||||
|
||||
BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable);
|
||||
BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable);
|
||||
BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable);
|
||||
}
|
||||
|
||||
if (profile != EEsProfile) {
|
||||
if (version >= 440) {
|
||||
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_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters);
|
||||
BuiltInVariable("gl_BaseVertexARB", EbvBaseVertex, symbolTable);
|
||||
BuiltInVariable("gl_BaseInstanceARB", EbvBaseInstance, symbolTable);
|
||||
BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable);
|
||||
}
|
||||
if (version >= 460) {
|
||||
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_SubGroupInvocationARB", 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,
|
||||
::testing::ValuesIn(std::vector<std::string>({
|
||||
"spv.460.frag",
|
||||
"spv.460.vert",
|
||||
"spv.atomic.comp",
|
||||
"spv.glFragColor.frag",
|
||||
"spv.specConst.vert",
|
||||
|
Loading…
Reference in New Issue
Block a user