atomicCounterXor(aui, ui); // ERROR, need 4.6\r
atomicCounterExchange(aui, ui); // ERROR, need 4.6\r
atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6\r
+\r
+ int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6\r
}\r
; // ERROR: no extraneous semicolons\r
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
--- /dev/null
+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
--- /dev/null
+#version 460\r
+\r
+void main()\r
+{\r
+ int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID;\r
+}\r
"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)
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);
Glsl, CompileOpenGLToSpirvTest,
::testing::ValuesIn(std::vector<std::string>({
"spv.460.frag",
+ "spv.460.vert",
"spv.atomic.comp",
"spv.glFragColor.frag",
"spv.specConst.vert",