mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 19:40:06 +00:00
Implement GL_OES_shader_multisample_interpolation, as well as core desktop versions of it.
This commit is contained in:
parent
ba01ebd5ba
commit
0fc4338f3e
@ -341,3 +341,59 @@ void goodImageAtom()
|
||||
imageAtomicMax(badIm2Du, P, datu); // ERROR, not an allowed layout() on the image
|
||||
imageAtomicExchange(badIm2Df, P, datf); // ERROR, not an allowed layout() on the image
|
||||
}
|
||||
|
||||
sample in vec4 colorSampInBad; // ERROR, reserved
|
||||
centroid out vec4 colorCentroidBad; // ERROR
|
||||
flat out vec4 colorBadFlat; // ERROR
|
||||
smooth out vec4 colorBadSmooth; // ERROR
|
||||
noperspective out vec4 colorBadNo; // ERROR
|
||||
flat centroid in vec2 colorfc;
|
||||
in float scalarIn;
|
||||
|
||||
void badInterp()
|
||||
{
|
||||
interpolateAtCentroid(colorfc); // ERROR, need extension
|
||||
interpolateAtSample(colorfc, 1); // ERROR, need extension
|
||||
interpolateAtOffset(colorfc, vec2(0.2)); // ERROR, need extension
|
||||
}
|
||||
|
||||
#if defined GL_OES_shader_multisample_interpolation
|
||||
#extension GL_OES_shader_multisample_interpolation : enable
|
||||
#endif
|
||||
|
||||
sample in vec4 colorSampIn;
|
||||
sample out vec4 colorSampleBad; // ERROR
|
||||
flat sample in vec4 colorfsi;
|
||||
sample in vec3 sampInArray[4];
|
||||
|
||||
void interp()
|
||||
{
|
||||
float res;
|
||||
vec2 res2;
|
||||
vec3 res3;
|
||||
vec4 res4;
|
||||
|
||||
res2 = interpolateAtCentroid(colorfc);
|
||||
res4 = interpolateAtCentroid(colorSampIn);
|
||||
res4 = interpolateAtCentroid(colorfsi);
|
||||
res = interpolateAtCentroid(scalarIn);
|
||||
res3 = interpolateAtCentroid(sampInArray); // ERROR
|
||||
res3 = interpolateAtCentroid(sampInArray[2]);
|
||||
res2 = interpolateAtCentroid(sampInArray[2].xy); // ERROR
|
||||
|
||||
res3 = interpolateAtSample(sampInArray, 1); // ERROR
|
||||
res3 = interpolateAtSample(sampInArray[i], 0);
|
||||
res2 = interpolateAtSample(sampInArray[2].xy, 2); // ERROR
|
||||
res = interpolateAtSample(scalarIn, 1);
|
||||
|
||||
res3 = interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR
|
||||
res3 = interpolateAtOffset(sampInArray[2], vec2(0.2));
|
||||
res2 = interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle
|
||||
res = interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference
|
||||
res = interpolateAtOffset(scalarIn, vec2(0.2));
|
||||
|
||||
float f;
|
||||
res = interpolateAtCentroid(f); // ERROR, not interpolant
|
||||
res4 = interpolateAtSample(outp, 0); // ERROR, not interpolant
|
||||
}
|
||||
|
||||
|
@ -373,3 +373,19 @@ void goodImageAtom()
|
||||
imageAtomicCompSwap(im2Di, P, 3, dati);
|
||||
imageAtomicCompSwap(im2Du, P, 5u, datu);
|
||||
}
|
||||
|
||||
sample out vec4 colorSampInBad; // ERROR, reserved
|
||||
|
||||
#extension GL_OES_shader_multisample_interpolation : enable
|
||||
|
||||
sample out vec4 colorSample;
|
||||
flat sample out vec4 colorfsi;
|
||||
sample out vec3 sampInArray[4];
|
||||
in vec4 inv4;
|
||||
|
||||
void badInterp()
|
||||
{
|
||||
interpolateAtCentroid(inv4); // ERROR, wrong stage
|
||||
interpolateAtSample(inv4, 1); // ERROR, need extension
|
||||
interpolateAtOffset(inv4, vec2(0.2)); // ERROR, need extension
|
||||
}
|
||||
|
@ -99,3 +99,43 @@ void foodc2()
|
||||
d = packDouble2x32(u2);
|
||||
u2 = unpackDouble2x32(d);
|
||||
}
|
||||
|
||||
sample in vec4 colorSampIn;
|
||||
sample out vec4 colorSampleBad; // ERROR
|
||||
noperspective in vec4 colorfsi;
|
||||
sample in vec3 sampInArray[4];
|
||||
smooth in float scalarIn;
|
||||
flat centroid in vec2 colorfc;
|
||||
|
||||
struct S {
|
||||
float x;
|
||||
};
|
||||
|
||||
in S s1;
|
||||
sample S s2;
|
||||
|
||||
void interp()
|
||||
{
|
||||
interpolateAtCentroid(colorfc);
|
||||
interpolateAtCentroid(colorSampIn);
|
||||
interpolateAtCentroid(colorfsi);
|
||||
interpolateAtCentroid(scalarIn);
|
||||
interpolateAtCentroid(sampInArray); // ERROR
|
||||
interpolateAtCentroid(sampInArray[2]);
|
||||
interpolateAtCentroid(sampInArray[2].xy); // ERROR
|
||||
|
||||
interpolateAtSample(sampInArray, 1); // ERROR
|
||||
interpolateAtSample(sampInArray[i], 0);
|
||||
interpolateAtSample(s1.x, 2); // ERROR
|
||||
interpolateAtSample(scalarIn, 1);
|
||||
|
||||
interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR
|
||||
interpolateAtOffset(sampInArray[2], vec2(0.2));
|
||||
interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle
|
||||
interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference
|
||||
interpolateAtOffset(s2.x, vec2(0.2)); // ERROR
|
||||
|
||||
float f;
|
||||
interpolateAtCentroid(f); // ERROR, not interpolant
|
||||
interpolateAtSample(outp, 0); // ERROR, not interpolant
|
||||
}
|
@ -138,3 +138,10 @@ layout(std430, align = 128) uniform block24301 {
|
||||
|
||||
int aconst[gl_MaxTransformFeedbackBuffers];
|
||||
int bconst[gl_MaxTransformFeedbackInterleavedComponents];
|
||||
|
||||
sample in vec3 sampInArray[4];
|
||||
|
||||
void interp()
|
||||
{
|
||||
interpolateAtCentroid(sampInArray[2].xy);
|
||||
}
|
||||
|
@ -98,7 +98,30 @@ ERROR: 0:314: 'rgba16i' : format requires readonly or writeonly memory qualifier
|
||||
ERROR: 0:340: 'imageAtomicMax' : only supported on image with format r32i or r32ui
|
||||
ERROR: 0:341: 'imageAtomicMax' : only supported on image with format r32i or r32ui
|
||||
ERROR: 0:342: 'imageAtomicExchange' : only supported on image with format r32f
|
||||
ERROR: 90 compilation errors. No code generated.
|
||||
ERROR: 0:345: 'sample' : Reserved word.
|
||||
ERROR: 0:346: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
|
||||
ERROR: 0:347: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
|
||||
ERROR: 0:348: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
|
||||
ERROR: 0:349: 'noperspective' : Reserved word.
|
||||
ERROR: 0:349: 'noperspective' : not supported with this profile: es
|
||||
ERROR: 0:349: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output
|
||||
ERROR: 0:355: 'interpolateAtCentroid' : required extension not requested: GL_OES_shader_multisample_interpolation
|
||||
ERROR: 0:356: 'interpolateAtSample' : required extension not requested: GL_OES_shader_multisample_interpolation
|
||||
ERROR: 0:357: 'interpolateAtOffset' : required extension not requested: GL_OES_shader_multisample_interpolation
|
||||
ERROR: 0:365: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
|
||||
ERROR: 0:380: 'interpolateAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:380: 'assign' : cannot convert from 'const float' to 'temp mediump 3-component vector of float'
|
||||
ERROR: 0:382: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:384: 'interpolateAtSample' : no matching overloaded function found
|
||||
ERROR: 0:384: 'assign' : cannot convert from 'const float' to 'temp mediump 3-component vector of float'
|
||||
ERROR: 0:386: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:389: 'interpolateAtOffset' : no matching overloaded function found
|
||||
ERROR: 0:389: 'assign' : cannot convert from 'const float' to 'temp mediump 3-component vector of float'
|
||||
ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 113 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 310
|
||||
@ -109,6 +132,7 @@ Requested GL_OES_gpu_shader5
|
||||
Requested GL_OES_sample_variables
|
||||
Requested GL_OES_shader_image_atomic
|
||||
Requested GL_OES_shader_io_blocks
|
||||
Requested GL_OES_shader_multisample_interpolation
|
||||
gl_FragCoord pixel center is integer
|
||||
gl_FragCoord origin is upper left
|
||||
using early_fragment_tests
|
||||
@ -736,6 +760,143 @@ ERROR: node is still EOpNull!
|
||||
0:342 'badIm2Df' (layout(rgba32f ) uniform highp image2D)
|
||||
0:342 'P' (uniform mediump 2-component vector of int)
|
||||
0:342 'datf' (temp mediump float)
|
||||
0:353 Function Definition: badInterp( (global void)
|
||||
0:353 Function Parameters:
|
||||
0:355 Sequence
|
||||
0:355 interpolateAtCentroid (global mediump 2-component vector of float)
|
||||
0:355 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:356 interpolateAtSample (global mediump 2-component vector of float)
|
||||
0:356 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:356 Constant:
|
||||
0:356 1 (const int)
|
||||
0:357 interpolateAtOffset (global mediump 2-component vector of float)
|
||||
0:357 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:357 Constant:
|
||||
0:357 0.200000
|
||||
0:357 0.200000
|
||||
0:369 Function Definition: interp( (global void)
|
||||
0:369 Function Parameters:
|
||||
0:? Sequence
|
||||
0:376 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:376 'res2' (temp mediump 2-component vector of float)
|
||||
0:376 interpolateAtCentroid (global mediump 2-component vector of float)
|
||||
0:376 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:377 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:377 'res4' (temp mediump 4-component vector of float)
|
||||
0:377 interpolateAtCentroid (global mediump 4-component vector of float)
|
||||
0:377 'colorSampIn' (smooth sample in mediump 4-component vector of float)
|
||||
0:378 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:378 'res4' (temp mediump 4-component vector of float)
|
||||
0:378 interpolateAtCentroid (global mediump 4-component vector of float)
|
||||
0:378 'colorfsi' (flat sample in mediump 4-component vector of float)
|
||||
0:379 move second child to first child (temp mediump float)
|
||||
0:379 'res' (temp mediump float)
|
||||
0:379 interpolateAtCentroid (global mediump float)
|
||||
0:379 'scalarIn' (smooth in mediump float)
|
||||
0:380 'res3' (temp mediump 3-component vector of float)
|
||||
0:381 move second child to first child (temp mediump 3-component vector of float)
|
||||
0:381 'res3' (temp mediump 3-component vector of float)
|
||||
0:381 interpolateAtCentroid (global mediump 3-component vector of float)
|
||||
0:381 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:381 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:381 Constant:
|
||||
0:381 2 (const int)
|
||||
0:382 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:382 'res2' (temp mediump 2-component vector of float)
|
||||
0:382 interpolateAtCentroid (global mediump 2-component vector of float)
|
||||
0:382 vector swizzle (temp mediump 2-component vector of float)
|
||||
0:382 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:382 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:382 Constant:
|
||||
0:382 2 (const int)
|
||||
0:382 Sequence
|
||||
0:382 Constant:
|
||||
0:382 0 (const int)
|
||||
0:382 Constant:
|
||||
0:382 1 (const int)
|
||||
0:384 'res3' (temp mediump 3-component vector of float)
|
||||
0:385 move second child to first child (temp mediump 3-component vector of float)
|
||||
0:385 'res3' (temp mediump 3-component vector of float)
|
||||
0:385 interpolateAtSample (global mediump 3-component vector of float)
|
||||
0:385 indirect index (smooth sample temp mediump 3-component vector of float)
|
||||
0:385 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:385 'i' (uniform mediump int)
|
||||
0:385 Constant:
|
||||
0:385 0 (const int)
|
||||
0:386 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:386 'res2' (temp mediump 2-component vector of float)
|
||||
0:386 interpolateAtSample (global mediump 2-component vector of float)
|
||||
0:386 vector swizzle (temp mediump 2-component vector of float)
|
||||
0:386 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:386 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:386 Constant:
|
||||
0:386 2 (const int)
|
||||
0:386 Sequence
|
||||
0:386 Constant:
|
||||
0:386 0 (const int)
|
||||
0:386 Constant:
|
||||
0:386 1 (const int)
|
||||
0:386 Constant:
|
||||
0:386 2 (const int)
|
||||
0:387 move second child to first child (temp mediump float)
|
||||
0:387 'res' (temp mediump float)
|
||||
0:387 interpolateAtSample (global mediump float)
|
||||
0:387 'scalarIn' (smooth in mediump float)
|
||||
0:387 Constant:
|
||||
0:387 1 (const int)
|
||||
0:389 'res3' (temp mediump 3-component vector of float)
|
||||
0:390 move second child to first child (temp mediump 3-component vector of float)
|
||||
0:390 'res3' (temp mediump 3-component vector of float)
|
||||
0:390 interpolateAtOffset (global mediump 3-component vector of float)
|
||||
0:390 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:390 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:390 Constant:
|
||||
0:390 2 (const int)
|
||||
0:390 Constant:
|
||||
0:390 0.200000
|
||||
0:390 0.200000
|
||||
0:391 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:391 'res2' (temp mediump 2-component vector of float)
|
||||
0:391 interpolateAtOffset (global mediump 2-component vector of float)
|
||||
0:391 vector swizzle (temp mediump 2-component vector of float)
|
||||
0:391 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:391 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:391 Constant:
|
||||
0:391 2 (const int)
|
||||
0:391 Sequence
|
||||
0:391 Constant:
|
||||
0:391 0 (const int)
|
||||
0:391 Constant:
|
||||
0:391 1 (const int)
|
||||
0:391 Constant:
|
||||
0:391 0.200000
|
||||
0:391 0.200000
|
||||
0:392 move second child to first child (temp mediump float)
|
||||
0:392 'res' (temp mediump float)
|
||||
0:392 interpolateAtOffset (global mediump float)
|
||||
0:392 add (temp mediump float)
|
||||
0:392 'scalarIn' (smooth in mediump float)
|
||||
0:392 'scalarIn' (smooth in mediump float)
|
||||
0:392 Constant:
|
||||
0:392 0.200000
|
||||
0:392 0.200000
|
||||
0:393 move second child to first child (temp mediump float)
|
||||
0:393 'res' (temp mediump float)
|
||||
0:393 interpolateAtOffset (global mediump float)
|
||||
0:393 'scalarIn' (smooth in mediump float)
|
||||
0:393 Constant:
|
||||
0:393 0.200000
|
||||
0:393 0.200000
|
||||
0:396 move second child to first child (temp mediump float)
|
||||
0:396 'res' (temp mediump float)
|
||||
0:396 interpolateAtCentroid (global mediump float)
|
||||
0:396 'f' (temp mediump float)
|
||||
0:397 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:397 'res4' (temp mediump 4-component vector of float)
|
||||
0:397 interpolateAtSample (global mediump 4-component vector of float)
|
||||
0:397 'outp' (out mediump 4-component vector of float)
|
||||
0:397 Constant:
|
||||
0:397 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float)
|
||||
0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float)
|
||||
@ -818,6 +979,17 @@ ERROR: node is still EOpNull!
|
||||
0:? 'badIm2Df' (layout(rgba32f ) uniform highp image2D)
|
||||
0:? 'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D)
|
||||
0:? 'badIm2Di' (layout(rgba16i ) uniform highp iimage2D)
|
||||
0:? 'colorSampInBad' (smooth sample in mediump 4-component vector of float)
|
||||
0:? 'colorCentroidBad' (centroid out mediump 4-component vector of float)
|
||||
0:? 'colorBadFlat' (flat out mediump 4-component vector of float)
|
||||
0:? 'colorBadSmooth' (smooth out mediump 4-component vector of float)
|
||||
0:? 'colorBadNo' (noperspective out mediump 4-component vector of float)
|
||||
0:? 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:? 'scalarIn' (smooth in mediump float)
|
||||
0:? 'colorSampIn' (smooth sample in mediump 4-component vector of float)
|
||||
0:? 'colorSampleBad' (sample out mediump 4-component vector of float)
|
||||
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)
|
||||
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
@ -832,6 +1004,7 @@ Requested GL_OES_gpu_shader5
|
||||
Requested GL_OES_sample_variables
|
||||
Requested GL_OES_shader_image_atomic
|
||||
Requested GL_OES_shader_io_blocks
|
||||
Requested GL_OES_shader_multisample_interpolation
|
||||
gl_FragCoord pixel center is integer
|
||||
gl_FragCoord origin is upper left
|
||||
using early_fragment_tests
|
||||
@ -1459,6 +1632,143 @@ ERROR: node is still EOpNull!
|
||||
0:342 'badIm2Df' (layout(rgba32f ) uniform highp image2D)
|
||||
0:342 'P' (uniform mediump 2-component vector of int)
|
||||
0:342 'datf' (temp mediump float)
|
||||
0:353 Function Definition: badInterp( (global void)
|
||||
0:353 Function Parameters:
|
||||
0:355 Sequence
|
||||
0:355 interpolateAtCentroid (global mediump 2-component vector of float)
|
||||
0:355 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:356 interpolateAtSample (global mediump 2-component vector of float)
|
||||
0:356 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:356 Constant:
|
||||
0:356 1 (const int)
|
||||
0:357 interpolateAtOffset (global mediump 2-component vector of float)
|
||||
0:357 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:357 Constant:
|
||||
0:357 0.200000
|
||||
0:357 0.200000
|
||||
0:369 Function Definition: interp( (global void)
|
||||
0:369 Function Parameters:
|
||||
0:? Sequence
|
||||
0:376 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:376 'res2' (temp mediump 2-component vector of float)
|
||||
0:376 interpolateAtCentroid (global mediump 2-component vector of float)
|
||||
0:376 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:377 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:377 'res4' (temp mediump 4-component vector of float)
|
||||
0:377 interpolateAtCentroid (global mediump 4-component vector of float)
|
||||
0:377 'colorSampIn' (smooth sample in mediump 4-component vector of float)
|
||||
0:378 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:378 'res4' (temp mediump 4-component vector of float)
|
||||
0:378 interpolateAtCentroid (global mediump 4-component vector of float)
|
||||
0:378 'colorfsi' (flat sample in mediump 4-component vector of float)
|
||||
0:379 move second child to first child (temp mediump float)
|
||||
0:379 'res' (temp mediump float)
|
||||
0:379 interpolateAtCentroid (global mediump float)
|
||||
0:379 'scalarIn' (smooth in mediump float)
|
||||
0:380 'res3' (temp mediump 3-component vector of float)
|
||||
0:381 move second child to first child (temp mediump 3-component vector of float)
|
||||
0:381 'res3' (temp mediump 3-component vector of float)
|
||||
0:381 interpolateAtCentroid (global mediump 3-component vector of float)
|
||||
0:381 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:381 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:381 Constant:
|
||||
0:381 2 (const int)
|
||||
0:382 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:382 'res2' (temp mediump 2-component vector of float)
|
||||
0:382 interpolateAtCentroid (global mediump 2-component vector of float)
|
||||
0:382 vector swizzle (temp mediump 2-component vector of float)
|
||||
0:382 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:382 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:382 Constant:
|
||||
0:382 2 (const int)
|
||||
0:382 Sequence
|
||||
0:382 Constant:
|
||||
0:382 0 (const int)
|
||||
0:382 Constant:
|
||||
0:382 1 (const int)
|
||||
0:384 'res3' (temp mediump 3-component vector of float)
|
||||
0:385 move second child to first child (temp mediump 3-component vector of float)
|
||||
0:385 'res3' (temp mediump 3-component vector of float)
|
||||
0:385 interpolateAtSample (global mediump 3-component vector of float)
|
||||
0:385 indirect index (smooth sample temp mediump 3-component vector of float)
|
||||
0:385 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:385 'i' (uniform mediump int)
|
||||
0:385 Constant:
|
||||
0:385 0 (const int)
|
||||
0:386 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:386 'res2' (temp mediump 2-component vector of float)
|
||||
0:386 interpolateAtSample (global mediump 2-component vector of float)
|
||||
0:386 vector swizzle (temp mediump 2-component vector of float)
|
||||
0:386 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:386 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:386 Constant:
|
||||
0:386 2 (const int)
|
||||
0:386 Sequence
|
||||
0:386 Constant:
|
||||
0:386 0 (const int)
|
||||
0:386 Constant:
|
||||
0:386 1 (const int)
|
||||
0:386 Constant:
|
||||
0:386 2 (const int)
|
||||
0:387 move second child to first child (temp mediump float)
|
||||
0:387 'res' (temp mediump float)
|
||||
0:387 interpolateAtSample (global mediump float)
|
||||
0:387 'scalarIn' (smooth in mediump float)
|
||||
0:387 Constant:
|
||||
0:387 1 (const int)
|
||||
0:389 'res3' (temp mediump 3-component vector of float)
|
||||
0:390 move second child to first child (temp mediump 3-component vector of float)
|
||||
0:390 'res3' (temp mediump 3-component vector of float)
|
||||
0:390 interpolateAtOffset (global mediump 3-component vector of float)
|
||||
0:390 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:390 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:390 Constant:
|
||||
0:390 2 (const int)
|
||||
0:390 Constant:
|
||||
0:390 0.200000
|
||||
0:390 0.200000
|
||||
0:391 move second child to first child (temp mediump 2-component vector of float)
|
||||
0:391 'res2' (temp mediump 2-component vector of float)
|
||||
0:391 interpolateAtOffset (global mediump 2-component vector of float)
|
||||
0:391 vector swizzle (temp mediump 2-component vector of float)
|
||||
0:391 direct index (smooth sample temp mediump 3-component vector of float)
|
||||
0:391 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
0:391 Constant:
|
||||
0:391 2 (const int)
|
||||
0:391 Sequence
|
||||
0:391 Constant:
|
||||
0:391 0 (const int)
|
||||
0:391 Constant:
|
||||
0:391 1 (const int)
|
||||
0:391 Constant:
|
||||
0:391 0.200000
|
||||
0:391 0.200000
|
||||
0:392 move second child to first child (temp mediump float)
|
||||
0:392 'res' (temp mediump float)
|
||||
0:392 interpolateAtOffset (global mediump float)
|
||||
0:392 add (temp mediump float)
|
||||
0:392 'scalarIn' (smooth in mediump float)
|
||||
0:392 'scalarIn' (smooth in mediump float)
|
||||
0:392 Constant:
|
||||
0:392 0.200000
|
||||
0:392 0.200000
|
||||
0:393 move second child to first child (temp mediump float)
|
||||
0:393 'res' (temp mediump float)
|
||||
0:393 interpolateAtOffset (global mediump float)
|
||||
0:393 'scalarIn' (smooth in mediump float)
|
||||
0:393 Constant:
|
||||
0:393 0.200000
|
||||
0:393 0.200000
|
||||
0:396 move second child to first child (temp mediump float)
|
||||
0:396 'res' (temp mediump float)
|
||||
0:396 interpolateAtCentroid (global mediump float)
|
||||
0:396 'f' (temp mediump float)
|
||||
0:397 move second child to first child (temp mediump 4-component vector of float)
|
||||
0:397 'res4' (temp mediump 4-component vector of float)
|
||||
0:397 interpolateAtSample (global mediump 4-component vector of float)
|
||||
0:397 'outp' (out mediump 4-component vector of float)
|
||||
0:397 Constant:
|
||||
0:397 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'gl_FragCoord' (smooth in mediump 4-component vector of float)
|
||||
0:? 'v3' (layout(location=2 ) smooth in mediump 3-component vector of float)
|
||||
@ -1541,4 +1851,15 @@ ERROR: node is still EOpNull!
|
||||
0:? 'badIm2Df' (layout(rgba32f ) uniform highp image2D)
|
||||
0:? 'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D)
|
||||
0:? 'badIm2Di' (layout(rgba16i ) uniform highp iimage2D)
|
||||
0:? 'colorSampInBad' (smooth sample in mediump 4-component vector of float)
|
||||
0:? 'colorCentroidBad' (centroid out mediump 4-component vector of float)
|
||||
0:? 'colorBadFlat' (flat out mediump 4-component vector of float)
|
||||
0:? 'colorBadSmooth' (smooth out mediump 4-component vector of float)
|
||||
0:? 'colorBadNo' (noperspective out mediump 4-component vector of float)
|
||||
0:? 'colorfc' (centroid flat in mediump 2-component vector of float)
|
||||
0:? 'scalarIn' (smooth in mediump float)
|
||||
0:? 'colorSampIn' (smooth sample in mediump 4-component vector of float)
|
||||
0:? 'colorSampleBad' (sample out mediump 4-component vector of float)
|
||||
0:? 'colorfsi' (flat sample in mediump 4-component vector of float)
|
||||
0:? 'sampInArray' (smooth sample in 4-element array of mediump 3-component vector of float)
|
||||
|
||||
|
@ -90,7 +90,11 @@ ERROR: 0:318: 'sampler/image' : type requires declaration of default precision q
|
||||
ERROR: 0:319: 'sampler/image' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:339: 'textureSize' : no matching overloaded function found
|
||||
ERROR: 0:339: '=' : cannot convert from 'const float' to 'temp highp 3-component vector of int'
|
||||
ERROR: 86 compilation errors. No code generated.
|
||||
ERROR: 0:377: 'sample' : Reserved word.
|
||||
ERROR: 0:388: 'interpolateAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:389: 'interpolateAtSample' : no matching overloaded function found
|
||||
ERROR: 0:390: 'interpolateAtOffset' : no matching overloaded function found
|
||||
ERROR: 90 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 310
|
||||
@ -98,6 +102,7 @@ Requested GL_EXT_texture_buffer
|
||||
Requested GL_OES_gpu_shader5
|
||||
Requested GL_OES_shader_image_atomic
|
||||
Requested GL_OES_shader_io_blocks
|
||||
Requested GL_OES_shader_multisample_interpolation
|
||||
Requested GL_OES_texture_buffer
|
||||
Requested GL_OES_texture_cube_map_array
|
||||
Requested GL_OES_texture_storage_multisample_2d_array
|
||||
@ -852,6 +857,15 @@ ERROR: node is still EOpNull!
|
||||
0:374 Constant:
|
||||
0:374 5 (const uint)
|
||||
0:374 'datu' (temp highp uint)
|
||||
0:386 Function Definition: badInterp( (global void)
|
||||
0:386 Function Parameters:
|
||||
0:388 Sequence
|
||||
0:388 Constant:
|
||||
0:388 0.000000
|
||||
0:389 Constant:
|
||||
0:389 0.000000
|
||||
0:390 Constant:
|
||||
0:390 0.000000
|
||||
0:? Linker Objects
|
||||
0:? 's' (shared highp 4-component vector of float)
|
||||
0:? 'v' (buffer highp 4-component vector of float)
|
||||
@ -953,6 +967,11 @@ ERROR: node is still EOpNull!
|
||||
0:? 'im2Du' (layout(r32ui ) uniform highp uimage2D)
|
||||
0:? 'im2Di' (layout(r32i ) uniform highp iimage2D)
|
||||
0:? 'P' (uniform highp 2-component vector of int)
|
||||
0:? 'colorSampInBad' (smooth sample out highp 4-component vector of float)
|
||||
0:? 'colorSample' (smooth sample out highp 4-component vector of float)
|
||||
0:? 'colorfsi' (flat sample out highp 4-component vector of float)
|
||||
0:? 'sampInArray' (smooth sample out 4-element array of highp 3-component vector of float)
|
||||
0:? 'inv4' (in highp 4-component vector of float)
|
||||
0:? 'gl_VertexID' (gl_VertexId highp int VertexId)
|
||||
0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId)
|
||||
|
||||
@ -965,6 +984,7 @@ Requested GL_EXT_texture_buffer
|
||||
Requested GL_OES_gpu_shader5
|
||||
Requested GL_OES_shader_image_atomic
|
||||
Requested GL_OES_shader_io_blocks
|
||||
Requested GL_OES_shader_multisample_interpolation
|
||||
Requested GL_OES_texture_buffer
|
||||
Requested GL_OES_texture_cube_map_array
|
||||
Requested GL_OES_texture_storage_multisample_2d_array
|
||||
@ -1719,6 +1739,15 @@ ERROR: node is still EOpNull!
|
||||
0:374 Constant:
|
||||
0:374 5 (const uint)
|
||||
0:374 'datu' (temp highp uint)
|
||||
0:386 Function Definition: badInterp( (global void)
|
||||
0:386 Function Parameters:
|
||||
0:388 Sequence
|
||||
0:388 Constant:
|
||||
0:388 0.000000
|
||||
0:389 Constant:
|
||||
0:389 0.000000
|
||||
0:390 Constant:
|
||||
0:390 0.000000
|
||||
0:? Linker Objects
|
||||
0:? 's' (shared highp 4-component vector of float)
|
||||
0:? 'v' (buffer highp 4-component vector of float)
|
||||
@ -1820,6 +1849,11 @@ ERROR: node is still EOpNull!
|
||||
0:? 'im2Du' (layout(r32ui ) uniform highp uimage2D)
|
||||
0:? 'im2Di' (layout(r32i ) uniform highp iimage2D)
|
||||
0:? 'P' (uniform highp 2-component vector of int)
|
||||
0:? 'colorSampInBad' (smooth sample out highp 4-component vector of float)
|
||||
0:? 'colorSample' (smooth sample out highp 4-component vector of float)
|
||||
0:? 'colorfsi' (flat sample out highp 4-component vector of float)
|
||||
0:? 'sampInArray' (smooth sample out 4-element array of highp 3-component vector of float)
|
||||
0:? 'inv4' (in highp 4-component vector of float)
|
||||
0:? 'gl_VertexID' (gl_VertexId highp int VertexId)
|
||||
0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId)
|
||||
|
||||
|
@ -15,11 +15,22 @@ ERROR: 0:54: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
|
||||
ERROR: 0:54: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||
ERROR: 0:57: 'patch' : not supported in this stage: fragment
|
||||
ERROR: 0:58: 'patch' : not supported in this stage: fragment
|
||||
ERROR: 0:58: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
|
||||
ERROR: 0:73: 'dFdxFine' : required extension not requested: GL_ARB_derivative_control
|
||||
ERROR: 0:74: 'dFdyCoarse' : required extension not requested: GL_ARB_derivative_control
|
||||
ERROR: 0:75: 'fwidthCoarse' : required extension not requested: GL_ARB_derivative_control
|
||||
ERROR: 0:75: 'fwidthFine' : required extension not requested: GL_ARB_derivative_control
|
||||
ERROR: 19 compilation errors. No code generated.
|
||||
ERROR: 0:104: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output
|
||||
ERROR: 0:123: 'interpolateAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:125: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:127: 'interpolateAtSample' : no matching overloaded function found
|
||||
ERROR: 0:132: 'interpolateAtOffset' : no matching overloaded function found
|
||||
ERROR: 0:134: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:135: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:136: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:139: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 0:140: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element
|
||||
ERROR: 30 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 400
|
||||
@ -298,6 +309,99 @@ ERROR: node is still EOpNull!
|
||||
0:100 'u2' (temp 2-component vector of uint)
|
||||
0:100 UnpackUnorm4x8 (global 2-component vector of uint)
|
||||
0:100 'd' (temp double)
|
||||
0:117 Function Definition: interp( (global void)
|
||||
0:117 Function Parameters:
|
||||
0:119 Sequence
|
||||
0:119 interpolateAtCentroid (global 2-component vector of float)
|
||||
0:119 'colorfc' (centroid flat in 2-component vector of float)
|
||||
0:120 interpolateAtCentroid (global 4-component vector of float)
|
||||
0:120 'colorSampIn' (smooth sample in 4-component vector of float)
|
||||
0:121 interpolateAtCentroid (global 4-component vector of float)
|
||||
0:121 'colorfsi' (noperspective in 4-component vector of float)
|
||||
0:122 interpolateAtCentroid (global float)
|
||||
0:122 'scalarIn' (smooth in float)
|
||||
0:123 Constant:
|
||||
0:123 0.000000
|
||||
0:124 interpolateAtCentroid (global 3-component vector of float)
|
||||
0:124 direct index (smooth sample temp 3-component vector of float)
|
||||
0:124 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:124 Constant:
|
||||
0:124 2 (const int)
|
||||
0:125 interpolateAtCentroid (global 2-component vector of float)
|
||||
0:125 vector swizzle (temp 2-component vector of float)
|
||||
0:125 direct index (smooth sample temp 3-component vector of float)
|
||||
0:125 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:125 Constant:
|
||||
0:125 2 (const int)
|
||||
0:125 Sequence
|
||||
0:125 Constant:
|
||||
0:125 0 (const int)
|
||||
0:125 Constant:
|
||||
0:125 1 (const int)
|
||||
0:127 Constant:
|
||||
0:127 0.000000
|
||||
0:128 interpolateAtSample (global 3-component vector of float)
|
||||
0:128 indirect index (smooth sample temp 3-component vector of float)
|
||||
0:128 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:128 'i' (flat in int)
|
||||
0:128 Constant:
|
||||
0:128 0 (const int)
|
||||
0:129 interpolateAtSample (global float)
|
||||
0:129 x: direct index for structure (global float)
|
||||
0:129 's1' (smooth in structure{global float x})
|
||||
0:129 Constant:
|
||||
0:129 0 (const int)
|
||||
0:129 Constant:
|
||||
0:129 2 (const int)
|
||||
0:130 interpolateAtSample (global float)
|
||||
0:130 'scalarIn' (smooth in float)
|
||||
0:130 Constant:
|
||||
0:130 1 (const int)
|
||||
0:132 Constant:
|
||||
0:132 0.000000
|
||||
0:133 interpolateAtOffset (global 3-component vector of float)
|
||||
0:133 direct index (smooth sample temp 3-component vector of float)
|
||||
0:133 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:133 Constant:
|
||||
0:133 2 (const int)
|
||||
0:133 Constant:
|
||||
0:133 0.200000
|
||||
0:133 0.200000
|
||||
0:134 interpolateAtOffset (global 2-component vector of float)
|
||||
0:134 vector swizzle (temp 2-component vector of float)
|
||||
0:134 direct index (smooth sample temp 3-component vector of float)
|
||||
0:134 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:134 Constant:
|
||||
0:134 2 (const int)
|
||||
0:134 Sequence
|
||||
0:134 Constant:
|
||||
0:134 0 (const int)
|
||||
0:134 Constant:
|
||||
0:134 1 (const int)
|
||||
0:134 Constant:
|
||||
0:134 0.200000
|
||||
0:134 0.200000
|
||||
0:135 interpolateAtOffset (global float)
|
||||
0:135 add (temp float)
|
||||
0:135 'scalarIn' (smooth in float)
|
||||
0:135 'scalarIn' (smooth in float)
|
||||
0:135 Constant:
|
||||
0:135 0.200000
|
||||
0:135 0.200000
|
||||
0:136 interpolateAtOffset (global float)
|
||||
0:136 x: direct index for structure (global float)
|
||||
0:136 's2' (sample temp structure{global float x})
|
||||
0:136 Constant:
|
||||
0:136 0 (const int)
|
||||
0:136 Constant:
|
||||
0:136 0.200000
|
||||
0:136 0.200000
|
||||
0:139 interpolateAtCentroid (global float)
|
||||
0:139 'f' (temp float)
|
||||
0:140 interpolateAtSample (global 4-component vector of float)
|
||||
0:140 'outp' (out 4-component vector of float)
|
||||
0:140 Constant:
|
||||
0:140 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'c2D' (smooth in 2-component vector of float)
|
||||
0:? 'i' (flat in int)
|
||||
@ -320,6 +424,14 @@ ERROR: node is still EOpNull!
|
||||
0:? 'in2' (smooth in 2-component vector of float)
|
||||
0:? 'in3' (smooth in 3-component vector of float)
|
||||
0:? 'in4' (smooth in 4-component vector of float)
|
||||
0:? 'colorSampIn' (smooth sample in 4-component vector of float)
|
||||
0:? 'colorSampleBad' (sample out 4-component vector of float)
|
||||
0:? 'colorfsi' (noperspective in 4-component vector of float)
|
||||
0:? 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:? 'scalarIn' (smooth in float)
|
||||
0:? 'colorfc' (centroid flat in 2-component vector of float)
|
||||
0:? 's1' (smooth in structure{global float x})
|
||||
0:? 's2' (sample temp structure{global float x})
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
@ -601,6 +713,99 @@ ERROR: node is still EOpNull!
|
||||
0:100 'u2' (temp 2-component vector of uint)
|
||||
0:100 UnpackUnorm4x8 (global 2-component vector of uint)
|
||||
0:100 'd' (temp double)
|
||||
0:117 Function Definition: interp( (global void)
|
||||
0:117 Function Parameters:
|
||||
0:119 Sequence
|
||||
0:119 interpolateAtCentroid (global 2-component vector of float)
|
||||
0:119 'colorfc' (centroid flat in 2-component vector of float)
|
||||
0:120 interpolateAtCentroid (global 4-component vector of float)
|
||||
0:120 'colorSampIn' (smooth sample in 4-component vector of float)
|
||||
0:121 interpolateAtCentroid (global 4-component vector of float)
|
||||
0:121 'colorfsi' (noperspective in 4-component vector of float)
|
||||
0:122 interpolateAtCentroid (global float)
|
||||
0:122 'scalarIn' (smooth in float)
|
||||
0:123 Constant:
|
||||
0:123 0.000000
|
||||
0:124 interpolateAtCentroid (global 3-component vector of float)
|
||||
0:124 direct index (smooth sample temp 3-component vector of float)
|
||||
0:124 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:124 Constant:
|
||||
0:124 2 (const int)
|
||||
0:125 interpolateAtCentroid (global 2-component vector of float)
|
||||
0:125 vector swizzle (temp 2-component vector of float)
|
||||
0:125 direct index (smooth sample temp 3-component vector of float)
|
||||
0:125 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:125 Constant:
|
||||
0:125 2 (const int)
|
||||
0:125 Sequence
|
||||
0:125 Constant:
|
||||
0:125 0 (const int)
|
||||
0:125 Constant:
|
||||
0:125 1 (const int)
|
||||
0:127 Constant:
|
||||
0:127 0.000000
|
||||
0:128 interpolateAtSample (global 3-component vector of float)
|
||||
0:128 indirect index (smooth sample temp 3-component vector of float)
|
||||
0:128 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:128 'i' (flat in int)
|
||||
0:128 Constant:
|
||||
0:128 0 (const int)
|
||||
0:129 interpolateAtSample (global float)
|
||||
0:129 x: direct index for structure (global float)
|
||||
0:129 's1' (smooth in structure{global float x})
|
||||
0:129 Constant:
|
||||
0:129 0 (const int)
|
||||
0:129 Constant:
|
||||
0:129 2 (const int)
|
||||
0:130 interpolateAtSample (global float)
|
||||
0:130 'scalarIn' (smooth in float)
|
||||
0:130 Constant:
|
||||
0:130 1 (const int)
|
||||
0:132 Constant:
|
||||
0:132 0.000000
|
||||
0:133 interpolateAtOffset (global 3-component vector of float)
|
||||
0:133 direct index (smooth sample temp 3-component vector of float)
|
||||
0:133 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:133 Constant:
|
||||
0:133 2 (const int)
|
||||
0:133 Constant:
|
||||
0:133 0.200000
|
||||
0:133 0.200000
|
||||
0:134 interpolateAtOffset (global 2-component vector of float)
|
||||
0:134 vector swizzle (temp 2-component vector of float)
|
||||
0:134 direct index (smooth sample temp 3-component vector of float)
|
||||
0:134 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:134 Constant:
|
||||
0:134 2 (const int)
|
||||
0:134 Sequence
|
||||
0:134 Constant:
|
||||
0:134 0 (const int)
|
||||
0:134 Constant:
|
||||
0:134 1 (const int)
|
||||
0:134 Constant:
|
||||
0:134 0.200000
|
||||
0:134 0.200000
|
||||
0:135 interpolateAtOffset (global float)
|
||||
0:135 add (temp float)
|
||||
0:135 'scalarIn' (smooth in float)
|
||||
0:135 'scalarIn' (smooth in float)
|
||||
0:135 Constant:
|
||||
0:135 0.200000
|
||||
0:135 0.200000
|
||||
0:136 interpolateAtOffset (global float)
|
||||
0:136 x: direct index for structure (global float)
|
||||
0:136 's2' (sample temp structure{global float x})
|
||||
0:136 Constant:
|
||||
0:136 0 (const int)
|
||||
0:136 Constant:
|
||||
0:136 0.200000
|
||||
0:136 0.200000
|
||||
0:139 interpolateAtCentroid (global float)
|
||||
0:139 'f' (temp float)
|
||||
0:140 interpolateAtSample (global 4-component vector of float)
|
||||
0:140 'outp' (out 4-component vector of float)
|
||||
0:140 Constant:
|
||||
0:140 0 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'c2D' (smooth in 2-component vector of float)
|
||||
0:? 'i' (flat in int)
|
||||
@ -623,4 +828,12 @@ ERROR: node is still EOpNull!
|
||||
0:? 'in2' (smooth in 2-component vector of float)
|
||||
0:? 'in3' (smooth in 3-component vector of float)
|
||||
0:? 'in4' (smooth in 4-component vector of float)
|
||||
0:? 'colorSampIn' (smooth sample in 4-component vector of float)
|
||||
0:? 'colorSampleBad' (sample out 4-component vector of float)
|
||||
0:? 'colorfsi' (noperspective in 4-component vector of float)
|
||||
0:? 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:? 'scalarIn' (smooth in float)
|
||||
0:? 'colorfc' (centroid flat in 2-component vector of float)
|
||||
0:? 's1' (smooth in structure{global float x})
|
||||
0:? 's2' (sample temp structure{global float x})
|
||||
|
||||
|
@ -53,6 +53,20 @@ ERROR: 48 compilation errors. No code generated.
|
||||
|
||||
Shader version: 440
|
||||
ERROR: node is still EOpNull!
|
||||
0:144 Function Definition: interp( (global void)
|
||||
0:144 Function Parameters:
|
||||
0:146 Sequence
|
||||
0:146 interpolateAtCentroid (global 2-component vector of float)
|
||||
0:146 vector swizzle (temp 2-component vector of float)
|
||||
0:146 direct index (smooth sample temp 3-component vector of float)
|
||||
0:146 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:146 Constant:
|
||||
0:146 2 (const int)
|
||||
0:146 Sequence
|
||||
0:146 Constant:
|
||||
0:146 0 (const int)
|
||||
0:146 Constant:
|
||||
0:146 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
|
||||
0:? 'b' (layout(location=4 component=1 ) smooth in float)
|
||||
@ -88,6 +102,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 'specExample4301' (layout(column_major std430 align=128 ) uniform block{layout(column_major std430 offset=0 align=128 ) uniform 4-component vector of float a, layout(column_major std430 offset=128 align=128 ) uniform 3-component vector of float b, layout(column_major std430 offset=256 align=128 ) uniform 2-component vector of float d, layout(column_major std430 offset=512 align=128 ) uniform float e, layout(column_major std430 offset=520 align=8 ) uniform double f, layout(column_major std430 offset=640 align=128 ) uniform float h, layout(column_major std430 offset=768 align=128 ) uniform 3-component vector of double i})
|
||||
0:? 'aconst' (global 4-element array of int)
|
||||
0:? 'bconst' (global 64-element array of int)
|
||||
0:? 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
@ -96,6 +111,20 @@ ERROR: Linking fragment stage: Missing entry point: Each stage requires one "voi
|
||||
|
||||
Shader version: 440
|
||||
ERROR: node is still EOpNull!
|
||||
0:144 Function Definition: interp( (global void)
|
||||
0:144 Function Parameters:
|
||||
0:146 Sequence
|
||||
0:146 interpolateAtCentroid (global 2-component vector of float)
|
||||
0:146 vector swizzle (temp 2-component vector of float)
|
||||
0:146 direct index (smooth sample temp 3-component vector of float)
|
||||
0:146 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
0:146 Constant:
|
||||
0:146 2 (const int)
|
||||
0:146 Sequence
|
||||
0:146 Constant:
|
||||
0:146 0 (const int)
|
||||
0:146 Constant:
|
||||
0:146 1 (const int)
|
||||
0:? Linker Objects
|
||||
0:? 'a' (layout(location=4 component=2 ) smooth in 2-component vector of float)
|
||||
0:? 'b' (layout(location=4 component=1 ) smooth in float)
|
||||
@ -131,4 +160,5 @@ ERROR: node is still EOpNull!
|
||||
0:? 'specExample4301' (layout(column_major std430 align=128 ) uniform block{layout(column_major std430 offset=0 align=128 ) uniform 4-component vector of float a, layout(column_major std430 offset=128 align=128 ) uniform 3-component vector of float b, layout(column_major std430 offset=256 align=128 ) uniform 2-component vector of float d, layout(column_major std430 offset=512 align=128 ) uniform float e, layout(column_major std430 offset=520 align=8 ) uniform double f, layout(column_major std430 offset=640 align=128 ) uniform float h, layout(column_major std430 offset=768 align=128 ) uniform 3-component vector of double i})
|
||||
0:? 'aconst' (global 4-element array of int)
|
||||
0:? 'bconst' (global 64-element array of int)
|
||||
0:? 'sampInArray' (smooth sample in 4-element array of 3-component vector of float)
|
||||
|
||||
|
@ -226,6 +226,10 @@ enum TOperator {
|
||||
EOpDPdyCoarse, // Fragment only
|
||||
EOpFwidthCoarse, // Fragment only
|
||||
|
||||
EOpInterpolateAtCentroid, // Fragment only
|
||||
EOpInterpolateAtSample, // Fragment only
|
||||
EOpInterpolateAtOffset, // Fragment only
|
||||
|
||||
EOpMatrixTimesMatrix,
|
||||
EOpOuterProduct,
|
||||
EOpDeterminant,
|
||||
|
@ -2,5 +2,5 @@
|
||||
// For the version, it uses the latest git tag followed by the number of commits.
|
||||
// For the date, it uses the current date (when then script is run).
|
||||
|
||||
#define GLSLANG_REVISION "3.0.730"
|
||||
#define GLSLANG_DATE "21-Aug-2015"
|
||||
#define GLSLANG_REVISION "3.0.732"
|
||||
#define GLSLANG_DATE "22-Aug-2015"
|
||||
|
@ -1185,6 +1185,28 @@ void TBuiltIns::initialize(int version, EProfile profile)
|
||||
"\n");
|
||||
}
|
||||
|
||||
// GL_OES_shader_multisample_interpolation
|
||||
if ((profile == EEsProfile && version >= 310) ||
|
||||
(profile != EEsProfile && version >= 400)) {
|
||||
stageBuiltins[EShLangFragment].append(
|
||||
"float interpolateAtCentroid(float);"
|
||||
"vec2 interpolateAtCentroid(vec2);"
|
||||
"vec3 interpolateAtCentroid(vec3);"
|
||||
"vec4 interpolateAtCentroid(vec4);"
|
||||
|
||||
"float interpolateAtSample(float, int);"
|
||||
"vec2 interpolateAtSample(vec2, int);"
|
||||
"vec3 interpolateAtSample(vec3, int);"
|
||||
"vec4 interpolateAtSample(vec4, int);"
|
||||
|
||||
"float interpolateAtOffset(float, vec2);"
|
||||
"vec2 interpolateAtOffset(vec2, vec2);"
|
||||
"vec3 interpolateAtOffset(vec3, vec2);"
|
||||
"vec4 interpolateAtOffset(vec4, vec2);"
|
||||
|
||||
"\n");
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// Standard Uniforms
|
||||
@ -3009,8 +3031,12 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
|
||||
symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_OES_standard_derivatives);
|
||||
symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_OES_standard_derivatives);
|
||||
}
|
||||
if (version >= 310)
|
||||
if (version >= 310) {
|
||||
symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5);
|
||||
symbolTable.setFunctionExtensions("interpolateAtCentroid", 1, &E_GL_OES_shader_multisample_interpolation);
|
||||
symbolTable.setFunctionExtensions("interpolateAtSample", 1, &E_GL_OES_shader_multisample_interpolation);
|
||||
symbolTable.setFunctionExtensions("interpolateAtOffset", 1, &E_GL_OES_shader_multisample_interpolation);
|
||||
}
|
||||
} else if (version < 130) {
|
||||
symbolTable.setFunctionExtensions("texture1DLod", 1, &E_GL_ARB_shader_texture_lod);
|
||||
symbolTable.setFunctionExtensions("texture2DLod", 1, &E_GL_ARB_shader_texture_lod);
|
||||
@ -3351,6 +3377,9 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
|
||||
symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse);
|
||||
symbolTable.relateToOperator("fwidthCoarse", EOpFwidthCoarse);
|
||||
}
|
||||
symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid);
|
||||
symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample);
|
||||
symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset);
|
||||
break;
|
||||
|
||||
case EShLangCompute:
|
||||
|
@ -860,6 +860,35 @@ TIntermTyped* TIntermediate::addSwizzle(TVectorFields& fields, const TSourceLoc&
|
||||
return node;
|
||||
}
|
||||
|
||||
//
|
||||
// Follow the left branches down to the root of an l-value
|
||||
// expression (just "." and []).
|
||||
//
|
||||
// Return the base of the l-value (where following indexing quits working).
|
||||
// Return nullptr if a chain following dereferences cannot be followed.
|
||||
//
|
||||
// 'swizzleOkay' says whether or not it is okay to consider a swizzle
|
||||
// a valid part of the dereference chain.
|
||||
//
|
||||
const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool swizzleOkay)
|
||||
{
|
||||
do {
|
||||
const TIntermBinary* binary = node->getAsBinaryNode();
|
||||
if (binary == nullptr)
|
||||
return node;
|
||||
TOperator op = binary->getOp();
|
||||
if (op != EOpIndexDirect && op != EOpIndexIndirect && op != EOpIndexDirectStruct && op != EOpVectorSwizzle)
|
||||
return nullptr;
|
||||
if (! swizzleOkay) {
|
||||
if (op == EOpVectorSwizzle)
|
||||
return nullptr;
|
||||
if ((op == EOpIndexDirect || op == EOpIndexIndirect) && binary->getLeft()->getType().isVector() && ! binary->getLeft()->getType().isArray())
|
||||
return nullptr;
|
||||
}
|
||||
node = node->getAsBinaryNode()->getLeft();
|
||||
} while (true);
|
||||
}
|
||||
|
||||
//
|
||||
// Create loop nodes.
|
||||
//
|
||||
|
@ -1485,6 +1485,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpInterpolateAtCentroid:
|
||||
case EOpInterpolateAtSample:
|
||||
case EOpInterpolateAtOffset:
|
||||
// "For the interpolateAt* functions, the call will return a precision
|
||||
// qualification matching the precision of the 'interpolant' argument to
|
||||
// the function call."
|
||||
callNode.getQualifier().precision = arg0->getQualifier().precision;
|
||||
|
||||
// Make sure the first argument is an interpolant, or an array element of an interpolant
|
||||
if (arg0->getType().getQualifier().storage != EvqVaryingIn) {
|
||||
// It might still be an array element.
|
||||
//
|
||||
// We could check more, but the semantics of the first argument are already met; the
|
||||
// only way to turn an array into a float/vec* is array dereference and swizzle.
|
||||
//
|
||||
// ES and desktop 4.3 and earlier: swizzles may not be used
|
||||
// desktop 4.4 and later: swizzles may be used
|
||||
bool swizzleOkay = (profile != EEsProfile) && (version >= 440);
|
||||
const TIntermTyped* base = TIntermediate::findLValueBase(arg0, swizzleOkay);
|
||||
if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn)
|
||||
error(loc, "first argument must be an interpolant, or interpolant-array element", fnCandidate.getName().c_str(), "");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2456,6 +2480,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
|
||||
error(loc, "cannot be a matrix", GetStorageQualifierString(qualifier.storage), "");
|
||||
return;
|
||||
}
|
||||
if (qualifier.isAuxiliary())
|
||||
error(loc, "can't use auxiliary qualifier on a fragment output", "centroid/sample/patch", "");
|
||||
if (qualifier.isInterpolation())
|
||||
error(loc, "can't use interpolation qualifier on a fragment output", "flat/smooth/noperspective", "");
|
||||
break;
|
||||
|
||||
case EShLangCompute:
|
||||
|
@ -738,6 +738,10 @@ int TScanContext::tokenizeIdentifier()
|
||||
return es30ReservedFromGLSL(400);
|
||||
|
||||
case SAMPLE:
|
||||
if (parseContext.extensionsTurnedOn(1, &E_GL_OES_shader_multisample_interpolation))
|
||||
return keyword;
|
||||
return es30ReservedFromGLSL(400);
|
||||
|
||||
case SUBROUTINE:
|
||||
return es30ReservedFromGLSL(400);
|
||||
|
||||
|
@ -183,7 +183,7 @@ void TParseContext::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_KHR_blend_equation_advanced] = EBhDisablePartial;
|
||||
extensionBehavior[E_GL_OES_sample_variables] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_shader_image_atomic] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_shader_multisample_interpolation] = EBhDisablePartial;
|
||||
extensionBehavior[E_GL_OES_shader_multisample_interpolation] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_texture_storage_multisample_2d_array] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_geometry_shader] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_geometry_point_size] = EBhDisable;
|
||||
|
@ -286,6 +286,9 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
|
||||
case EOpDPdxCoarse: out.debug << "dPdxCoarse"; break;
|
||||
case EOpDPdyCoarse: out.debug << "dPdyCoarse"; break;
|
||||
case EOpFwidthCoarse: out.debug << "fwidthCoarse"; break;
|
||||
|
||||
case EOpInterpolateAtCentroid: out.debug << "interpolateAtCentroid"; break;
|
||||
|
||||
case EOpDeterminant: out.debug << "determinant"; break;
|
||||
case EOpMatrixInverse: out.debug << "inverse"; break;
|
||||
case EOpTranspose: out.debug << "transpose"; break;
|
||||
@ -473,8 +476,11 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
||||
case EOpBitfieldInsert: out.debug << "bitfieldInsert"; break;
|
||||
|
||||
case EOpFma: out.debug << "fma"; break;
|
||||
case EOpFrexp: out.debug << "frexp"; break;
|
||||
case EOpLdexp: out.debug << "ldexp"; break;
|
||||
case EOpFrexp: out.debug << "frexp"; break;
|
||||
case EOpLdexp: out.debug << "ldexp"; break;
|
||||
|
||||
case EOpInterpolateAtSample: out.debug << "interpolateAtSample"; break;
|
||||
case EOpInterpolateAtOffset: out.debug << "interpolateAtOffset"; break;
|
||||
|
||||
default: out.debug.message(EPrefixError, "Bad aggregation op");
|
||||
}
|
||||
|
@ -192,6 +192,9 @@ public:
|
||||
TIntermTyped* foldDereference(TIntermTyped* node, int index, const TSourceLoc&);
|
||||
TIntermTyped* foldSwizzle(TIntermTyped* node, TVectorFields& fields, const TSourceLoc&);
|
||||
|
||||
// Tree ops
|
||||
static const TIntermTyped* findLValueBase(const TIntermTyped*, bool swizzleOkay);
|
||||
|
||||
// Linkage related
|
||||
void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&);
|
||||
void addSymbolLinkageNode(TIntermAggregate*& linkage, TSymbolTable&, const TString&);
|
||||
|
Loading…
Reference in New Issue
Block a user