Implement GL_OES_texture_storage_multisample_2d_array.

This commit is contained in:
John Kessenich 2015-08-16 21:10:38 -06:00
parent 2b0a11351f
commit a39159a192
6 changed files with 173 additions and 4 deletions

View File

@ -305,3 +305,37 @@ void CAT()
highp ivec3 s2 = imageSize(CA2);
highp ivec3 s3 = imageSize(CA3);
}
uniform sampler2DMSArray bad2DMS; // ERROR, reserved
uniform isampler2DMSArray bad2DMSi; // ERROR, reserved
uniform usampler2DMSArray bad2DMSu; // ERROR, reserved
#extension GL_OES_texture_storage_multisample_2d_array : enable
#ifdef GL_OES_texture_storage_multisample_2d_array
uniform sampler2DMSArray noPrec2DMS; // ERROR, no default
uniform isampler2DMSArray noPrec2DMSi; // ERROR, no default
uniform usampler2DMSArray noPrec2DMSu; // ERROR, no default
#endif
precision highp sampler2DMSArray;
precision highp isampler2DMSArray;
precision highp usampler2DMSArray;
uniform sampler2DMSArray samp2DMSA;
uniform isampler2DMSArray samp2DMSAi;
uniform usampler2DMSArray samp2DMSAu;
void MSA()
{
vec4 tf = texelFetch(samp2DMSA, ivec3(5), 2);
ivec4 tfi = texelFetch(samp2DMSAi, ivec3(5), 2);
uvec4 tfu = texelFetch(samp2DMSAu, ivec3(5), 2);
ivec3 tfs = textureSize(samp2DMSA);
ivec3 tfsi = textureSize(samp2DMSAi);
ivec3 tfsb = textureSize(samp2DMSAi, 4); // ERROR, no lod
ivec3 tfsu = textureSize(samp2DMSAu);
}

View File

