[Mesa-dev] [PATCH 14/17] mesa: Add support for OES_texture_cube_map_array
Ian Romanick
idr at freedesktop.org
Thu Aug 25 00:53:44 UTC 2016
On 08/24/2016 03:59 PM, Ilia Mirkin wrote:
> On Wed, Aug 24, 2016 at 6:12 PM, Ian Romanick <idr at freedesktop.org> wrote:
>> From: Ian Romanick <ian.d.romanick at intel.com>
>>
>> This has a separate enable flag because this extension also requires
>> OES_geometry_shader. It is possible that some drivers may support
>> OpenGL ES 3.1 and ARB_texture_cube_map but not support
>> OES_geometry_shader.
>>
>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>> ---
>> src/compiler/glsl/builtin_functions.cpp | 29 +++++++++++++++++++----------
>> src/compiler/glsl/builtin_types.cpp | 27 ++++++++++++++++-----------
>> src/compiler/glsl/glsl_lexer.ll | 14 +++++++-------
>> src/compiler/glsl/glsl_parser_extras.cpp | 1 +
>> src/compiler/glsl/glsl_parser_extras.h | 5 ++++-
>> src/mesa/main/context.h | 3 ++-
>> src/mesa/main/extensions_table.h | 1 +
>> src/mesa/main/genmipmap.c | 2 +-
>> src/mesa/main/get.c | 4 ++--
>> src/mesa/main/get_hash_params.py | 6 +++---
>> src/mesa/main/mtypes.h | 1 +
>> src/mesa/main/texobj.c | 2 +-
>> src/mesa/main/texparam.c | 5 +++--
>> src/mesa/main/texstorage.c | 3 ++-
>> 14 files changed, 63 insertions(+), 40 deletions(-)
>>
>> diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp
>> index 161c98b..64bf8d8 100644
>> --- a/src/compiler/glsl/builtin_functions.cpp
>> +++ b/src/compiler/glsl/builtin_functions.cpp
>> @@ -245,6 +245,14 @@ gpu_shader5_es(const _mesa_glsl_parse_state *state)
>> }
>>
>> static bool
>> +gpu_shader5_or_OES_texture_cube_map_array(const _mesa_glsl_parse_state *state)
>> +{
>> + return state->is_version(400, 320) ||
>> + state->ARB_gpu_shader5_enable ||
>> + state->OES_texture_cube_map_array_enable;
>> +}
>> +
>> +static bool
>> es31_not_gs5(const _mesa_glsl_parse_state *state)
>> {
>> return state->is_version(0, 310) && !gpu_shader5_es(state);
>> @@ -358,11 +366,12 @@ texture_query_lod(const _mesa_glsl_parse_state *state)
>> }
>>
>> static bool
>> -texture_gather(const _mesa_glsl_parse_state *state)
>> +texture_gather_cube_map_array(const _mesa_glsl_parse_state *state)
>> {
>> - return state->is_version(400, 0) ||
>> + return state->is_version(400, 320) ||
>> state->ARB_texture_gather_enable ||
>> - state->ARB_gpu_shader5_enable;
>> + state->ARB_gpu_shader5_enable ||
>> + state->OES_texture_cube_map_array_enable;
>> }
>>
>> static bool
>> @@ -2554,9 +2563,9 @@ builtin_builder::create_builtins()
>> _texture(ir_tg4, texture_gather_or_es31, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type),
>> _texture(ir_tg4, texture_gather_or_es31, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type),
>>
>> - _texture(ir_tg4, texture_gather, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type),
>> - _texture(ir_tg4, texture_gather, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
>> - _texture(ir_tg4, texture_gather, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),
>> + _texture(ir_tg4, texture_gather_cube_map_array, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type),
>> + _texture(ir_tg4, texture_gather_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type),
>> + _texture(ir_tg4, texture_gather_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type),
>>
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::vec4_type, glsl_type::sampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::ivec4_type, glsl_type::isampler2D_type, glsl_type::vec2_type, TEX_COMPONENT),
>> @@ -2574,14 +2583,14 @@ builtin_builder::create_builtins()
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::ivec4_type, glsl_type::isamplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::uvec4_type, glsl_type::usamplerCube_type, glsl_type::vec3_type, TEX_COMPONENT),
>>
>> - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
>> - _texture(ir_tg4, gpu_shader5, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
>> - _texture(ir_tg4, gpu_shader5, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
>> + _texture(ir_tg4, gpu_shader5_or_OES_texture_cube_map_array, glsl_type::vec4_type, glsl_type::samplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
>> + _texture(ir_tg4, gpu_shader5_or_OES_texture_cube_map_array, glsl_type::ivec4_type, glsl_type::isamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
>> + _texture(ir_tg4, gpu_shader5_or_OES_texture_cube_map_array, glsl_type::uvec4_type, glsl_type::usamplerCubeArray_type, glsl_type::vec4_type, TEX_COMPONENT),
>>
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::vec4_type, glsl_type::sampler2DShadow_type, glsl_type::vec2_type),
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::vec4_type, glsl_type::sampler2DArrayShadow_type, glsl_type::vec3_type),
>> _texture(ir_tg4, gpu_shader5_or_es31, glsl_type::vec4_type, glsl_type::samplerCubeShadow_type, glsl_type::vec3_type),
>> - _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::samplerCubeArrayShadow_type, glsl_type::vec4_type),
>> + _texture(ir_tg4, gpu_shader5_or_OES_texture_cube_map_array, glsl_type::vec4_type, glsl_type::samplerCubeArrayShadow_type, glsl_type::vec4_type),
>> _texture(ir_tg4, gpu_shader5, glsl_type::vec4_type, glsl_type::sampler2DRectShadow_type, glsl_type::vec2_type),
>> NULL);
>>
>> diff --git a/src/compiler/glsl/builtin_types.cpp b/src/compiler/glsl/builtin_types.cpp
>> index 5f208f8..d40f785 100644
>> --- a/src/compiler/glsl/builtin_types.cpp
>> +++ b/src/compiler/glsl/builtin_types.cpp
>> @@ -177,7 +177,7 @@ static const struct builtin_type_versions {
>> T(samplerCube, 110, 100)
>> T(sampler1DArray, 130, 999)
>> T(sampler2DArray, 130, 300)
>> - T(samplerCubeArray, 400, 999)
>> + T(samplerCubeArray, 400, 320)
>> T(sampler2DRect, 140, 999)
>> T(samplerBuffer, 140, 320)
>> T(sampler2DMS, 150, 310)
>> @@ -189,7 +189,7 @@ static const struct builtin_type_versions {
>> T(isamplerCube, 130, 300)
>> T(isampler1DArray, 130, 999)
>> T(isampler2DArray, 130, 300)
>> - T(isamplerCubeArray, 400, 999)
>> + T(isamplerCubeArray, 400, 320)
>> T(isampler2DRect, 140, 999)
>> T(isamplerBuffer, 140, 320)
>> T(isampler2DMS, 150, 310)
>> @@ -201,7 +201,7 @@ static const struct builtin_type_versions {
>> T(usamplerCube, 130, 300)
>> T(usampler1DArray, 130, 999)
>> T(usampler2DArray, 130, 300)
>> - T(usamplerCubeArray, 400, 999)
>> + T(usamplerCubeArray, 400, 320)
>> T(usampler2DRect, 140, 999)
>> T(usamplerBuffer, 140, 320)
>> T(usampler2DMS, 150, 310)
>> @@ -212,7 +212,7 @@ static const struct builtin_type_versions {
>> T(samplerCubeShadow, 130, 300)
>> T(sampler1DArrayShadow, 130, 999)
>> T(sampler2DArrayShadow, 130, 300)
>> - T(samplerCubeArrayShadow, 400, 999)
>> + T(samplerCubeArrayShadow, 400, 320)
>> T(sampler2DRectShadow, 140, 999)
>>
>> T(struct_gl_DepthRangeParameters, 110, 100)
>> @@ -225,7 +225,7 @@ static const struct builtin_type_versions {
>> T(imageBuffer, 420, 320)
>> T(image1DArray, 420, 999)
>> T(image2DArray, 420, 310)
>> - T(imageCubeArray, 420, 999)
>> + T(imageCubeArray, 420, 320)
>> T(image2DMS, 420, 999)
>> T(image2DMSArray, 420, 999)
>> T(iimage1D, 420, 999)
>> @@ -236,7 +236,7 @@ static const struct builtin_type_versions {
>> T(iimageBuffer, 420, 320)
>> T(iimage1DArray, 420, 999)
>> T(iimage2DArray, 420, 310)
>> - T(iimageCubeArray, 420, 999)
>> + T(iimageCubeArray, 420, 320)
>> T(iimage2DMS, 420, 999)
>> T(iimage2DMSArray, 420, 999)
>> T(uimage1D, 420, 999)
>> @@ -247,7 +247,7 @@ static const struct builtin_type_versions {
>> T(uimageBuffer, 420, 320)
>> T(uimage1DArray, 420, 999)
>> T(uimage2DArray, 420, 310)
>> - T(uimageCubeArray, 420, 999)
>> + T(uimageCubeArray, 420, 320)
>> T(uimage2DMS, 420, 999)
>> T(uimage2DMSArray, 420, 999)
>>
>> @@ -298,7 +298,8 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
>> * by the version-based loop, but attempting to add them a second time
>> * is harmless.
>> */
>> - if (state->ARB_texture_cube_map_array_enable) {
>> + if (state->ARB_texture_cube_map_array_enable ||
>> + state->OES_texture_cube_map_array_enable) {
>> add_type(symbols, glsl_type::samplerCubeArray_type);
>> add_type(symbols, glsl_type::samplerCubeArrayShadow_type);
>> add_type(symbols, glsl_type::isamplerCubeArray_type);
>> @@ -337,6 +338,13 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
>> add_type(symbols, glsl_type::sampler3D_type);
>> }
>>
>> + if (state->ARB_shader_image_load_store_enable ||
>> + state->OES_texture_cube_map_array_enable) {
>> + add_type(symbols, glsl_type::imageCubeArray_type);
>> + add_type(symbols, glsl_type::iimageCubeArray_type);
>> + add_type(symbols, glsl_type::uimageCubeArray_type);
>> + }
>> +
>> if (state->ARB_shader_image_load_store_enable) {
>> add_type(symbols, glsl_type::image1D_type);
>> add_type(symbols, glsl_type::image2D_type);
>> @@ -346,7 +354,6 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
>> add_type(symbols, glsl_type::imageBuffer_type);
>> add_type(symbols, glsl_type::image1DArray_type);
>> add_type(symbols, glsl_type::image2DArray_type);
>> - add_type(symbols, glsl_type::imageCubeArray_type);
>> add_type(symbols, glsl_type::image2DMS_type);
>> add_type(symbols, glsl_type::image2DMSArray_type);
>> add_type(symbols, glsl_type::iimage1D_type);
>> @@ -357,7 +364,6 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
>> add_type(symbols, glsl_type::iimageBuffer_type);
>> add_type(symbols, glsl_type::iimage1DArray_type);
>> add_type(symbols, glsl_type::iimage2DArray_type);
>> - add_type(symbols, glsl_type::iimageCubeArray_type);
>> add_type(symbols, glsl_type::iimage2DMS_type);
>> add_type(symbols, glsl_type::iimage2DMSArray_type);
>> add_type(symbols, glsl_type::uimage1D_type);
>> @@ -368,7 +374,6 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
>> add_type(symbols, glsl_type::uimageBuffer_type);
>> add_type(symbols, glsl_type::uimage1DArray_type);
>> add_type(symbols, glsl_type::uimage2DArray_type);
>> - add_type(symbols, glsl_type::uimageCubeArray_type);
>> add_type(symbols, glsl_type::uimage2DMS_type);
>> add_type(symbols, glsl_type::uimage2DMSArray_type);
>> }
>> diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll
>> index ad95f02..2ed11ef 100644
>> --- a/src/compiler/glsl/glsl_lexer.ll
>> +++ b/src/compiler/glsl/glsl_lexer.ll
>> @@ -348,10 +348,10 @@ isampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_mul
>> usampler2DMSArray KEYWORD_WITH_ALT(150, 300, 150, 320, yyextra->ARB_texture_multisample_enable || yyextra->OES_texture_storage_multisample_2d_array_enable, USAMPLER2DMSARRAY);
>>
>> /* keywords available with ARB_texture_cube_map_array_enable extension on desktop GLSL */
>> -samplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 0, yyextra->ARB_texture_cube_map_array_enable, SAMPLERCUBEARRAY);
>> -isamplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 0, yyextra->ARB_texture_cube_map_array_enable, ISAMPLERCUBEARRAY);
>> -usamplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 0, yyextra->ARB_texture_cube_map_array_enable, USAMPLERCUBEARRAY);
>> -samplerCubeArrayShadow KEYWORD_WITH_ALT(400, 310, 400, 0, yyextra->ARB_texture_cube_map_array_enable, SAMPLERCUBEARRAYSHADOW);
>> +samplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable, SAMPLERCUBEARRAY);
>> +isamplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable, ISAMPLERCUBEARRAY);
>> +usamplerCubeArray KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable, USAMPLERCUBEARRAY);
>> +samplerCubeArrayShadow KEYWORD_WITH_ALT(400, 310, 400, 320, yyextra->ARB_texture_cube_map_array_enable || yyextra->OES_texture_cube_map_array_enable, SAMPLERCUBEARRAYSHADOW);
>
> Your call, but these (and the ones below) would look a lot neater as
>
> yyextra->has_texture_cube_map_array()
>
> But it's also suboptimal since it'll end up doing a needless version
> check. Like I said, up to you.
I mostly did it this way because all the other instances of
KEYWORD_WITH_ALT use this pattern. I didn't want to have one small
group that was different... because people would wonder why it was
different. I'm kind of on the fence about changing them all.
>>
>> samplerExternalOES {
>> if (yyextra->OES_EGL_image_external_enable)
>> @@ -372,7 +372,7 @@ imageCube KEYWORD_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_l
>> imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, IMAGEBUFFER);
>> image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY);
>> image2DArray KEYWORD_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY);
>> -imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY);
>> +imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable, IMAGECUBEARRAY);
>> image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS);
>> image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY);
>> iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D);
>> @@ -383,7 +383,7 @@ iimageCube KEYWORD_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_l
>> iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, IIMAGEBUFFER);
>> iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY);
>> iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY);
>> -iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY);
>> +iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable, IIMAGECUBEARRAY);
>> iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS);
>> iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY);
>> uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D);
>> @@ -394,7 +394,7 @@ uimageCube KEYWORD_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_l
>> uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, UIMAGEBUFFER);
>> uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY);
>> uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 310, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY);
>> -uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY);
>> +uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 320, yyextra->ARB_shader_image_load_store_enable || yyextra->OES_texture_cube_map_array_enable, UIMAGECUBEARRAY);
>> uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS);
>> uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY);
>> image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
>> diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp
>> index d2c4f66..3b0e290 100644
>> --- a/src/compiler/glsl/glsl_parser_extras.cpp
>> +++ b/src/compiler/glsl/glsl_parser_extras.cpp
>> @@ -638,6 +638,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
>> EXT(OES_tessellation_shader),
>> EXT(OES_texture_3D),
>> EXT(OES_texture_buffer),
>> + EXT(OES_texture_cube_map_array),
>> EXT(OES_texture_storage_multisample_2d_array),
>>
>> /* All other extensions go here, sorted alphabetically.
>> diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h
>> index 821477e..60b76c7 100644
>> --- a/src/compiler/glsl/glsl_parser_extras.h
>> +++ b/src/compiler/glsl/glsl_parser_extras.h
>> @@ -320,7 +320,8 @@ struct _mesa_glsl_parse_state {
>> bool has_texture_cube_map_array() const
>> {
>> return ARB_texture_cube_map_array_enable ||
>> - is_version(400, 0);
>> + OES_texture_cube_map_array_enable ||
>> + is_version(400, 320);
>> }
>>
>> void process_version_directive(YYLTYPE *locp, int version,
>> @@ -686,6 +687,8 @@ struct _mesa_glsl_parse_state {
>> bool OES_texture_3D_warn;
>> bool OES_texture_buffer_enable;
>> bool OES_texture_buffer_warn;
>> + bool OES_texture_cube_map_array_enable;
>> + bool OES_texture_cube_map_array_warn;
>> bool OES_texture_storage_multisample_2d_array_enable;
>> bool OES_texture_storage_multisample_2d_array_warn;
>>
>> diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
>> index 9100ae7..4cd149d 100644
>> --- a/src/mesa/main/context.h
>> +++ b/src/mesa/main/context.h
>> @@ -354,7 +354,8 @@ _mesa_has_tessellation(const struct gl_context *ctx)
>> static inline bool
>> _mesa_has_texture_cube_map_array(const struct gl_context *ctx)
>> {
>> - return _mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_cube_map_array;
>> + return _mesa_has_ARB_texture_cube_map_array(ctx) ||
>> + _mesa_has_OES_texture_cube_map_array(ctx);
>
> Ah, I see you address my earlier comment here. No need to futz with
> which patch does it then, this is plenty good enough (as far as I'm
> concerned).
>
>> }
>>
>> #ifdef __cplusplus
>> diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
>> index 335b41f..02112f1 100644
>> --- a/src/mesa/main/extensions_table.h
>> +++ b/src/mesa/main/extensions_table.h
>> @@ -371,6 +371,7 @@ EXT(OES_texture_border_clamp , ARB_texture_border_clamp
>> EXT(OES_texture_buffer , OES_texture_buffer , x , x , x , 31, 2014)
>> EXT(OES_texture_compression_astc , OES_texture_compression_astc , x , x , ES1, ES2, 2015)
>> EXT(OES_texture_cube_map , ARB_texture_cube_map , x , x , ES1, x , 2007)
>> +EXT(OES_texture_cube_map_array , OES_texture_cube_map_array , x , x , x , 31, 2014)
>> EXT(OES_texture_env_crossbar , ARB_texture_env_crossbar , x , x , ES1, x , 2005)
>> EXT(OES_texture_float , OES_texture_float , x , x , x , ES2, 2005)
>> EXT(OES_texture_float_linear , OES_texture_float_linear , x , x , x , ES2, 2005)
>> diff --git a/src/mesa/main/genmipmap.c b/src/mesa/main/genmipmap.c
>> index 5038d5c..6021c02 100644
>> --- a/src/mesa/main/genmipmap.c
>> +++ b/src/mesa/main/genmipmap.c
>> @@ -65,7 +65,7 @@ _mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx,
>> || !ctx->Extensions.EXT_texture_array;
>> break;
>> case GL_TEXTURE_CUBE_MAP_ARRAY:
>> - error = !_mesa_has_ARB_texture_cube_map_array(ctx);
>> + error = !_mesa_has_texture_cube_map_array(ctx);
>> break;
>> default:
>> error = true;
>> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
>> index 9f32acf..c1281f7 100644
>> --- a/src/mesa/main/get.c
>> +++ b/src/mesa/main/get.c
>> @@ -442,7 +442,7 @@ EXTRA_EXT(OES_EGL_image_external);
>> EXTRA_EXT(ARB_blend_func_extended);
>> EXTRA_EXT(ARB_uniform_buffer_object);
>> EXTRA_EXT(ARB_timer_query);
>> -EXTRA_EXT(ARB_texture_cube_map_array);
>> +EXTRA_EXT2(ARB_texture_cube_map_array, OES_texture_cube_map_array);
>> EXTRA_EXT(ARB_texture_buffer_range);
>> EXTRA_EXT(ARB_texture_multisample);
>> EXTRA_EXT(ARB_texture_gather);
>> @@ -1856,7 +1856,7 @@ tex_binding_to_index(const struct gl_context *ctx, GLenum binding)
>> _mesa_has_OES_texture_buffer(ctx)) ?
>> TEXTURE_BUFFER_INDEX : -1;
>> case GL_TEXTURE_BINDING_CUBE_MAP_ARRAY:
>> - return _mesa_has_ARB_texture_cube_map_array(ctx)
>> + return _mesa_has_texture_cube_map_array(ctx)
>> ? TEXTURE_CUBE_ARRAY_INDEX : -1;
>> case GL_TEXTURE_BINDING_2D_MULTISAMPLE:
>> return _mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_multisample
>> diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
>> index d43ac69..5592fdf 100644
>> --- a/src/mesa/main/get_hash_params.py
>> +++ b/src/mesa/main/get_hash_params.py
>> @@ -513,6 +513,9 @@ descriptor=[
>> # GL_ARB_shader_image_load_store / GL_ARB_shader_storage_buffer_object / GLES 3.1
>> # (MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS in GL_ARB_shader_image_load_store)
>> [ "MAX_COMBINED_SHADER_OUTPUT_RESOURCES", "CONTEXT_INT(Const.MaxCombinedShaderOutputResources), extra_ARB_shader_image_load_store_shader_storage_buffer_object_es31" ],
>> +
>> + # GL_ARB_texture_cube_map_array
>> + [ "TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_CUBE_ARRAY_INDEX, extra_ARB_texture_cube_map_array_OES_texture_cube_map_array" ],
>> ]},
>>
>> # Enums in OpenGL Core profile and ES 3.0
>> @@ -896,9 +899,6 @@ descriptor=[
>> # GL_ARB_map_buffer_alignment
>> [ "MIN_MAP_BUFFER_ALIGNMENT", "CONTEXT_INT(Const.MinMapBufferAlignment), NO_EXTRA" ],
>>
>> -# GL_ARB_texture_cube_map_array
>> - [ "TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_CUBE_ARRAY_INDEX, extra_ARB_texture_cube_map_array" ],
>> -
>> # GL_ARB_texture_gather
>> [ "MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB", "CONTEXT_INT(Const.MaxProgramTextureGatherComponents), extra_ARB_texture_gather"],
>>
>> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
>> index 5fe560a..bcc5515 100644
>> --- a/src/mesa/main/mtypes.h
>> +++ b/src/mesa/main/mtypes.h
>> @@ -3925,6 +3925,7 @@ struct gl_extensions
>> GLboolean OES_shader_io_blocks;
>> GLboolean OES_standard_derivatives;
>> GLboolean OES_texture_buffer;
>> + GLboolean OES_texture_cube_map_array;
>> /* vendor extensions */
>> GLboolean AMD_performance_monitor;
>> GLboolean AMD_pinned_memory;
>> diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
>> index 655627b..9a051bc 100644
>> --- a/src/mesa/main/texobj.c
>> +++ b/src/mesa/main/texobj.c
>> @@ -1579,7 +1579,7 @@ _mesa_tex_target_to_index(const struct gl_context *ctx, GLenum target)
>> return _mesa_is_gles(ctx) && ctx->Extensions.OES_EGL_image_external
>> ? TEXTURE_EXTERNAL_INDEX : -1;
>> case GL_TEXTURE_CUBE_MAP_ARRAY:
>> - return _mesa_has_ARB_texture_cube_map_array(ctx)
>> + return _mesa_has_texture_cube_map_array(ctx)
>> ? TEXTURE_CUBE_ARRAY_INDEX : -1;
>> case GL_TEXTURE_2D_MULTISAMPLE:
>> return ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_multisample) ||
>> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
>> index ba83f8f..bdd3fcb 100644
>> --- a/src/mesa/main/texparam.c
>> +++ b/src/mesa/main/texparam.c
>> @@ -1243,6 +1243,8 @@ _mesa_legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target
>> */
>> return (ctx->API == API_OPENGL_CORE && ctx->Version >= 31) ||
>> _mesa_has_OES_texture_buffer(ctx);
>> + case GL_TEXTURE_CUBE_MAP_ARRAY:
>> + return _mesa_has_texture_cube_map_array(ctx);
>> }
>>
>> if (!_mesa_is_desktop_gl(ctx))
>> @@ -1257,8 +1259,7 @@ _mesa_legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target
>> return GL_TRUE;
>> case GL_PROXY_TEXTURE_CUBE_MAP:
>> return ctx->Extensions.ARB_texture_cube_map;
>> - case GL_TEXTURE_CUBE_MAP_ARRAY_ARB:
>> - case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB:
>> + case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:
>> return ctx->Extensions.ARB_texture_cube_map_array;
>> case GL_TEXTURE_RECTANGLE_NV:
>> case GL_PROXY_TEXTURE_RECTANGLE_NV:
>> diff --git a/src/mesa/main/texstorage.c b/src/mesa/main/texstorage.c
>> index c43f2d4..817a746 100644
>> --- a/src/mesa/main/texstorage.c
>> +++ b/src/mesa/main/texstorage.c
>> @@ -71,6 +71,8 @@ legal_texobj_target(const struct gl_context *ctx, GLuint dims, GLenum target)
>> return true;
>> case GL_TEXTURE_2D_ARRAY:
>> return ctx->Extensions.EXT_texture_array;
>> + case GL_TEXTURE_CUBE_MAP_ARRAY:
>> + return _mesa_has_texture_cube_map_array(ctx);
>> }
>> break;
>> }
>> @@ -108,7 +110,6 @@ legal_texobj_target(const struct gl_context *ctx, GLuint dims, GLenum target)
>> return true;
>> case GL_PROXY_TEXTURE_2D_ARRAY:
>> return ctx->Extensions.EXT_texture_array;
>> - case GL_TEXTURE_CUBE_MAP_ARRAY:
>> case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:
>> return ctx->Extensions.ARB_texture_cube_map_array;
>> default:
>> --
>> 2.5.5
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list