Merge pull request #1595 from dgkoch/EXT_fragment_invocation_density
Implement GL_EXT_fragment_invocation_density
This commit is contained in:
45
Test/baseResults/spv.fragmentDensity-es.frag.out
Normal file
45
Test/baseResults/spv.fragmentDensity-es.frag.out
Normal file
@@ -0,0 +1,45 @@
|
||||
spv.fragmentDensity-es.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 18
|
||||
|
||||
Capability Shader
|
||||
Capability FragmentDensityEXT
|
||||
Extension "SPV_EXT_fragment_invocation_density"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 9 11 14 16
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source ESSL 310
|
||||
SourceExtension "GL_EXT_fragment_invocation_density"
|
||||
Name 4 "main"
|
||||
Name 9 "FragSize"
|
||||
Name 11 "gl_FragSizeEXT"
|
||||
Name 14 "FragInvocationCount"
|
||||
Name 16 "gl_FragInvocationCountEXT"
|
||||
Decorate 9(FragSize) Location 0
|
||||
Decorate 11(gl_FragSizeEXT) Flat
|
||||
Decorate 11(gl_FragSizeEXT) BuiltIn FragSizeEXT
|
||||
Decorate 14(FragInvocationCount) Location 2
|
||||
Decorate 16(gl_FragInvocationCountEXT) Flat
|
||||
Decorate 16(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypeVector 6(int) 2
|
||||
8: TypePointer Output 7(ivec2)
|
||||
9(FragSize): 8(ptr) Variable Output
|
||||
10: TypePointer Input 7(ivec2)
|
||||
11(gl_FragSizeEXT): 10(ptr) Variable Input
|
||||
13: TypePointer Output 6(int)
|
||||
14(FragInvocationCount): 13(ptr) Variable Output
|
||||
15: TypePointer Input 6(int)
|
||||
16(gl_FragInvocationCountEXT): 15(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
12: 7(ivec2) Load 11(gl_FragSizeEXT)
|
||||
Store 9(FragSize) 12
|
||||
17: 6(int) Load 16(gl_FragInvocationCountEXT)
|
||||
Store 14(FragInvocationCount) 17
|
||||
Return
|
||||
FunctionEnd
|
||||
7
Test/baseResults/spv.fragmentDensity-neg.frag.out
Normal file
7
Test/baseResults/spv.fragmentDensity-neg.frag.out
Normal file
@@ -0,0 +1,7 @@
|
||||
spv.fragmentDensity-neg.frag
|
||||
ERROR: 0:10: 'gl_FragSizeEXT' : required extension not requested: GL_EXT_fragment_invocation_density
|
||||
ERROR: 0:11: 'gl_FragInvocationCountEXT' : required extension not requested: GL_EXT_fragment_invocation_density
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
48
Test/baseResults/spv.fragmentDensity.frag.out
Normal file
48
Test/baseResults/spv.fragmentDensity.frag.out
Normal file
@@ -0,0 +1,48 @@
|
||||
spv.fragmentDensity.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 21
|
||||
|
||||
Capability Shader
|
||||
Capability FragmentDensityEXT
|
||||
Extension "SPV_EXT_fragment_invocation_density"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 9 13 17 19
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
SourceExtension "GL_EXT_fragment_invocation_density"
|
||||
Name 4 "main"
|
||||
Name 9 "FragSize"
|
||||
Name 13 "gl_FragSizeEXT"
|
||||
Name 17 "FragInvocationCount"
|
||||
Name 19 "gl_FragInvocationCountEXT"
|
||||
Decorate 9(FragSize) Location 0
|
||||
Decorate 13(gl_FragSizeEXT) Flat
|
||||
Decorate 13(gl_FragSizeEXT) BuiltIn FragSizeEXT
|
||||
Decorate 17(FragInvocationCount) Location 2
|
||||
Decorate 19(gl_FragInvocationCountEXT) Flat
|
||||
Decorate 19(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 2
|
||||
8: TypePointer Output 7(fvec2)
|
||||
9(FragSize): 8(ptr) Variable Output
|
||||
10: TypeInt 32 1
|
||||
11: TypeVector 10(int) 2
|
||||
12: TypePointer Input 11(ivec2)
|
||||
13(gl_FragSizeEXT): 12(ptr) Variable Input
|
||||
16: TypePointer Output 10(int)
|
||||
17(FragInvocationCount): 16(ptr) Variable Output
|
||||
18: TypePointer Input 10(int)
|
||||
19(gl_FragInvocationCountEXT): 18(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
14: 11(ivec2) Load 13(gl_FragSizeEXT)
|
||||
15: 7(fvec2) ConvertSToF 14
|
||||
Store 9(FragSize) 15
|
||||
20: 10(int) Load 19(gl_FragInvocationCountEXT)
|
||||
Store 17(FragInvocationCount) 20
|
||||
Return
|
||||
FunctionEnd
|
||||
9
Test/baseResults/spv.fragmentDensity.vert.out
Normal file
9
Test/baseResults/spv.fragmentDensity.vert.out
Normal file
@@ -0,0 +1,9 @@
|
||||
spv.fragmentDensity.vert
|
||||
ERROR: 0:10: 'gl_FragSizeEXT' : undeclared identifier
|
||||
ERROR: 0:10: 'assign' : cannot convert from ' temp float' to 'layout( location=0) smooth out highp 2-component vector of uint'
|
||||
ERROR: 0:11: 'gl_FragInvocationCountEXT' : undeclared identifier
|
||||
ERROR: 0:11: 'assign' : cannot convert from ' temp float' to 'layout( location=2) smooth out highp int'
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
@@ -4,7 +4,7 @@ spv.shadingRate.frag
|
||||
// Id's are bound by 21
|
||||
|
||||
Capability Shader
|
||||
Capability ShadingRateNV
|
||||
Capability FragmentDensityEXT
|
||||
Extension "SPV_NV_shading_rate"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
@@ -19,10 +19,10 @@ spv.shadingRate.frag
|
||||
Name 19 "gl_InvocationsPerPixelNV"
|
||||
Decorate 9(FragmentSize) Location 0
|
||||
Decorate 13(gl_FragmentSizeNV) Flat
|
||||
Decorate 13(gl_FragmentSizeNV) BuiltIn FragmentSizeNV
|
||||
Decorate 13(gl_FragmentSizeNV) BuiltIn FragSizeEXT
|
||||
Decorate 17(InvocationsPerPixel) Location 2
|
||||
Decorate 19(gl_InvocationsPerPixelNV) Flat
|
||||
Decorate 19(gl_InvocationsPerPixelNV) BuiltIn InvocationsPerPixelNV
|
||||
Decorate 19(gl_InvocationsPerPixelNV) BuiltIn FragInvocationCountEXT
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
||||
11
Test/spv.fragmentDensity-es.frag
Normal file
11
Test/spv.fragmentDensity-es.frag
Normal file
@@ -0,0 +1,11 @@
|
||||
#version 310 es
|
||||
|
||||
#extension GL_EXT_fragment_invocation_density : require
|
||||
|
||||
layout (location = 0) out highp ivec2 FragSize;
|
||||
layout (location = 2) out highp int FragInvocationCount;
|
||||
|
||||
void main () {
|
||||
FragSize = gl_FragSizeEXT;
|
||||
FragInvocationCount = gl_FragInvocationCountEXT;
|
||||
}
|
||||
12
Test/spv.fragmentDensity-neg.frag
Normal file
12
Test/spv.fragmentDensity-neg.frag
Normal file
@@ -0,0 +1,12 @@
|
||||
#version 450
|
||||
|
||||
//make sure the builtins don't exist if the extension isn't enabled.
|
||||
//#extension GL_EXT_fragment_invocation_density : require
|
||||
|
||||
layout (location = 0) out vec2 FragSize;
|
||||
layout (location = 2) out int FragInvocationCount;
|
||||
|
||||
void main () {
|
||||
FragSize = gl_FragSizeEXT;
|
||||
FragInvocationCount = gl_FragInvocationCountEXT;
|
||||
}
|
||||
11
Test/spv.fragmentDensity.frag
Normal file
11
Test/spv.fragmentDensity.frag
Normal file
@@ -0,0 +1,11 @@
|
||||
#version 450
|
||||
|
||||
#extension GL_EXT_fragment_invocation_density : require
|
||||
|
||||
layout (location = 0) out vec2 FragSize;
|
||||
layout (location = 2) out int FragInvocationCount;
|
||||
|
||||
void main () {
|
||||
FragSize = gl_FragSizeEXT;
|
||||
FragInvocationCount = gl_FragInvocationCountEXT;
|
||||
}
|
||||
12
Test/spv.fragmentDensity.vert
Normal file
12
Test/spv.fragmentDensity.vert
Normal file
@@ -0,0 +1,12 @@
|
||||
#version 450
|
||||
|
||||
// try using a fragment-only extension in a vertex shader
|
||||
#extension GL_EXT_fragment_invocation_density : require
|
||||
|
||||
layout (location = 0) out uvec2 FragSize;
|
||||
layout (location = 2) out int FragInvocationCount;
|
||||
|
||||
void main () {
|
||||
FragSize = gl_FragSizeEXT;
|
||||
FragInvocationCount = gl_FragInvocationCountEXT;
|
||||
}
|
||||
Reference in New Issue
Block a user