@ -79,7 +79,18 @@ ERROR: 0:250: 'sampler/image' : type requires declaration of default precision q
ERROR: 0:251: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:252: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:253: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 75 compilation errors. No code generated.
ERROR: 0:309: 'sampler2DMSArray' : Reserved word.
ERROR: 0:309: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:310: 'isampler2DMSArray' : Reserved word.
ERROR: 0:310: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:311: 'usampler2DMSArray' : Reserved word.
ERROR: 0:311: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:317: 'sampler/image' : type requires declaration of default precision qualifier
ERROR: 0:318: 'sampler/image' : type requires declaration of default precision qualifier
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.
Shader version: 310
@ -88,6 +99,7 @@ Requested GL_OES_gpu_shader5
Requested GL_OES_shader_io_blocks
Requested GL_OES_texture_buffer
Requested GL_OES_texture_cube_map_array
Requested GL_OES_texture_storage_multisample_2d_array
ERROR: node is still EOpNull!
0:12 Function Definition: main( (global void)
0:12 Function Parameters:
@ -713,6 +725,57 @@ ERROR: node is still EOpNull!
0:306 's3' (temp highp 3-component vector of int)
0:306 Function Call: imageSize(uIAC1; (global highp 3-component vector of int)
0:306 'CA3' (writeonly uniform highp uimageCubeArray)
0:331 Function Definition: MSA( (global void)
0:331 Function Parameters:
0:333 Sequence
0:333 Sequence
0:333 move second child to first child (temp highp 4-component vector of float)
0:333 'tf' (temp highp 4-component vector of float)
0:333 Function Call: texelFetch(sA2M1;vi3;i1; (global highp 4-component vector of float)
0:333 'samp2DMSA' (uniform highp sampler2DMSArray)
0:333 Constant:
0:333 5 (const int)
0:333 5 (const int)
0:333 5 (const int)
0:333 Constant:
0:333 2 (const int)
0:334 Sequence
0:334 move second child to first child (temp highp 4-component vector of int)
0:334 'tfi' (temp highp 4-component vector of int)
0:334 Function Call: texelFetch(isA2M1;vi3;i1; (global highp 4-component vector of int)
0:334 'samp2DMSAi' (uniform highp isampler2DMSArray)
0:334 Constant:
0:334 5 (const int)
0:334 5 (const int)
0:334 5 (const int)
0:334 Constant:
0:334 2 (const int)
0:335 Sequence
0:335 move second child to first child (temp highp 4-component vector of uint)
0:335 'tfu' (temp highp 4-component vector of uint)
0:335 Function Call: texelFetch(usA2M1;vi3;i1; (global highp 4-component vector of uint)
0:335 'samp2DMSAu' (uniform highp usampler2DMSArray)
0:335 Constant:
0:335 5 (const int)
0:335 5 (const int)
0:335 5 (const int)
0:335 Constant:
0:335 2 (const int)
0:337 Sequence
0:337 move second child to first child (temp highp 3-component vector of int)
0:337 'tfs' (temp highp 3-component vector of int)
0:337 Function Call: textureSize(sA2M1; (global highp 3-component vector of int)
0:337 'samp2DMSA' (uniform highp sampler2DMSArray)
0:338 Sequence
0:338 move second child to first child (temp highp 3-component vector of int)
0:338 'tfsi' (temp highp 3-component vector of int)
0:338 Function Call: textureSize(isA2M1; (global highp 3-component vector of int)
0:338 'samp2DMSAi' (uniform highp isampler2DMSArray)
0:340 Sequence
0:340 move second child to first child (temp highp 3-component vector of int)
0:340 'tfsu' (temp highp 3-component vector of int)
0:340 Function Call: textureSize(usA2M1; (global highp 3-component vector of int)
0:340 'samp2DMSAu' (uniform highp usampler2DMSArray)
0:? Linker Objects
0:? 's' (shared highp 4-component vector of float)
0:? 'v' (buffer highp 4-component vector of float)
@ -801,6 +864,15 @@ ERROR: node is still EOpNull!
0:? 'CA5' (uniform highp samplerCubeArrayShadow)
0:? 'CA6' (uniform highp isamplerCubeArray)
0:? 'CA7' (uniform highp usamplerCubeArray)
0:? 'bad2DMS' (uniform mediump sampler2DMSArray)
0:? 'bad2DMSi' (uniform mediump isampler2DMSArray)
0:? 'bad2DMSu' (uniform mediump usampler2DMSArray)
0:? 'noPrec2DMS' (uniform mediump sampler2DMSArray)
0:? 'noPrec2DMSi' (uniform mediump isampler2DMSArray)
0:? 'noPrec2DMSu' (uniform mediump usampler2DMSArray)
0:? 'samp2DMSA' (uniform highp sampler2DMSArray)
0:? 'samp2DMSAi' (uniform highp isampler2DMSArray)
0:? 'samp2DMSAu' (uniform highp usampler2DMSArray)
0:? 'gl_VertexID' (gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId)
@ -814,6 +886,7 @@ Requested GL_OES_gpu_shader5
Requested GL_OES_shader_io_blocks
Requested GL_OES_texture_buffer
Requested GL_OES_texture_cube_map_array
Requested GL_OES_texture_storage_multisample_2d_array
ERROR: node is still EOpNull!
0:12 Function Definition: main( (global void)
0:12 Function Parameters:
@ -1439,6 +1512,57 @@ ERROR: node is still EOpNull!
0:306 's3' (temp highp 3-component vector of int)
0:306 Function Call: imageSize(uIAC1; (global highp 3-component vector of int)
0:306 'CA3' (writeonly uniform highp uimageCubeArray)
0:331 Function Definition: MSA( (global void)
0:331 Function Parameters:
0:333 Sequence
0:333 Sequence
0:333 move second child to first child (temp highp 4-component vector of float)
0:333 'tf' (temp highp 4-component vector of float)
0:333 Function Call: texelFetch(sA2M1;vi3;i1; (global highp 4-component vector of float)
0:333 'samp2DMSA' (uniform highp sampler2DMSArray)
0:333 Constant:
0:333 5 (const int)
0:333 5 (const int)
0:333 5 (const int)
0:333 Constant:
0:333 2 (const int)
0:334 Sequence
0:334 move second child to first child (temp highp 4-component vector of int)
0:334 'tfi' (temp highp 4-component vector of int)
0:334 Function Call: texelFetch(isA2M1;vi3;i1; (global highp 4-component vector of int)
0:334 'samp2DMSAi' (uniform highp isampler2DMSArray)
0:334 Constant:
0:334 5 (const int)
0:334 5 (const int)
0:334 5 (const int)
0:334 Constant:
0:334 2 (const int)
0:335 Sequence
0:335 move second child to first child (temp highp 4-component vector of uint)
0:335 'tfu' (temp highp 4-component vector of uint)
0:335 Function Call: texelFetch(usA2M1;vi3;i1; (global highp 4-component vector of uint)
0:335 'samp2DMSAu' (uniform highp usampler2DMSArray)
0:335 Constant:
0:335 5 (const int)
0:335 5 (const int)
0:335 5 (const int)
0:335 Constant:
0:335 2 (const int)
0:337 Sequence
0:337 move second child to first child (temp highp 3-component vector of int)
0:337 'tfs' (temp highp 3-component vector of int)
0:337 Function Call: textureSize(sA2M1; (global highp 3-component vector of int)
0:337 'samp2DMSA' (uniform highp sampler2DMSArray)
0:338 Sequence
0:338 move second child to first child (temp highp 3-component vector of int)
0:338 'tfsi' (temp highp 3-component vector of int)
0:338 Function Call: textureSize(isA2M1; (global highp 3-component vector of int)
0:338 'samp2DMSAi' (uniform highp isampler2DMSArray)
0:340 Sequence
0:340 move second child to first child (temp highp 3-component vector of int)
0:340 'tfsu' (temp highp 3-component vector of int)
0:340 Function Call: textureSize(usA2M1; (global highp 3-component vector of int)
0:340 'samp2DMSAu' (uniform highp usampler2DMSArray)
0:? Linker Objects
0:? 's' (shared highp 4-component vector of float)
0:? 'v' (buffer highp 4-component vector of float)
@ -1527,6 +1651,15 @@ ERROR: node is still EOpNull!
0:? 'CA5' (uniform highp samplerCubeArrayShadow)
0:? 'CA6' (uniform highp isamplerCubeArray)
0:? 'CA7' (uniform highp usamplerCubeArray)
0:? 'bad2DMS' (uniform mediump sampler2DMSArray)
0:? 'bad2DMSi' (uniform mediump isampler2DMSArray)
0:? 'bad2DMSu' (uniform mediump usampler2DMSArray)
0:? 'noPrec2DMS' (uniform mediump sampler2DMSArray)
0:? 'noPrec2DMSi' (uniform mediump isampler2DMSArray)
0:? 'noPrec2DMSu' (uniform mediump usampler2DMSArray)
0:? 'samp2DMSA' (uniform highp sampler2DMSArray)
0:? 'samp2DMSAi' (uniform highp isampler2DMSArray)
0:? 'samp2DMSAu' (uniform highp usampler2DMSArray)
0:? 'gl_VertexID' (gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' (gl_InstanceId highp int InstanceId)

View File

@ -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 "2.3.717"
#define GLSLANG_REVISION "2.3.718"
#define GLSLANG_DATE "16-Aug-2015"

View File

@ -1862,7 +1862,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile)
continue;
if (dim == EsdBuffer && (shadow || arrayed || ms))
continue;
if (ms && arrayed && profile == EEsProfile)
if (ms && arrayed && profile == EEsProfile && version < 310)
continue;
for (int bType = 0; bType < 3; ++bType) { // float, int, uint results

View File

@ -900,6 +900,8 @@ int TScanContext::tokenizeIdentifier()
case ISAMPLER2DMSARRAY:
case USAMPLER2DMSARRAY:
afterType = true;
if (parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array))
return keyword;
return es30ReservedFromGLSL(150);
case SAMPLER1D:

View File

@ -184,7 +184,7 @@ void TParseContext::initializeExtensionBehavior()
extensionBehavior[E_GL_OES_sample_variables] = EBhDisablePartial;
extensionBehavior[E_GL_OES_shader_image_atomic] = EBhDisablePartial;
extensionBehavior[E_GL_OES_shader_multisample_interpolation] = EBhDisablePartial;
extensionBehavior[E_GL_OES_texture_storage_multisample_2d_array] = EBhDisablePartial;
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;
extensionBehavior[E_GL_EXT_gpu_shader5] = EBhDisable;