Implement GL_OES_texture_cube_map_array.
This commit is contained in:
parent
302b46aebc
commit
dc9eff7221
7 changed files with 790 additions and 9 deletions
|
|
@ -1828,7 +1828,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile)
|
|||
|
||||
TBasicType bTypes[3] = { EbtFloat, EbtInt, EbtUint };
|
||||
bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140);
|
||||
bool skipCubeArrayed = (profile == EEsProfile || version < 130);
|
||||
bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130);
|
||||
|
||||
// enumerate all the types
|
||||
for (int image = 0; image <= 1; ++image) { // loop over "bool" image vs sampler
|
||||
|
|
|
|||
|
|
@ -781,11 +781,13 @@ int TScanContext::tokenizeIdentifier()
|
|||
case IMAGE2DRECT:
|
||||
case IIMAGE2DRECT:
|
||||
case UIMAGE2DRECT:
|
||||
afterType = true;
|
||||
return firstGenerationImage(false);
|
||||
|
||||
case IMAGEBUFFER:
|
||||
case IIMAGEBUFFER:
|
||||
case UIMAGEBUFFER:
|
||||
afterType = true;
|
||||
if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer))
|
||||
return keyword;
|
||||
return firstGenerationImage(false);
|
||||
|
|
@ -802,17 +804,24 @@ int TScanContext::tokenizeIdentifier()
|
|||
case IMAGE2DARRAY:
|
||||
case IIMAGE2DARRAY:
|
||||
case UIMAGE2DARRAY:
|
||||
afterType = true;
|
||||
return firstGenerationImage(true);
|
||||
|
||||
case IMAGECUBEARRAY:
|
||||
case IIMAGECUBEARRAY:
|
||||
case UIMAGECUBEARRAY:
|
||||
case UIMAGECUBEARRAY:
|
||||
afterType = true;
|
||||
if (parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
|
||||
return keyword;
|
||||
return secondGenerationImage();
|
||||
|
||||
case IMAGE2DMS:
|
||||
case IIMAGE2DMS:
|
||||
case UIMAGE2DMS:
|
||||
case IMAGE2DMSARRAY:
|
||||
case IIMAGE2DMSARRAY:
|
||||
case UIMAGE2DMSARRAY:
|
||||
afterType = true;
|
||||
return secondGenerationImage();
|
||||
|
||||
case DOUBLE:
|
||||
|
|
@ -829,6 +838,8 @@ int TScanContext::tokenizeIdentifier()
|
|||
case ISAMPLERCUBEARRAY:
|
||||
case USAMPLERCUBEARRAY:
|
||||
afterType = true;
|
||||
if (parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array))
|
||||
return keyword;
|
||||
if (parseContext.profile == EEsProfile || (parseContext.version < 400 && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_cube_map_array)))
|
||||
reservedWord();
|
||||
return keyword;
|
||||
|
|
@ -1127,8 +1138,6 @@ int TScanContext::dMat()
|
|||
|
||||
int TScanContext::firstGenerationImage(bool inEs310)
|
||||
{
|
||||
afterType = true;
|
||||
|
||||
if (parseContext.symbolTable.atBuiltInLevel() ||
|
||||
(parseContext.profile != EEsProfile && (parseContext.version >= 420 || parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store))) ||
|
||||
(inEs310 && parseContext.profile == EEsProfile && parseContext.version >= 310))
|
||||
|
|
@ -1149,8 +1158,6 @@ int TScanContext::firstGenerationImage(bool inEs310)
|
|||
|
||||
int TScanContext::secondGenerationImage()
|
||||
{
|
||||
afterType = true;
|
||||
|
||||
if (parseContext.profile == EEsProfile && parseContext.version >= 310) {
|
||||
reservedWord();
|
||||
return keyword;
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ void TParseContext::initializeExtensionBehavior()
|
|||
extensionBehavior[E_GL_EXT_tessellation_shader] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_tessellation_point_size] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_texture_buffer] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_texture_cube_map_array] = EBhDisablePartial;
|
||||
extensionBehavior[E_GL_EXT_texture_cube_map_array] = EBhDisable;
|
||||
|
||||
// OES matching AEP
|
||||
extensionBehavior[E_GL_OES_geometry_shader] = EBhDisable;
|
||||
|
|
@ -204,7 +204,7 @@ void TParseContext::initializeExtensionBehavior()
|
|||
extensionBehavior[E_GL_OES_tessellation_shader] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisablePartial;
|
||||
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable;
|
||||
}
|
||||
|
||||
// Get code that is not part of a shared symbol table, is specific to this shader,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue