Add a test for empty structs in HLSL hull shaders
This commit is contained in:
parent
4142fead74
commit
68f073b195
606
Test/baseResults/hlsl.emptystructreturn.tesc.out
Normal file
606
Test/baseResults/hlsl.emptystructreturn.tesc.out
Normal file
@ -0,0 +1,606 @@
|
|||||||
|
hlsl.emptystructreturn.tesc
|
||||||
|
Shader version: 500
|
||||||
|
vertices = 3
|
||||||
|
vertex spacing = equal_spacing
|
||||||
|
triangle order = cw
|
||||||
|
0:? Sequence
|
||||||
|
0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||||
|
0:16 Function Parameters:
|
||||||
|
0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:20 Function Parameters:
|
||||||
|
0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:20 'patchId' ( in uint)
|
||||||
|
0:? Sequence
|
||||||
|
0:24 move second child to first child ( temp float)
|
||||||
|
0:24 direct index ( temp float)
|
||||||
|
0:24 edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:24 Constant:
|
||||||
|
0:24 0 (const int)
|
||||||
|
0:24 Constant:
|
||||||
|
0:24 0 (const int)
|
||||||
|
0:24 Constant:
|
||||||
|
0:24 2.000000
|
||||||
|
0:25 move second child to first child ( temp float)
|
||||||
|
0:25 direct index ( temp float)
|
||||||
|
0:25 edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:25 Constant:
|
||||||
|
0:25 0 (const int)
|
||||||
|
0:25 Constant:
|
||||||
|
0:25 1 (const int)
|
||||||
|
0:25 Constant:
|
||||||
|
0:25 2.000000
|
||||||
|
0:26 move second child to first child ( temp float)
|
||||||
|
0:26 direct index ( temp float)
|
||||||
|
0:26 edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:26 Constant:
|
||||||
|
0:26 0 (const int)
|
||||||
|
0:26 Constant:
|
||||||
|
0:26 2 (const int)
|
||||||
|
0:26 Constant:
|
||||||
|
0:26 2.000000
|
||||||
|
0:29 move second child to first child ( temp float)
|
||||||
|
0:29 inside: direct index for structure ( temp float)
|
||||||
|
0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:29 Constant:
|
||||||
|
0:29 1 (const int)
|
||||||
|
0:29 Constant:
|
||||||
|
0:29 2.000000
|
||||||
|
0:31 Branch: Return with expression
|
||||||
|
0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||||
|
0:42 Function Parameters:
|
||||||
|
0:42 'stage_input' ( in structure{})
|
||||||
|
0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 'pointId' ( in uint)
|
||||||
|
0:42 'patchId' ( in uint)
|
||||||
|
0:? Sequence
|
||||||
|
0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||||
|
0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:46 Branch: Return with expression
|
||||||
|
0:46 'output' ( temp structure{})
|
||||||
|
0:42 Function Definition: main( ( temp void)
|
||||||
|
0:42 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:42 Sequence
|
||||||
|
0:42 move second child to first child ( temp structure{})
|
||||||
|
0:? 'stage_input' ( temp structure{})
|
||||||
|
0:? 'stage_input' ( in structure{})
|
||||||
|
0:42 Sequence
|
||||||
|
0:42 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 1 (const int)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 1 (const int)
|
||||||
|
0:42 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 2 (const int)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 2 (const int)
|
||||||
|
0:42 move second child to first child ( temp uint)
|
||||||
|
0:? 'pointId' ( temp uint)
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:42 move second child to first child ( temp uint)
|
||||||
|
0:? 'patchId' ( temp uint)
|
||||||
|
0:? 'patchId' ( in uint PrimitiveID)
|
||||||
|
0:42 Sequence
|
||||||
|
0:42 move second child to first child ( temp structure{})
|
||||||
|
0:42 indirect index ( out structure{})
|
||||||
|
0:? '@entryPointOutput' ( out 3-element array of structure{})
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||||
|
0:? 'stage_input' ( temp structure{})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'pointId' ( temp uint)
|
||||||
|
0:? 'patchId' ( temp uint)
|
||||||
|
0:? Barrier ( temp void)
|
||||||
|
0:? Test condition and select ( temp void)
|
||||||
|
0:? Condition
|
||||||
|
0:? Compare Equal ( temp bool)
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? true case
|
||||||
|
0:? Sequence
|
||||||
|
0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patchId' ( in uint PrimitiveID)
|
||||||
|
0:? Sequence
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? direct index ( temp float)
|
||||||
|
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 1 (const int)
|
||||||
|
0:? direct index ( temp float)
|
||||||
|
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 1 (const int)
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 2 (const int)
|
||||||
|
0:? direct index ( temp float)
|
||||||
|
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 2 (const int)
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelInner)
|
||||||
|
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? inside: direct index for structure ( temp float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 1 (const int)
|
||||||
|
0:? Linker Objects
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:? 'patchId' ( in uint PrimitiveID)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||||
|
|
||||||
|
|
||||||
|
Linked tessellation control stage:
|
||||||
|
|
||||||
|
|
||||||
|
Shader version: 500
|
||||||
|
vertices = 3
|
||||||
|
vertex spacing = equal_spacing
|
||||||
|
triangle order = cw
|
||||||
|
0:? Sequence
|
||||||
|
0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||||
|
0:16 Function Parameters:
|
||||||
|
0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:20 Function Parameters:
|
||||||
|
0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:20 'patchId' ( in uint)
|
||||||
|
0:? Sequence
|
||||||
|
0:24 move second child to first child ( temp float)
|
||||||
|
0:24 direct index ( temp float)
|
||||||
|
0:24 edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:24 Constant:
|
||||||
|
0:24 0 (const int)
|
||||||
|
0:24 Constant:
|
||||||
|
0:24 0 (const int)
|
||||||
|
0:24 Constant:
|
||||||
|
0:24 2.000000
|
||||||
|
0:25 move second child to first child ( temp float)
|
||||||
|
0:25 direct index ( temp float)
|
||||||
|
0:25 edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:25 Constant:
|
||||||
|
0:25 0 (const int)
|
||||||
|
0:25 Constant:
|
||||||
|
0:25 1 (const int)
|
||||||
|
0:25 Constant:
|
||||||
|
0:25 2.000000
|
||||||
|
0:26 move second child to first child ( temp float)
|
||||||
|
0:26 direct index ( temp float)
|
||||||
|
0:26 edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:26 Constant:
|
||||||
|
0:26 0 (const int)
|
||||||
|
0:26 Constant:
|
||||||
|
0:26 2 (const int)
|
||||||
|
0:26 Constant:
|
||||||
|
0:26 2.000000
|
||||||
|
0:29 move second child to first child ( temp float)
|
||||||
|
0:29 inside: direct index for structure ( temp float)
|
||||||
|
0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:29 Constant:
|
||||||
|
0:29 1 (const int)
|
||||||
|
0:29 Constant:
|
||||||
|
0:29 2.000000
|
||||||
|
0:31 Branch: Return with expression
|
||||||
|
0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||||
|
0:42 Function Parameters:
|
||||||
|
0:42 'stage_input' ( in structure{})
|
||||||
|
0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 'pointId' ( in uint)
|
||||||
|
0:42 'patchId' ( in uint)
|
||||||
|
0:? Sequence
|
||||||
|
0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void)
|
||||||
|
0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:46 Branch: Return with expression
|
||||||
|
0:46 'output' ( temp structure{})
|
||||||
|
0:42 Function Definition: main( ( temp void)
|
||||||
|
0:42 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:42 Sequence
|
||||||
|
0:42 move second child to first child ( temp structure{})
|
||||||
|
0:? 'stage_input' ( temp structure{})
|
||||||
|
0:? 'stage_input' ( in structure{})
|
||||||
|
0:42 Sequence
|
||||||
|
0:42 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 1 (const int)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 1 (const int)
|
||||||
|
0:42 move second child to first child ( temp 4-component vector of float)
|
||||||
|
0:42 position: direct index for structure ( temp 4-component vector of float)
|
||||||
|
0:42 direct index ( temp structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 2 (const int)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 0 (const int)
|
||||||
|
0:42 direct index ( in 4-component vector of float Position)
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:42 Constant:
|
||||||
|
0:42 2 (const int)
|
||||||
|
0:42 move second child to first child ( temp uint)
|
||||||
|
0:? 'pointId' ( temp uint)
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:42 move second child to first child ( temp uint)
|
||||||
|
0:? 'patchId' ( temp uint)
|
||||||
|
0:? 'patchId' ( in uint PrimitiveID)
|
||||||
|
0:42 Sequence
|
||||||
|
0:42 move second child to first child ( temp structure{})
|
||||||
|
0:42 indirect index ( out structure{})
|
||||||
|
0:? '@entryPointOutput' ( out 3-element array of structure{})
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{})
|
||||||
|
0:? 'stage_input' ( temp structure{})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'pointId' ( temp uint)
|
||||||
|
0:? 'patchId' ( temp uint)
|
||||||
|
0:? Barrier ( temp void)
|
||||||
|
0:? Test condition and select ( temp void)
|
||||||
|
0:? Condition
|
||||||
|
0:? Compare Equal ( temp bool)
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? true case
|
||||||
|
0:? Sequence
|
||||||
|
0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position})
|
||||||
|
0:? 'patchId' ( in uint PrimitiveID)
|
||||||
|
0:? Sequence
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? direct index ( temp float)
|
||||||
|
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 1 (const int)
|
||||||
|
0:? direct index ( temp float)
|
||||||
|
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 1 (const int)
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 2 (const int)
|
||||||
|
0:? direct index ( temp float)
|
||||||
|
0:? edges: direct index for structure ( temp 3-element array of float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 2 (const int)
|
||||||
|
0:? move second child to first child ( temp float)
|
||||||
|
0:? direct index ( patch out float TessLevelInner)
|
||||||
|
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||||
|
0:? Constant:
|
||||||
|
0:? 0 (const int)
|
||||||
|
0:? inside: direct index for structure ( temp float)
|
||||||
|
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside})
|
||||||
|
0:? Constant:
|
||||||
|
0:? 1 (const int)
|
||||||
|
0:? Linker Objects
|
||||||
|
0:? 'patch.position' ( in 3-element array of 4-component vector of float Position)
|
||||||
|
0:? 'pointId' ( in uint InvocationID)
|
||||||
|
0:? 'patchId' ( in uint PrimitiveID)
|
||||||
|
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
|
||||||
|
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
|
||||||
|
|
||||||
|
Validation failed
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 8000b
|
||||||
|
// Id's are bound by 132
|
||||||
|
|
||||||
|
Capability Tessellation
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint TessellationControl 4 "main" 65 79 82 115 128
|
||||||
|
ExecutionMode 4 OutputVertices 3
|
||||||
|
ExecutionMode 4 Triangles
|
||||||
|
ExecutionMode 4 SpacingEqual
|
||||||
|
ExecutionMode 4 VertexOrderCw
|
||||||
|
Source HLSL 500
|
||||||
|
Name 4 "main"
|
||||||
|
Name 8 "HullInputType"
|
||||||
|
MemberName 8(HullInputType) 0 "position"
|
||||||
|
Name 15 "blob(struct-HullInputType-vf41[3];"
|
||||||
|
Name 14 "patch"
|
||||||
|
Name 19 "ConstantOutputType"
|
||||||
|
MemberName 19(ConstantOutputType) 0 "edges"
|
||||||
|
MemberName 19(ConstantOutputType) 1 "inside"
|
||||||
|
Name 23 "ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;"
|
||||||
|
Name 21 "inputPatch"
|
||||||
|
Name 22 "patchId"
|
||||||
|
Name 25 "EmptyStruct"
|
||||||
|
Name 27 "HullOutputType"
|
||||||
|
Name 33 "@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;"
|
||||||
|
Name 29 "stage_input"
|
||||||
|
Name 30 "patch"
|
||||||
|
Name 31 "pointId"
|
||||||
|
Name 32 "patchId"
|
||||||
|
Name 36 "output"
|
||||||
|
Name 50 "param"
|
||||||
|
Name 54 "output"
|
||||||
|
Name 58 "stage_input"
|
||||||
|
Name 60 "stage_input"
|
||||||
|
Name 62 "patch"
|
||||||
|
Name 65 "patch.position"
|
||||||
|
Name 77 "pointId"
|
||||||
|
Name 79 "pointId"
|
||||||
|
Name 81 "patchId"
|
||||||
|
Name 82 "patchId"
|
||||||
|
Name 86 "@entryPointOutput"
|
||||||
|
Name 88 "param"
|
||||||
|
Name 90 "param"
|
||||||
|
Name 92 "param"
|
||||||
|
Name 94 "param"
|
||||||
|
Name 107 "@patchConstantResult"
|
||||||
|
Name 108 "param"
|
||||||
|
Name 110 "param"
|
||||||
|
Name 115 "@patchConstantOutput.edges"
|
||||||
|
Name 128 "@patchConstantOutput.inside"
|
||||||
|
Decorate 65(patch.position) BuiltIn Position
|
||||||
|
Decorate 79(pointId) BuiltIn InvocationId
|
||||||
|
Decorate 82(patchId) BuiltIn PrimitiveId
|
||||||
|
Decorate 115(@patchConstantOutput.edges) Patch
|
||||||
|
Decorate 115(@patchConstantOutput.edges) BuiltIn TessLevelOuter
|
||||||
|
Decorate 128(@patchConstantOutput.inside) Patch
|
||||||
|
Decorate 128(@patchConstantOutput.inside) BuiltIn TessLevelInner
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8(HullInputType): TypeStruct 7(fvec4)
|
||||||
|
9: TypeInt 32 0
|
||||||
|
10: 9(int) Constant 3
|
||||||
|
11: TypeArray 8(HullInputType) 10
|
||||||
|
12: TypePointer Function 11
|
||||||
|
13: TypeFunction 2 12(ptr)
|
||||||
|
17: TypePointer Function 9(int)
|
||||||
|
18: TypeArray 6(float) 10
|
||||||
|
19(ConstantOutputType): TypeStruct 18 6(float)
|
||||||
|
20: TypeFunction 19(ConstantOutputType) 12(ptr) 17(ptr)
|
||||||
|
25(EmptyStruct): TypeStruct
|
||||||
|
26: TypePointer Function 25(EmptyStruct)
|
||||||
|
27(HullOutputType): TypeStruct
|
||||||
|
28: TypeFunction 27(HullOutputType) 26(ptr) 12(ptr) 17(ptr) 17(ptr)
|
||||||
|
35: TypePointer Function 19(ConstantOutputType)
|
||||||
|
37: TypeInt 32 1
|
||||||
|
38: 37(int) Constant 0
|
||||||
|
39: 6(float) Constant 1073741824
|
||||||
|
40: TypePointer Function 6(float)
|
||||||
|
42: 37(int) Constant 1
|
||||||
|
44: 37(int) Constant 2
|
||||||
|
53: TypePointer Function 27(HullOutputType)
|
||||||
|
59: TypePointer Input 25(EmptyStruct)
|
||||||
|
60(stage_input): 59(ptr) Variable Input
|
||||||
|
63: TypeArray 7(fvec4) 10
|
||||||
|
64: TypePointer Input 63
|
||||||
|
65(patch.position): 64(ptr) Variable Input
|
||||||
|
66: TypePointer Input 7(fvec4)
|
||||||
|
69: TypePointer Function 7(fvec4)
|
||||||
|
78: TypePointer Input 9(int)
|
||||||
|
79(pointId): 78(ptr) Variable Input
|
||||||
|
82(patchId): 78(ptr) Variable Input
|
||||||
|
84: TypeArray 27(HullOutputType) 10
|
||||||
|
85: TypePointer Output 84
|
||||||
|
86(@entryPointOutput): 85(ptr) Variable Output
|
||||||
|
97: TypePointer Output 27(HullOutputType)
|
||||||
|
99: 9(int) Constant 2
|
||||||
|
100: 9(int) Constant 4
|
||||||
|
101: 9(int) Constant 0
|
||||||
|
103: TypeBool
|
||||||
|
113: TypeArray 6(float) 100
|
||||||
|
114: TypePointer Output 113
|
||||||
|
115(@patchConstantOutput.edges): 114(ptr) Variable Output
|
||||||
|
118: TypePointer Output 6(float)
|
||||||
|
126: TypeArray 6(float) 99
|
||||||
|
127: TypePointer Output 126
|
||||||
|
128(@patchConstantOutput.inside): 127(ptr) Variable Output
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
58(stage_input): 26(ptr) Variable Function
|
||||||
|
62(patch): 12(ptr) Variable Function
|
||||||
|
77(pointId): 17(ptr) Variable Function
|
||||||
|
81(patchId): 17(ptr) Variable Function
|
||||||
|
88(param): 26(ptr) Variable Function
|
||||||
|
90(param): 12(ptr) Variable Function
|
||||||
|
92(param): 17(ptr) Variable Function
|
||||||
|
94(param): 17(ptr) Variable Function
|
||||||
|
107(@patchConstantResult): 35(ptr) Variable Function
|
||||||
|
108(param): 12(ptr) Variable Function
|
||||||
|
110(param): 17(ptr) Variable Function
|
||||||
|
61:25(EmptyStruct) Load 60(stage_input)
|
||||||
|
Store 58(stage_input) 61
|
||||||
|
67: 66(ptr) AccessChain 65(patch.position) 38
|
||||||
|
68: 7(fvec4) Load 67
|
||||||
|
70: 69(ptr) AccessChain 62(patch) 38 38
|
||||||
|
Store 70 68
|
||||||
|
71: 66(ptr) AccessChain 65(patch.position) 42
|
||||||
|
72: 7(fvec4) Load 71
|
||||||
|
73: 69(ptr) AccessChain 62(patch) 42 38
|
||||||
|
Store 73 72
|
||||||
|
74: 66(ptr) AccessChain 65(patch.position) 44
|
||||||
|
75: 7(fvec4) Load 74
|
||||||
|
76: 69(ptr) AccessChain 62(patch) 44 38
|
||||||
|
Store 76 75
|
||||||
|
80: 9(int) Load 79(pointId)
|
||||||
|
Store 77(pointId) 80
|
||||||
|
83: 9(int) Load 82(patchId)
|
||||||
|
Store 81(patchId) 83
|
||||||
|
87: 9(int) Load 79(pointId)
|
||||||
|
89:25(EmptyStruct) Load 58(stage_input)
|
||||||
|
Store 88(param) 89
|
||||||
|
91: 11 Load 62(patch)
|
||||||
|
Store 90(param) 91
|
||||||
|
93: 9(int) Load 77(pointId)
|
||||||
|
Store 92(param) 93
|
||||||
|
95: 9(int) Load 81(patchId)
|
||||||
|
Store 94(param) 95
|
||||||
|
96:27(HullOutputType) FunctionCall 33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;) 88(param) 90(param) 92(param) 94(param)
|
||||||
|
98: 97(ptr) AccessChain 86(@entryPointOutput) 87
|
||||||
|
Store 98 96
|
||||||
|
ControlBarrier 99 100 101
|
||||||
|
102: 9(int) Load 79(pointId)
|
||||||
|
104: 103(bool) IEqual 102 38
|
||||||
|
SelectionMerge 106 None
|
||||||
|
BranchConditional 104 105 106
|
||||||
|
105: Label
|
||||||
|
109: 11 Load 62(patch)
|
||||||
|
Store 108(param) 109
|
||||||
|
111: 9(int) Load 82(patchId)
|
||||||
|
Store 110(param) 111
|
||||||
|
112:19(ConstantOutputType) FunctionCall 23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;) 108(param) 110(param)
|
||||||
|
Store 107(@patchConstantResult) 112
|
||||||
|
116: 40(ptr) AccessChain 107(@patchConstantResult) 38 38
|
||||||
|
117: 6(float) Load 116
|
||||||
|
119: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 38
|
||||||
|
Store 119 117
|
||||||
|
120: 40(ptr) AccessChain 107(@patchConstantResult) 38 42
|
||||||
|
121: 6(float) Load 120
|
||||||
|
122: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 42
|
||||||
|
Store 122 121
|
||||||
|
123: 40(ptr) AccessChain 107(@patchConstantResult) 38 44
|
||||||
|
124: 6(float) Load 123
|
||||||
|
125: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 44
|
||||||
|
Store 125 124
|
||||||
|
129: 40(ptr) AccessChain 107(@patchConstantResult) 42
|
||||||
|
130: 6(float) Load 129
|
||||||
|
131: 118(ptr) AccessChain 128(@patchConstantOutput.inside) 38
|
||||||
|
Store 131 130
|
||||||
|
Branch 106
|
||||||
|
106: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
15(blob(struct-HullInputType-vf41[3];): 2 Function None 13
|
||||||
|
14(patch): 12(ptr) FunctionParameter
|
||||||
|
16: Label
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
||||||
|
23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;):19(ConstantOutputType) Function None 20
|
||||||
|
21(inputPatch): 12(ptr) FunctionParameter
|
||||||
|
22(patchId): 17(ptr) FunctionParameter
|
||||||
|
24: Label
|
||||||
|
36(output): 35(ptr) Variable Function
|
||||||
|
41: 40(ptr) AccessChain 36(output) 38 38
|
||||||
|
Store 41 39
|
||||||
|
43: 40(ptr) AccessChain 36(output) 38 42
|
||||||
|
Store 43 39
|
||||||
|
45: 40(ptr) AccessChain 36(output) 38 44
|
||||||
|
Store 45 39
|
||||||
|
46: 40(ptr) AccessChain 36(output) 42
|
||||||
|
Store 46 39
|
||||||
|
47:19(ConstantOutputType) Load 36(output)
|
||||||
|
ReturnValue 47
|
||||||
|
FunctionEnd
|
||||||
|
33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;):27(HullOutputType) Function None 28
|
||||||
|
29(stage_input): 26(ptr) FunctionParameter
|
||||||
|
30(patch): 12(ptr) FunctionParameter
|
||||||
|
31(pointId): 17(ptr) FunctionParameter
|
||||||
|
32(patchId): 17(ptr) FunctionParameter
|
||||||
|
34: Label
|
||||||
|
50(param): 12(ptr) Variable Function
|
||||||
|
54(output): 53(ptr) Variable Function
|
||||||
|
51: 11 Load 30(patch)
|
||||||
|
Store 50(param) 51
|
||||||
|
52: 2 FunctionCall 15(blob(struct-HullInputType-vf41[3];) 50(param)
|
||||||
|
55:27(HullOutputType) Load 54(output)
|
||||||
|
ReturnValue 55
|
||||||
|
FunctionEnd
|
48
Test/hlsl.emptystructreturn.tesc
Normal file
48
Test/hlsl.emptystructreturn.tesc
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
struct HullInputType
|
||||||
|
{
|
||||||
|
float4 position : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ConstantOutputType
|
||||||
|
{
|
||||||
|
float edges[3] : SV_TessFactor;
|
||||||
|
float inside : SV_InsideTessFactor;
|
||||||
|
};
|
||||||
|
struct EmptyStruct {};
|
||||||
|
|
||||||
|
struct HullOutputType {};
|
||||||
|
|
||||||
|
void blob(InputPatch<HullInputType, 3> patch)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ConstantOutputType ColorPatchConstantFunction(InputPatch<HullInputType, 3> inputPatch, uint patchId : SV_PrimitiveID)
|
||||||
|
{
|
||||||
|
ConstantOutputType output;
|
||||||
|
|
||||||
|
// Set the tessellation factors for the three edges of the triangle.
|
||||||
|
output.edges[0] = 2;
|
||||||
|
output.edges[1] = 2;
|
||||||
|
output.edges[2] = 2;
|
||||||
|
|
||||||
|
// Set the tessellation factor for tessallating inside the triangle.
|
||||||
|
output.inside = 2;
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Hull Shader
|
||||||
|
[domain("tri")]
|
||||||
|
[partitioning("integer")]
|
||||||
|
[outputtopology("triangle_cw")]
|
||||||
|
[outputcontrolpoints(3)]
|
||||||
|
[patchconstantfunc("ColorPatchConstantFunction")]
|
||||||
|
HullOutputType main(EmptyStruct stage_input, InputPatch<HullInputType, 3> patch, uint pointId : SV_OutputControlPointID, uint patchId : SV_PrimitiveID)
|
||||||
|
{
|
||||||
|
HullOutputType output;
|
||||||
|
blob(patch);
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
@ -205,6 +205,7 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
{"hlsl.earlydepthstencil.frag", "main"},
|
{"hlsl.earlydepthstencil.frag", "main"},
|
||||||
{"hlsl.emptystructreturn.frag", "main"},
|
{"hlsl.emptystructreturn.frag", "main"},
|
||||||
{"hlsl.emptystructreturn.vert", "main"},
|
{"hlsl.emptystructreturn.vert", "main"},
|
||||||
|
{"hlsl.emptystructreturn.tesc", "main"},
|
||||||
{"hlsl.emptystruct.init.vert", "main"},
|
{"hlsl.emptystruct.init.vert", "main"},
|
||||||
{"hlsl.entry-in.frag", "PixelShaderFunction"},
|
{"hlsl.entry-in.frag", "PixelShaderFunction"},
|
||||||
{"hlsl.entry-out.frag", "PixelShaderFunction"},
|
{"hlsl.entry-out.frag", "PixelShaderFunction"},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user