mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
Tessellation: implement 'patch' semantics.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24486 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
a57a78ed9f
commit
116c30b6ed
@ -53,3 +53,6 @@ void foo23()
|
||||
textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), offsets[2]); // ERROR, offset out of range
|
||||
textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), ivec2(-10, 20)); // ERROR, offset out of range
|
||||
}
|
||||
|
||||
patch in vec4 patchIn; // ERROR
|
||||
patch out vec4 patchOut; // ERROR
|
||||
|
@ -54,3 +54,6 @@ void foo3()
|
||||
layout(location = 4) in vec4 cva[3];
|
||||
layout(location = 5) in vec4 cvb[3];
|
||||
layout(location = 2) in mat3 cmc[3]; // ERROR, collision
|
||||
|
||||
patch in vec4 patchIn; // ERROR
|
||||
patch out vec4 patchOut; // ERROR
|
@ -7,6 +7,8 @@ layout(quads) in; // ERROR
|
||||
layout(ccw) out; // ERROR
|
||||
layout(fractional_even_spacing) in; // ERROR
|
||||
|
||||
patch in vec4 patchIn; // ERROR
|
||||
patch out vec4 patchOut;
|
||||
|
||||
void main()
|
||||
{
|
||||
|
@ -14,6 +14,9 @@ layout(fractional_even_spacing) in; // ERROR
|
||||
|
||||
layout(point_mode) in;
|
||||
|
||||
patch in vec4 patchIn;
|
||||
patch out vec4 patchOut; // ERROR
|
||||
|
||||
void main()
|
||||
{
|
||||
barrier(); // ERROR
|
||||
@ -40,3 +43,8 @@ void main()
|
||||
gl_PointSize = ps;
|
||||
gl_ClipDistance[2] = cd;
|
||||
}
|
||||
|
||||
smooth patch in vec4 badp1; // ERROR
|
||||
flat patch in vec4 badp2; // ERROR
|
||||
noperspective patch in vec4 badp3; // ERROR
|
||||
patch sample in vec3 badp4; // ERROR
|
||||
|
@ -81,3 +81,6 @@ int fgfg(float f, highp int i);
|
||||
out gl_PerVertex {
|
||||
float gl_ClipDistance[4];
|
||||
};
|
||||
|
||||
patch in vec4 patchIn; // ERROR
|
||||
patch out vec4 patchOut; // ERROR
|
@ -13,7 +13,9 @@ ERROR: 0:53: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
|
||||
ERROR: 0:53: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||
ERROR: 0:54: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||
ERROR: 0:54: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||
ERROR: 13 compilation errors. No code generated.
|
||||
ERROR: 0:57: 'patch' : not supported in this stage: fragment
|
||||
ERROR: 0:58: 'patch' : not supported in this stage: fragment
|
||||
ERROR: 15 compilation errors. No code generated.
|
||||
|
||||
|
||||
gl_FragCoord pixel center is integer
|
||||
@ -204,6 +206,8 @@ ERROR: node is still EOpNull!
|
||||
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float)
|
||||
0:? 'gl_FragCoord' (gl_FragCoord 4-component vector of float)
|
||||
0:? 'u2drs' (uniform sampler2DRectShadow)
|
||||
0:? 'patchIn' (smooth patch in 4-component vector of float)
|
||||
0:? 'patchOut' (patch out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
@ -1,6 +1,7 @@
|
||||
400.geom
|
||||
Warning, version 400 is not yet complete; some version-specific features are present, but many are missing.
|
||||
ERROR: 0:13: 'invocations' : can only apply to a standalone qualifier
|
||||
ERROR: 0:20: 'patch' : not supported in this stage: geometry
|
||||
ERROR: 0:20: 'gl_PointSize' : cannot add layout to redeclared block member
|
||||
ERROR: 0:20: 'gl_PointSize' : cannot add patch to redeclared block member
|
||||
ERROR: 0:25: 'length' : array must be declared with a size before using this method
|
||||
@ -8,7 +9,9 @@ ERROR: 0:36: 'length' : array must be declared with a size before using this me
|
||||
ERROR: 0:40: 'triangles' : inconsistent input primitive for array size colorBad
|
||||
ERROR: 0:44: 'triangles' : inconsistent input primitive for array size colorbad2
|
||||
ERROR: 0:56: 'location' : repeated use of location 4
|
||||
ERROR: 8 compilation errors. No code generated.
|
||||
ERROR: 0:58: 'patch' : not supported in this stage: geometry
|
||||
ERROR: 0:59: 'patch' : not supported in this stage: geometry
|
||||
ERROR: 11 compilation errors. No code generated.
|
||||
|
||||
|
||||
invocations = 4
|
||||
@ -72,6 +75,8 @@ ERROR: node is still EOpNull!
|
||||
0:? 'cva' (layout(location=4 ) in 3-element array of 4-component vector of float)
|
||||
0:? 'cvb' (layout(location=5 ) in 3-element array of 4-component vector of float)
|
||||
0:? 'cmc' (layout(location=2 ) in 3-element array of 3X3 matrix of float)
|
||||
0:? 'patchIn' (patch in 4-component vector of float)
|
||||
0:? 'patchOut' (layout(stream=0 ) patch out 4-component vector of float)
|
||||
|
||||
|
||||
Linked geometry stage:
|
||||
|
@ -4,111 +4,114 @@ ERROR: 0:4: 'length' : array must be declared with a size before using this met
|
||||
ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4)
|
||||
ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4)
|
||||
ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignemnt (e.g., binding = 4)
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader
|
||||
ERROR: 5 compilation errors. No code generated.
|
||||
|
||||
|
||||
vertices = 4
|
||||
ERROR: node is still EOpNull!
|
||||
0:11 Function Definition: main( (void)
|
||||
0:11 Function Parameters:
|
||||
0:13 Sequence
|
||||
0:13 Barrier (void)
|
||||
0:15 Sequence
|
||||
0:15 move second child to first child (int)
|
||||
0:15 'a' (int)
|
||||
0:15 Constant:
|
||||
0:15 5392 (const int)
|
||||
0:21 Sequence
|
||||
0:21 move second child to first child (4-component vector of float)
|
||||
0:21 'p' (4-component vector of float)
|
||||
0:21 gl_Position: direct index for structure (4-component vector of float)
|
||||
0:21 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:21 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:21 Constant:
|
||||
0:21 1 (const int)
|
||||
0:21 Constant:
|
||||
0:21 0 (const int)
|
||||
0:22 Sequence
|
||||
0:22 move second child to first child (float)
|
||||
0:22 'ps' (float)
|
||||
0:22 gl_PointSize: direct index for structure (float)
|
||||
0:22 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:22 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:22 Constant:
|
||||
0:22 1 (const int)
|
||||
0:13 Function Definition: main( (void)
|
||||
0:13 Function Parameters:
|
||||
0:15 Sequence
|
||||
0:15 Barrier (void)
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child (int)
|
||||
0:17 'a' (int)
|
||||
0:17 Constant:
|
||||
0:17 5392 (const int)
|
||||
0:23 Sequence
|
||||
0:23 move second child to first child (float)
|
||||
0:23 'cd' (float)
|
||||
0:23 direct index (float)
|
||||
0:23 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:23 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:23 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:23 Constant:
|
||||
0:23 1 (const int)
|
||||
0:23 move second child to first child (4-component vector of float)
|
||||
0:23 'p' (4-component vector of float)
|
||||
0:23 gl_Position: direct index for structure (4-component vector of float)
|
||||
0:23 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:23 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:23 1 (const int)
|
||||
0:23 Constant:
|
||||
0:23 2 (const int)
|
||||
0:23 0 (const int)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child (float)
|
||||
0:24 'ps' (float)
|
||||
0:24 gl_PointSize: direct index for structure (float)
|
||||
0:24 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:24 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:24 Constant:
|
||||
0:24 1 (const int)
|
||||
0:25 Sequence
|
||||
0:25 move second child to first child (int)
|
||||
0:25 'pvi' (int)
|
||||
0:25 'gl_PatchVerticesIn' (in int)
|
||||
0:26 Sequence
|
||||
0:26 move second child to first child (int)
|
||||
0:26 'pid' (int)
|
||||
0:26 'gl_PrimitiveID' (in int)
|
||||
0:25 move second child to first child (float)
|
||||
0:25 'cd' (float)
|
||||
0:25 direct index (float)
|
||||
0:25 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:25 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:25 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:25 Constant:
|
||||
0:25 1 (const int)
|
||||
0:25 Constant:
|
||||
0:25 2 (const int)
|
||||
0:25 Constant:
|
||||
0:25 2 (const int)
|
||||
0:27 Sequence
|
||||
0:27 move second child to first child (int)
|
||||
0:27 'iid' (int)
|
||||
0:27 'gl_InvocationID' (in int)
|
||||
0:29 move second child to first child (4-component vector of float)
|
||||
0:29 gl_Position: direct index for structure (4-component vector of float)
|
||||
0:29 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:29 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:29 'p' (4-component vector of float)
|
||||
0:30 move second child to first child (float)
|
||||
0:30 gl_PointSize: direct index for structure (float)
|
||||
0:30 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:30 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:30 Constant:
|
||||
0:30 1 (const int)
|
||||
0:30 Constant:
|
||||
0:30 1 (const int)
|
||||
0:30 'ps' (float)
|
||||
0:31 move second child to first child (float)
|
||||
0:31 direct index (float)
|
||||
0:31 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:31 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:31 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:27 'pvi' (int)
|
||||
0:27 'gl_PatchVerticesIn' (in int)
|
||||
0:28 Sequence
|
||||
0:28 move second child to first child (int)
|
||||
0:28 'pid' (int)
|
||||
0:28 'gl_PrimitiveID' (in int)
|
||||
0:29 Sequence
|
||||
0:29 move second child to first child (int)
|
||||
0:29 'iid' (int)
|
||||
0:29 'gl_InvocationID' (in int)
|
||||
0:31 move second child to first child (4-component vector of float)
|
||||
0:31 gl_Position: direct index for structure (4-component vector of float)
|
||||
0:31 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:31 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:31 Constant:
|
||||
0:31 2 (const int)
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 'cd' (float)
|
||||
0:31 0 (const int)
|
||||
0:31 'p' (4-component vector of float)
|
||||
0:32 move second child to first child (float)
|
||||
0:32 gl_PointSize: direct index for structure (float)
|
||||
0:32 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:32 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 'ps' (float)
|
||||
0:33 move second child to first child (float)
|
||||
0:33 direct index (patch float)
|
||||
0:33 'gl_TessLevelOuter' (patch out 4-element array of float)
|
||||
0:33 direct index (float)
|
||||
0:33 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:33 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:33 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 2 (const int)
|
||||
0:33 Constant:
|
||||
0:33 3 (const int)
|
||||
0:33 Constant:
|
||||
0:33 3.200000
|
||||
0:34 move second child to first child (float)
|
||||
0:34 direct index (patch float)
|
||||
0:34 'gl_TessLevelInner' (patch out 2-element array of float)
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 1.300000
|
||||
0:33 1 (const int)
|
||||
0:33 'cd' (float)
|
||||
0:35 move second child to first child (float)
|
||||
0:35 direct index (patch float)
|
||||
0:35 'gl_TessLevelOuter' (patch out 4-element array of float)
|
||||
0:35 Constant:
|
||||
0:35 3 (const int)
|
||||
0:35 Constant:
|
||||
0:35 3.200000
|
||||
0:36 move second child to first child (float)
|
||||
0:36 direct index (patch float)
|
||||
0:36 'gl_TessLevelInner' (patch out 2-element array of float)
|
||||
0:36 Constant:
|
||||
0:36 1 (const int)
|
||||
0:36 Constant:
|
||||
0:36 1.300000
|
||||
0:? Linker Objects
|
||||
0:? 'outa' (1-element array of int)
|
||||
0:? 'patchIn' (patch in 4-component vector of float)
|
||||
0:? 'patchOut' (patch out 4-component vector of float)
|
||||
0:? 'gl_out' (out unsized array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
|
||||
|
||||
|
@ -6,8 +6,13 @@ ERROR: 0:6: 'isolines' : cannot change previously set input primitive
|
||||
ERROR: 0:9: 'ccw' : cannot change previously set vertex order
|
||||
ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing
|
||||
ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing
|
||||
ERROR: 0:19: 'barrier' : no matching overloaded function found
|
||||
ERROR: 7 compilation errors. No code generated.
|
||||
ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader
|
||||
ERROR: 0:22: 'barrier' : no matching overloaded function found
|
||||
ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch
|
||||
ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch
|
||||
ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch
|
||||
ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample)
|
||||
ERROR: 12 compilation errors. No code generated.
|
||||
|
||||
|
||||
input primitive = quads
|
||||
@ -15,97 +20,103 @@ vertex spacing = fractional_odd_spacing
|
||||
triangle order = cw
|
||||
using point mode
|
||||
ERROR: node is still EOpNull!
|
||||
0:17 Function Definition: main( (void)
|
||||
0:17 Function Parameters:
|
||||
0:19 Sequence
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:21 Sequence
|
||||
0:21 move second child to first child (int)
|
||||
0:21 'a' (int)
|
||||
0:21 Constant:
|
||||
0:21 1512 (const int)
|
||||
0:29 Sequence
|
||||
0:29 move second child to first child (4-component vector of float)
|
||||
0:29 'p' (4-component vector of float)
|
||||
0:29 gl_Position: direct index for structure (4-component vector of float)
|
||||
0:29 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:29 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:29 Constant:
|
||||
0:29 1 (const int)
|
||||
0:29 Constant:
|
||||
0:29 0 (const int)
|
||||
0:30 Sequence
|
||||
0:30 move second child to first child (float)
|
||||
0:30 'ps' (float)
|
||||
0:30 gl_PointSize: direct index for structure (float)
|
||||
0:30 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:30 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:30 Constant:
|
||||
0:30 1 (const int)
|
||||
0:30 Constant:
|
||||
0:30 1 (const int)
|
||||
0:31 Sequence
|
||||
0:31 move second child to first child (float)
|
||||
0:31 'cd' (float)
|
||||
0:31 direct index (float)
|
||||
0:31 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:31 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:31 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:31 Constant:
|
||||
0:31 1 (const int)
|
||||
0:31 Constant:
|
||||
0:31 2 (const int)
|
||||
0:31 Constant:
|
||||
0:31 2 (const int)
|
||||
0:20 Function Definition: main( (void)
|
||||
0:20 Function Parameters:
|
||||
0:22 Sequence
|
||||
0:22 Constant:
|
||||
0:22 0.000000
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child (int)
|
||||
0:24 'a' (int)
|
||||
0:24 Constant:
|
||||
0:24 1512 (const int)
|
||||
0:32 Sequence
|
||||
0:32 move second child to first child (4-component vector of float)
|
||||
0:32 'p' (4-component vector of float)
|
||||
0:32 gl_Position: direct index for structure (4-component vector of float)
|
||||
0:32 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:32 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:32 Constant:
|
||||
0:32 1 (const int)
|
||||
0:32 Constant:
|
||||
0:32 0 (const int)
|
||||
0:33 Sequence
|
||||
0:33 move second child to first child (int)
|
||||
0:33 'pvi' (int)
|
||||
0:33 'gl_PatchVerticesIn' (in int)
|
||||
0:33 move second child to first child (float)
|
||||
0:33 'ps' (float)
|
||||
0:33 gl_PointSize: direct index for structure (float)
|
||||
0:33 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:33 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:33 Constant:
|
||||
0:33 1 (const int)
|
||||
0:34 Sequence
|
||||
0:34 move second child to first child (int)
|
||||
0:34 'pid' (int)
|
||||
0:34 'gl_PrimitiveID' (in int)
|
||||
0:35 Sequence
|
||||
0:35 move second child to first child (3-component vector of float)
|
||||
0:35 'tc' (3-component vector of float)
|
||||
0:35 'gl_TessCoord' (in 3-component vector of float)
|
||||
0:34 move second child to first child (float)
|
||||
0:34 'cd' (float)
|
||||
0:34 direct index (float)
|
||||
0:34 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:34 direct index (block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:34 'gl_in' (in 32-element array of block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:34 Constant:
|
||||
0:34 1 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:34 Constant:
|
||||
0:34 2 (const int)
|
||||
0:36 Sequence
|
||||
0:36 move second child to first child (float)
|
||||
0:36 'tlo' (float)
|
||||
0:36 direct index (patch float)
|
||||
0:36 'gl_TessLevelOuter' (patch in 4-element array of float)
|
||||
0:36 Constant:
|
||||
0:36 3 (const int)
|
||||
0:36 move second child to first child (int)
|
||||
0:36 'pvi' (int)
|
||||
0:36 'gl_PatchVerticesIn' (in int)
|
||||
0:37 Sequence
|
||||
0:37 move second child to first child (float)
|
||||
0:37 'tli' (float)
|
||||
0:37 direct index (patch float)
|
||||
0:37 'gl_TessLevelInner' (patch in 2-element array of float)
|
||||
0:37 Constant:
|
||||
0:37 1 (const int)
|
||||
0:39 move second child to first child (4-component vector of float)
|
||||
0:39 gl_Position: direct index for structure (gl_Position 4-component vector of float)
|
||||
0:39 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:39 Constant:
|
||||
0:39 0 (const uint)
|
||||
0:39 'p' (4-component vector of float)
|
||||
0:40 move second child to first child (float)
|
||||
0:40 gl_PointSize: direct index for structure (gl_PointSize float)
|
||||
0:40 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:40 Constant:
|
||||
0:40 1 (const uint)
|
||||
0:40 'ps' (float)
|
||||
0:41 move second child to first child (float)
|
||||
0:41 direct index (float)
|
||||
0:41 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:41 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:41 Constant:
|
||||
0:41 2 (const uint)
|
||||
0:41 Constant:
|
||||
0:41 2 (const int)
|
||||
0:41 'cd' (float)
|
||||
0:37 move second child to first child (int)
|
||||
0:37 'pid' (int)
|
||||
0:37 'gl_PrimitiveID' (in int)
|
||||
0:38 Sequence
|
||||
0:38 move second child to first child (3-component vector of float)
|
||||
0:38 'tc' (3-component vector of float)
|
||||
0:38 'gl_TessCoord' (in 3-component vector of float)
|
||||
0:39 Sequence
|
||||
0:39 move second child to first child (float)
|
||||
0:39 'tlo' (float)
|
||||
0:39 direct index (patch float)
|
||||
0:39 'gl_TessLevelOuter' (patch in 4-element array of float)
|
||||
0:39 Constant:
|
||||
0:39 3 (const int)
|
||||
0:40 Sequence
|
||||
0:40 move second child to first child (float)
|
||||
0:40 'tli' (float)
|
||||
0:40 direct index (patch float)
|
||||
0:40 'gl_TessLevelInner' (patch in 2-element array of float)
|
||||
0:40 Constant:
|
||||
0:40 1 (const int)
|
||||
0:42 move second child to first child (4-component vector of float)
|
||||
0:42 gl_Position: direct index for structure (gl_Position 4-component vector of float)
|
||||
0:42 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:42 Constant:
|
||||
0:42 0 (const uint)
|
||||
0:42 'p' (4-component vector of float)
|
||||
0:43 move second child to first child (float)
|
||||
0:43 gl_PointSize: direct index for structure (gl_PointSize float)
|
||||
0:43 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:43 Constant:
|
||||
0:43 1 (const uint)
|
||||
0:43 'ps' (float)
|
||||
0:44 move second child to first child (float)
|
||||
0:44 direct index (float)
|
||||
0:44 gl_ClipDistance: direct index for structure (unsized array of float)
|
||||
0:44 '__anon__1' (out block{gl_Position,gl_PointSize,gl_ClipDistance})
|
||||
0:44 Constant:
|
||||
0:44 2 (const uint)
|
||||
0:44 Constant:
|
||||
0:44 2 (const int)
|
||||
0:44 'cd' (float)
|
||||
0:? Linker Objects
|
||||
0:? 'patchIn' (patch in 4-component vector of float)
|
||||
0:? 'patchOut' (patch out 4-component vector of float)
|
||||
0:? 'badp1' (smooth patch in 4-component vector of float)
|
||||
0:? 'badp2' (flat patch in 4-component vector of float)
|
||||
0:? 'badp3' (noperspective patch in 4-component vector of float)
|
||||
0:? 'badp4' (patch sample in 3-component vector of float)
|
||||
|
||||
|
||||
Linked tessellation evaluation stage:
|
||||
|
@ -28,7 +28,10 @@ ERROR: 0:70: 'binding' : requires uniform or buffer storage qualifier
|
||||
ERROR: 0:71: 'binding' : binding is too large
|
||||
ERROR: 0:74: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits
|
||||
ERROR: 0:76: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits (using array)
|
||||
ERROR: 27 compilation errors. No code generated.
|
||||
ERROR: 0:85: 'patch' : not supported in this stage: vertex
|
||||
ERROR: 0:85: '' : vertex input cannot be further qualified
|
||||
ERROR: 0:86: 'patch' : not supported in this stage: vertex
|
||||
ERROR: 30 compilation errors. No code generated.
|
||||
|
||||
|
||||
ERROR: node is still EOpNull!
|
||||
@ -131,6 +134,8 @@ ERROR: node is still EOpNull!
|
||||
0:? 'sampb4' (layout(binding=31 ) uniform sampler2D)
|
||||
0:? 'sampb5' (layout(binding=79 ) uniform 2-element array of sampler2D)
|
||||
0:? '__anon__3' (out block{gl_ClipDistance,})
|
||||
0:? 'patchIn' (patch in 4-component vector of float)
|
||||
0:? 'patchOut' (smooth patch out 4-component vector of float)
|
||||
0:? 'gl_VertexID' (gl_VertexId int)
|
||||
0:? 'gl_InstanceID' (gl_InstanceId int)
|
||||
|
||||
|
@ -245,7 +245,7 @@ public:
|
||||
smooth = false;
|
||||
flat = false;
|
||||
nopersp = false;
|
||||
patch = false; // TODO 4.0 tessellation: implement semantics of patch (all of 4.3 stuff...), including arrayed inputs
|
||||
patch = false;
|
||||
sample = false;
|
||||
shared = false;
|
||||
coherent = false;
|
||||
|
@ -9,5 +9,5 @@
|
||||
// source have to figure out how to create revision.h just to get a build
|
||||
// going. However, if it is not updated, it can be a version behind.
|
||||
|
||||
#define GLSLANG_REVISION "24468"
|
||||
#define GLSLANG_DATE "2013/12/11 11:57:40"
|
||||
#define GLSLANG_REVISION "24480"
|
||||
#define GLSLANG_DATE "2013/12/11 15:38:19"
|
||||
|
@ -1638,41 +1638,6 @@ void TParseContext::globalQualifierCheck(TSourceLoc loc, const TQualifier& quali
|
||||
return;
|
||||
}
|
||||
|
||||
if (language == EShLangVertex && qualifier.storage == EvqVaryingIn) {
|
||||
if (publicType.basicType == EbtStruct) {
|
||||
error(loc, "cannot be a structure or array", GetStorageQualifierString(qualifier.storage), "");
|
||||
|
||||
return;
|
||||
}
|
||||
if (publicType.arraySizes) {
|
||||
requireProfile(loc, ~EEsProfile, "vertex input arrays");
|
||||
profileRequires(loc, ENoProfile, 150, 0, "vertex input arrays");
|
||||
}
|
||||
}
|
||||
|
||||
if (language == EShLangFragment && qualifier.storage == EvqVaryingOut) {
|
||||
profileRequires(loc, EEsProfile, 300, 0, "fragment shader output");
|
||||
if (publicType.basicType == EbtStruct) {
|
||||
error(loc, "cannot be a structure", GetStorageQualifierString(qualifier.storage), "");
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (language == EShLangVertex && qualifier.storage == EvqVaryingOut) {
|
||||
if (publicType.userDef) {
|
||||
profileRequires(loc, EEsProfile, 300, 0, "vertex-shader struct output");
|
||||
profileRequires(loc, ~EEsProfile, 150, 0, "vertex-shader struct output");
|
||||
}
|
||||
}
|
||||
|
||||
if (language == EShLangFragment && qualifier.storage == EvqVaryingIn) {
|
||||
if (publicType.userDef) {
|
||||
profileRequires(loc, EEsProfile, 300, 0, "fragment-shader struct input");
|
||||
profileRequires(loc, ~EEsProfile, 150, 0, "fragment-shader struct input");
|
||||
}
|
||||
}
|
||||
|
||||
if (publicType.basicType == EbtInt || publicType.basicType == EbtUint || publicType.basicType == EbtDouble) {
|
||||
profileRequires(loc, EEsProfile, 300, 0, "shader input/output");
|
||||
if (! qualifier.flat) {
|
||||
@ -1683,9 +1648,85 @@ void TParseContext::globalQualifierCheck(TSourceLoc loc, const TQualifier& quali
|
||||
}
|
||||
}
|
||||
|
||||
if (language == EShLangVertex && qualifier.storage == EvqVaryingIn &&
|
||||
(qualifier.isAuxiliary() || qualifier.isInterpolation() || qualifier.isMemory() || qualifier.invariant))
|
||||
error(loc, "vertex input cannot be further qualified", "", "");
|
||||
if (qualifier.patch && qualifier.isInterpolation())
|
||||
error(loc, "cannot use interpolation qualifiers with patch", "patch", "");
|
||||
|
||||
if (qualifier.storage == EvqVaryingIn) {
|
||||
switch (language) {
|
||||
case EShLangVertex:
|
||||
if (publicType.basicType == EbtStruct) {
|
||||
error(loc, "cannot be a structure or array", GetStorageQualifierString(qualifier.storage), "");
|
||||
return;
|
||||
}
|
||||
if (publicType.arraySizes) {
|
||||
requireProfile(loc, ~EEsProfile, "vertex input arrays");
|
||||
profileRequires(loc, ENoProfile, 150, 0, "vertex input arrays");
|
||||
}
|
||||
if (qualifier.isAuxiliary() || qualifier.isInterpolation() || qualifier.isMemory() || qualifier.invariant)
|
||||
error(loc, "vertex input cannot be further qualified", "", "");
|
||||
break;
|
||||
|
||||
case EShLangTessControl:
|
||||
if (qualifier.patch)
|
||||
error(loc, "can only use on output in tessellation-control shader", "patch", "");
|
||||
break;
|
||||
|
||||
case EShLangTessEvaluation:
|
||||
break;
|
||||
|
||||
case EShLangGeometry:
|
||||
break;
|
||||
|
||||
case EShLangFragment:
|
||||
if (publicType.userDef) {
|
||||
profileRequires(loc, EEsProfile, 300, 0, "fragment-shader struct input");
|
||||
profileRequires(loc, ~EEsProfile, 150, 0, "fragment-shader struct input");
|
||||
}
|
||||
break;
|
||||
|
||||
case EShLangCompute:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// qualifier.storage == EvqVaryingOut
|
||||
switch (language) {
|
||||
case EShLangVertex:
|
||||
if (publicType.userDef) {
|
||||
profileRequires(loc, EEsProfile, 300, 0, "vertex-shader struct output");
|
||||
profileRequires(loc, ~EEsProfile, 150, 0, "vertex-shader struct output");
|
||||
}
|
||||
break;
|
||||
|
||||
case EShLangTessControl:
|
||||
break;
|
||||
|
||||
case EShLangTessEvaluation:
|
||||
if (qualifier.patch)
|
||||
error(loc, "can only use on input in tessellation-evaluation shader", "patch", "");
|
||||
break;
|
||||
|
||||
case EShLangGeometry:
|
||||
break;
|
||||
|
||||
case EShLangFragment:
|
||||
profileRequires(loc, EEsProfile, 300, 0, "fragment shader output");
|
||||
if (publicType.basicType == EbtStruct) {
|
||||
error(loc, "cannot be a structure", GetStorageQualifierString(qualifier.storage), "");
|
||||
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case EShLangCompute:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1228,6 +1228,8 @@ storage_qualifier
|
||||
}
|
||||
| PATCH {
|
||||
parseContext.globalCheck($1.loc, "patch");
|
||||
parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
|
||||
parseContext.profileRequires($1.loc, ~EEsProfile, 400, 1, &GL_ARB_tessellation_shader, "patch");
|
||||
$$.init($1.loc);
|
||||
$$.qualifier.patch = true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user