Merge pull request #2948 from Gabriele91/fix/HLSL-Instance-attribute-as-spirv-invocation-attribute
HLSL Instance attribute translated as spirv invocations attribute
This commit is contained in:
commit
8735cdbf78
433
Test/baseResults/hlsl.instance.geom.out
Normal file
433
Test/baseResults/hlsl.instance.geom.out
Normal file
@ -0,0 +1,433 @@
|
|||||||
|
hlsl.instance.geom
|
||||||
|
Shader version: 500
|
||||||
|
invocations = 5
|
||||||
|
max_vertices = 3
|
||||||
|
input primitive = triangles
|
||||||
|
output primitive = triangle_strip
|
||||||
|
0:? Sequence
|
||||||
|
0:10 Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
|
||||||
|
0:10 Function Parameters:
|
||||||
|
0:10 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 'output' ( out structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 'id' ( in uint)
|
||||||
|
0:? Sequence
|
||||||
|
0:12 Sequence
|
||||||
|
0:12 move second child to first child ( temp int)
|
||||||
|
0:12 'i' ( temp int)
|
||||||
|
0:12 Constant:
|
||||||
|
0:12 0 (const int)
|
||||||
|
0:12 Loop with condition tested first: DontUnroll
|
||||||
|
0:12 Loop Condition
|
||||||
|
0:12 Compare Less Than ( temp bool)
|
||||||
|
0:12 'i' ( temp int)
|
||||||
|
0:12 Constant:
|
||||||
|
0:12 3 (const int)
|
||||||
|
0:12 Loop Body
|
||||||
|
0:? Sequence
|
||||||
|
0:14 Sequence
|
||||||
|
0:14 Sequence
|
||||||
|
0:14 move second child to first child ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 indirect index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 'i' ( temp int)
|
||||||
|
0:14 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:? 'output.m_position' ( out 4-component vector of float Position)
|
||||||
|
0:14 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 Constant:
|
||||||
|
0:14 0 (const int)
|
||||||
|
0:14 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
|
||||||
|
0:14 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 Constant:
|
||||||
|
0:14 1 (const int)
|
||||||
|
0:14 EmitVertex ( temp void)
|
||||||
|
0:12 Loop Terminal Expression
|
||||||
|
0:12 Pre-Increment ( temp int)
|
||||||
|
0:12 'i' ( temp int)
|
||||||
|
0:16 EndPrimitive ( temp void)
|
||||||
|
0:10 Function Definition: GeometryShader( ( temp void)
|
||||||
|
0:10 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:10 Sequence
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 direct index (layout( location=0) in 4-component vector of float)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 direct index (layout( location=0) in 4-component vector of float)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 direct index (layout( location=0) in 4-component vector of float)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 move second child to first child ( temp uint)
|
||||||
|
0:? 'id' ( temp uint)
|
||||||
|
0:? 'id' ( in uint InvocationID)
|
||||||
|
0:10 Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'output' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'id' ( temp uint)
|
||||||
|
0:? Linker Objects
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:? 'id' ( in uint InvocationID)
|
||||||
|
0:? 'output.m_position' ( out 4-component vector of float Position)
|
||||||
|
0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
|
||||||
|
|
||||||
|
|
||||||
|
Linked geometry stage:
|
||||||
|
|
||||||
|
|
||||||
|
Shader version: 500
|
||||||
|
invocations = 5
|
||||||
|
max_vertices = 3
|
||||||
|
input primitive = triangles
|
||||||
|
output primitive = triangle_strip
|
||||||
|
0:? Sequence
|
||||||
|
0:10 Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
|
||||||
|
0:10 Function Parameters:
|
||||||
|
0:10 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 'output' ( out structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 'id' ( in uint)
|
||||||
|
0:? Sequence
|
||||||
|
0:12 Sequence
|
||||||
|
0:12 move second child to first child ( temp int)
|
||||||
|
0:12 'i' ( temp int)
|
||||||
|
0:12 Constant:
|
||||||
|
0:12 0 (const int)
|
||||||
|
0:12 Loop with condition tested first: DontUnroll
|
||||||
|
0:12 Loop Condition
|
||||||
|
0:12 Compare Less Than ( temp bool)
|
||||||
|
0:12 'i' ( temp int)
|
||||||
|
0:12 Constant:
|
||||||
|
0:12 3 (const int)
|
||||||
|
0:12 Loop Body
|
||||||
|
0:? Sequence
|
||||||
|
0:14 Sequence
|
||||||
|
0:14 Sequence
|
||||||
|
0:14 move second child to first child ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 indirect index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 'i' ( temp int)
|
||||||
|
0:14 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:? 'output.m_position' ( out 4-component vector of float Position)
|
||||||
|
0:14 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 Constant:
|
||||||
|
0:14 0 (const int)
|
||||||
|
0:14 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
|
||||||
|
0:14 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:14 Constant:
|
||||||
|
0:14 1 (const int)
|
||||||
|
0:14 EmitVertex ( temp void)
|
||||||
|
0:12 Loop Terminal Expression
|
||||||
|
0:12 Pre-Increment ( temp int)
|
||||||
|
0:12 'i' ( temp int)
|
||||||
|
0:16 EndPrimitive ( temp void)
|
||||||
|
0:10 Function Definition: GeometryShader( ( temp void)
|
||||||
|
0:10 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:10 Sequence
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 direct index (layout( location=0) in 4-component vector of float)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 direct index (layout( location=0) in 4-component vector of float)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 0 (const int)
|
||||||
|
0:10 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:10 m_color: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 1 (const int)
|
||||||
|
0:10 direct index (layout( location=0) in 4-component vector of float)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:10 Constant:
|
||||||
|
0:10 2 (const int)
|
||||||
|
0:10 move second child to first child ( temp uint)
|
||||||
|
0:? 'id' ( temp uint)
|
||||||
|
0:? 'id' ( in uint InvocationID)
|
||||||
|
0:10 Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
|
||||||
|
0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'output' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
|
||||||
|
0:? 'id' ( temp uint)
|
||||||
|
0:? Linker Objects
|
||||||
|
0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
|
||||||
|
0:? 'id' ( in uint InvocationID)
|
||||||
|
0:? 'output.m_position' ( out 4-component vector of float Position)
|
||||||
|
0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
|
||||||
|
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000a
|
||||||
|
// Id's are bound by 86
|
||||||
|
|
||||||
|
Capability Geometry
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Geometry 4 "GeometryShader" 39 43 52 57 76
|
||||||
|
ExecutionMode 4 Triangles
|
||||||
|
ExecutionMode 4 Invocations 5
|
||||||
|
ExecutionMode 4 OutputTriangleStrip
|
||||||
|
ExecutionMode 4 OutputVertices 3
|
||||||
|
Source HLSL 500
|
||||||
|
Name 4 "GeometryShader"
|
||||||
|
Name 8 "VertexShaderOutput"
|
||||||
|
MemberName 8(VertexShaderOutput) 0 "m_position"
|
||||||
|
MemberName 8(VertexShaderOutput) 1 "m_color"
|
||||||
|
Name 19 "@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;"
|
||||||
|
Name 16 "input"
|
||||||
|
Name 17 "output"
|
||||||
|
Name 18 "id"
|
||||||
|
Name 23 "i"
|
||||||
|
Name 34 "flattenTemp"
|
||||||
|
Name 39 "output.m_position"
|
||||||
|
Name 43 "output.m_color"
|
||||||
|
Name 49 "input"
|
||||||
|
Name 52 "input.m_position"
|
||||||
|
Name 57 "input.m_color"
|
||||||
|
Name 74 "id"
|
||||||
|
Name 76 "id"
|
||||||
|
Name 78 "output"
|
||||||
|
Name 79 "param"
|
||||||
|
Name 81 "param"
|
||||||
|
Name 82 "param"
|
||||||
|
Decorate 39(output.m_position) BuiltIn Position
|
||||||
|
Decorate 43(output.m_color) Location 0
|
||||||
|
Decorate 52(input.m_position) BuiltIn Position
|
||||||
|
Decorate 57(input.m_color) Location 0
|
||||||
|
Decorate 76(id) BuiltIn InvocationId
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8(VertexShaderOutput): TypeStruct 7(fvec4) 7(fvec4)
|
||||||
|
9: TypeInt 32 0
|
||||||
|
10: 9(int) Constant 3
|
||||||
|
11: TypeArray 8(VertexShaderOutput) 10
|
||||||
|
12: TypePointer Function 11
|
||||||
|
13: TypePointer Function 8(VertexShaderOutput)
|
||||||
|
14: TypePointer Function 9(int)
|
||||||
|
15: TypeFunction 2 12(ptr) 13(ptr) 14(ptr)
|
||||||
|
21: TypeInt 32 1
|
||||||
|
22: TypePointer Function 21(int)
|
||||||
|
24: 21(int) Constant 0
|
||||||
|
31: 21(int) Constant 3
|
||||||
|
32: TypeBool
|
||||||
|
38: TypePointer Output 7(fvec4)
|
||||||
|
39(output.m_position): 38(ptr) Variable Output
|
||||||
|
40: TypePointer Function 7(fvec4)
|
||||||
|
43(output.m_color): 38(ptr) Variable Output
|
||||||
|
44: 21(int) Constant 1
|
||||||
|
50: TypeArray 7(fvec4) 10
|
||||||
|
51: TypePointer Input 50
|
||||||
|
52(input.m_position): 51(ptr) Variable Input
|
||||||
|
53: TypePointer Input 7(fvec4)
|
||||||
|
57(input.m_color): 51(ptr) Variable Input
|
||||||
|
67: 21(int) Constant 2
|
||||||
|
75: TypePointer Input 9(int)
|
||||||
|
76(id): 75(ptr) Variable Input
|
||||||
|
4(GeometryShader): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
49(input): 12(ptr) Variable Function
|
||||||
|
74(id): 14(ptr) Variable Function
|
||||||
|
78(output): 13(ptr) Variable Function
|
||||||
|
79(param): 12(ptr) Variable Function
|
||||||
|
81(param): 13(ptr) Variable Function
|
||||||
|
82(param): 14(ptr) Variable Function
|
||||||
|
54: 53(ptr) AccessChain 52(input.m_position) 24
|
||||||
|
55: 7(fvec4) Load 54
|
||||||
|
56: 40(ptr) AccessChain 49(input) 24 24
|
||||||
|
Store 56 55
|
||||||
|
58: 53(ptr) AccessChain 57(input.m_color) 24
|
||||||
|
59: 7(fvec4) Load 58
|
||||||
|
60: 40(ptr) AccessChain 49(input) 24 44
|
||||||
|
Store 60 59
|
||||||
|
61: 53(ptr) AccessChain 52(input.m_position) 44
|
||||||
|
62: 7(fvec4) Load 61
|
||||||
|
63: 40(ptr) AccessChain 49(input) 44 24
|
||||||
|
Store 63 62
|
||||||
|
64: 53(ptr) AccessChain 57(input.m_color) 44
|
||||||
|
65: 7(fvec4) Load 64
|
||||||
|
66: 40(ptr) AccessChain 49(input) 44 44
|
||||||
|
Store 66 65
|
||||||
|
68: 53(ptr) AccessChain 52(input.m_position) 67
|
||||||
|
69: 7(fvec4) Load 68
|
||||||
|
70: 40(ptr) AccessChain 49(input) 67 24
|
||||||
|
Store 70 69
|
||||||
|
71: 53(ptr) AccessChain 57(input.m_color) 67
|
||||||
|
72: 7(fvec4) Load 71
|
||||||
|
73: 40(ptr) AccessChain 49(input) 67 44
|
||||||
|
Store 73 72
|
||||||
|
77: 9(int) Load 76(id)
|
||||||
|
Store 74(id) 77
|
||||||
|
80: 11 Load 49(input)
|
||||||
|
Store 79(param) 80
|
||||||
|
83: 9(int) Load 74(id)
|
||||||
|
Store 82(param) 83
|
||||||
|
84: 2 FunctionCall 19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;) 79(param) 81(param) 82(param)
|
||||||
|
85:8(VertexShaderOutput) Load 81(param)
|
||||||
|
Store 78(output) 85
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;): 2 Function None 15
|
||||||
|
16(input): 12(ptr) FunctionParameter
|
||||||
|
17(output): 13(ptr) FunctionParameter
|
||||||
|
18(id): 14(ptr) FunctionParameter
|
||||||
|
20: Label
|
||||||
|
23(i): 22(ptr) Variable Function
|
||||||
|
34(flattenTemp): 13(ptr) Variable Function
|
||||||
|
Store 23(i) 24
|
||||||
|
Branch 25
|
||||||
|
25: Label
|
||||||
|
LoopMerge 27 28 DontUnroll
|
||||||
|
Branch 29
|
||||||
|
29: Label
|
||||||
|
30: 21(int) Load 23(i)
|
||||||
|
33: 32(bool) SLessThan 30 31
|
||||||
|
BranchConditional 33 26 27
|
||||||
|
26: Label
|
||||||
|
35: 21(int) Load 23(i)
|
||||||
|
36: 13(ptr) AccessChain 16(input) 35
|
||||||
|
37:8(VertexShaderOutput) Load 36
|
||||||
|
Store 34(flattenTemp) 37
|
||||||
|
41: 40(ptr) AccessChain 34(flattenTemp) 24
|
||||||
|
42: 7(fvec4) Load 41
|
||||||
|
Store 39(output.m_position) 42
|
||||||
|
45: 40(ptr) AccessChain 34(flattenTemp) 44
|
||||||
|
46: 7(fvec4) Load 45
|
||||||
|
Store 43(output.m_color) 46
|
||||||
|
EmitVertex
|
||||||
|
Branch 28
|
||||||
|
28: Label
|
||||||
|
47: 21(int) Load 23(i)
|
||||||
|
48: 21(int) IAdd 47 44
|
||||||
|
Store 23(i) 48
|
||||||
|
Branch 25
|
||||||
|
27: Label
|
||||||
|
EndPrimitive
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
17
Test/hlsl.instance.geom
Normal file
17
Test/hlsl.instance.geom
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
struct VertexShaderOutput
|
||||||
|
{
|
||||||
|
float4 m_position : SV_POSITION;
|
||||||
|
float4 m_color : COLOR0;
|
||||||
|
};
|
||||||
|
|
||||||
|
[maxvertexcount(3)]
|
||||||
|
[instance(5)]
|
||||||
|
void GeometryShader(triangle VertexShaderOutput input[3], inout TriangleStream<VertexShaderOutput> output, uint id : SV_GSInstanceID)
|
||||||
|
{
|
||||||
|
[loop]
|
||||||
|
for (int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
output.Append(input[i]);
|
||||||
|
}
|
||||||
|
output.RestartStrip();
|
||||||
|
}
|
@ -1754,6 +1754,18 @@ void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const T
|
|||||||
intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst());
|
intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EatInstance:
|
||||||
|
{
|
||||||
|
int invocations;
|
||||||
|
|
||||||
|
if (!it->getInt(invocations)) {
|
||||||
|
error(loc, "invalid instance", "", "");
|
||||||
|
} else {
|
||||||
|
if (!intermediate.setInvocations(invocations))
|
||||||
|
error(loc, "cannot change previously set instance attribute", "", "");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case EatMaxVertexCount:
|
case EatMaxVertexCount:
|
||||||
{
|
{
|
||||||
int maxVertexCount;
|
int maxVertexCount;
|
||||||
|
@ -434,7 +434,8 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
{"hlsl.typedef.frag", "PixelShaderFunction"},
|
{"hlsl.typedef.frag", "PixelShaderFunction"},
|
||||||
{"hlsl.whileLoop.frag", "PixelShaderFunction"},
|
{"hlsl.whileLoop.frag", "PixelShaderFunction"},
|
||||||
{"hlsl.void.frag", "PixelShaderFunction"},
|
{"hlsl.void.frag", "PixelShaderFunction"},
|
||||||
{"hlsl.type.type.conversion.all.frag", "main"}
|
{"hlsl.type.type.conversion.all.frag", "main"},
|
||||||
|
{"hlsl.instance.geom", "GeometryShader"}
|
||||||
}),
|
}),
|
||||||
FileNameAsCustomTestSuffix
|
FileNameAsCustomTestSuffix
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user