mesa: OpenGL 1.3 feature GL_ARB_texture_cube_map is not optional
Cheatsheet: _mesa_has_ARB_texture_cube_map() becomes (true && ctx->Extensions.Version >= _mesa_extension_table[...].version[ctx->API]). The last value is 0 when ctx->API is API_OPENGL_COMPAT and ~0 otherwise. The whole function effectively becomes (ctx->API == API_OPENGL_COMPAT). _mesa_has_OES_texture_cube_map() becomes (true && ctx->Extensions.Version >= _mesa_extension_table[...].version[ctx->API]). The last value is 0 when ctx->API is API_OPENGLES and ~0 otherwise. The whole function effectively becomes (ctx->API == API_OPENGLES). Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14203>
This commit is contained in:
parent
c11641ab24
commit
7649ab1f03
|
@ -510,10 +510,8 @@ pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib_node *ena
|
|||
TEST_AND_UPDATE_BIT(old_enabled, enabled, TEXTURE_RECT_INDEX,
|
||||
GL_TEXTURE_RECTANGLE);
|
||||
}
|
||||
if (ctx->Extensions.ARB_texture_cube_map) {
|
||||
TEST_AND_UPDATE_BIT(old_enabled, enabled, TEXTURE_CUBE_INDEX,
|
||||
GL_TEXTURE_CUBE_MAP);
|
||||
}
|
||||
TEST_AND_UPDATE_BIT(old_enabled, enabled, TEXTURE_CUBE_INDEX,
|
||||
GL_TEXTURE_CUBE_MAP);
|
||||
}
|
||||
|
||||
if (old_gen_enabled != gen_enabled) {
|
||||
|
|
|
@ -991,8 +991,7 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
|||
|
||||
/* GL_ARB_texture_cube_map */
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
if (!_mesa_has_ARB_texture_cube_map(ctx) &&
|
||||
!_mesa_has_OES_texture_cube_map(ctx))
|
||||
if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
|
||||
goto invalid_enum_error;
|
||||
if (!enable_texture(ctx, state, TEXTURE_CUBE_BIT)) {
|
||||
return;
|
||||
|
@ -1831,8 +1830,7 @@ _mesa_IsEnabled( GLenum cap )
|
|||
|
||||
/* GL_ARB_texture_cube_map */
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
if (!_mesa_has_ARB_texture_cube_map(ctx) &&
|
||||
!_mesa_has_OES_texture_cube_map(ctx))
|
||||
if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
|
||||
goto invalid_enum_error;
|
||||
return is_texture_enabled(ctx, TEXTURE_CUBE_BIT);
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ EXT(ARB_texture_buffer_range , ARB_texture_buffer_range
|
|||
EXT(ARB_texture_compression , dummy_true , GLL, x , x , x , 2000)
|
||||
EXT(ARB_texture_compression_bptc , ARB_texture_compression_bptc , GLL, GLC, x , x , 2010)
|
||||
EXT(ARB_texture_compression_rgtc , ARB_texture_compression_rgtc , GLL, GLC, x , x , 2004)
|
||||
EXT(ARB_texture_cube_map , ARB_texture_cube_map , GLL, x , x , x , 1999)
|
||||
EXT(ARB_texture_cube_map , dummy_true , GLL, x , x , x , 1999)
|
||||
EXT(ARB_texture_cube_map_array , ARB_texture_cube_map_array , GLL, GLC, x , x , 2009)
|
||||
EXT(ARB_texture_env_add , dummy_true , GLL, x , x , x , 1999)
|
||||
EXT(ARB_texture_env_combine , ARB_texture_env_combine , GLL, x , x , x , 2001)
|
||||
|
@ -307,7 +307,7 @@ EXT(EXT_texture_compression_latc , EXT_texture_compression_latc
|
|||
EXT(EXT_texture_compression_rgtc , ARB_texture_compression_rgtc , GLL, GLC, x , 30, 2004)
|
||||
EXT(EXT_texture_compression_s3tc , EXT_texture_compression_s3tc , GLL, GLC, x , ES2, 2000)
|
||||
EXT(EXT_texture_compression_s3tc_srgb , EXT_texture_compression_s3tc_srgb , x , x, x , ES2, 2016)
|
||||
EXT(EXT_texture_cube_map , ARB_texture_cube_map , GLL, x , x , x , 2001)
|
||||
EXT(EXT_texture_cube_map , dummy_true , GLL, x , x , x , 2001)
|
||||
EXT(EXT_texture_cube_map_array , OES_texture_cube_map_array , x , x , x , 31, 2014)
|
||||
EXT(EXT_texture_edge_clamp , dummy_true , GLL, x , x , x , 1997)
|
||||
EXT(EXT_texture_env_add , dummy_true , GLL, x , x , x , 1999)
|
||||
|
@ -467,7 +467,7 @@ EXT(OES_texture_3D , dummy_true
|
|||
EXT(OES_texture_border_clamp , dummy_true , x , x , x , ES2, 2014)
|
||||
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 , dummy_true , 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)
|
||||
|
|
|
@ -3625,7 +3625,7 @@ check_textarget(struct gl_context *ctx, int dims, GLenum target,
|
|||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
err = dims != 2 || !ctx->Extensions.ARB_texture_cube_map;
|
||||
err = dims != 2;
|
||||
break;
|
||||
case GL_TEXTURE_3D:
|
||||
err = dims != 3;
|
||||
|
|
|
@ -424,7 +424,7 @@ _is_target_supported(struct gl_context *ctx, GLenum target)
|
|||
break;
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
if (ctx->API != API_OPENGL_CORE && !_mesa_has_ARB_texture_cube_map(ctx))
|
||||
if (!_mesa_is_desktop_gl(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ _mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx,
|
|||
error = ctx->API == API_OPENGLES;
|
||||
break;
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
error = !ctx->Extensions.ARB_texture_cube_map;
|
||||
error = false;
|
||||
break;
|
||||
case GL_TEXTURE_1D_ARRAY:
|
||||
error = _mesa_is_gles(ctx) || !ctx->Extensions.EXT_texture_array;
|
||||
|
|
|
@ -524,7 +524,6 @@ static const int extra_ARB_framebuffer_object_or_EXT_framebuffer_multisample_or_
|
|||
EXTRA_END
|
||||
};
|
||||
|
||||
EXTRA_EXT(ARB_texture_cube_map);
|
||||
EXTRA_EXT(EXT_texture_array);
|
||||
EXTRA_EXT(NV_fog_distance);
|
||||
EXTRA_EXT(EXT_texture_filter_anisotropic);
|
||||
|
@ -2445,8 +2444,7 @@ tex_binding_to_index(const struct gl_context *ctx, GLenum binding)
|
|||
case GL_TEXTURE_BINDING_3D:
|
||||
return ctx->API != API_OPENGLES ? TEXTURE_3D_INDEX : -1;
|
||||
case GL_TEXTURE_BINDING_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map
|
||||
? TEXTURE_CUBE_INDEX : -1;
|
||||
return TEXTURE_CUBE_INDEX;
|
||||
case GL_TEXTURE_BINDING_RECTANGLE:
|
||||
return _mesa_is_desktop_gl(ctx) && ctx->Extensions.NV_texture_rectangle
|
||||
? TEXTURE_RECT_INDEX : -1;
|
||||
|
|
|
@ -56,9 +56,9 @@ descriptor=[
|
|||
# extensions below should mark the dependency.
|
||||
|
||||
# GL_ARB_texture_cube_map
|
||||
[ "TEXTURE_BINDING_CUBE_MAP_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_CUBE_INDEX, extra_ARB_texture_cube_map" ],
|
||||
[ "TEXTURE_BINDING_CUBE_MAP_ARB", "LOC_CUSTOM, TYPE_INT, TEXTURE_CUBE_INDEX, NO_EXTRA" ],
|
||||
# XXX: OES_texture_cube_map
|
||||
[ "MAX_CUBE_MAP_TEXTURE_SIZE_ARB", "LOC_CUSTOM, TYPE_INT, offsetof(struct gl_context, Const.MaxCubeTextureLevels), extra_ARB_texture_cube_map" ],
|
||||
[ "MAX_CUBE_MAP_TEXTURE_SIZE_ARB", "LOC_CUSTOM, TYPE_INT, offsetof(struct gl_context, Const.MaxCubeTextureLevels), NO_EXTRA" ],
|
||||
|
||||
# XXX: OES_blend_subtract
|
||||
[ "BLEND_SRC_RGB", "CONTEXT_ENUM16(Color.Blend[0].SrcRGB), NO_EXTRA" ],
|
||||
|
|
|
@ -4449,7 +4449,6 @@ struct gl_extensions
|
|||
GLboolean ARB_texture_buffer_range;
|
||||
GLboolean ARB_texture_compression_bptc;
|
||||
GLboolean ARB_texture_compression_rgtc;
|
||||
GLboolean ARB_texture_cube_map;
|
||||
GLboolean ARB_texture_cube_map_array;
|
||||
GLboolean ARB_texture_env_combine;
|
||||
GLboolean ARB_texture_env_crossbar;
|
||||
|
|
|
@ -876,7 +876,7 @@ legal_getteximage_target(struct gl_context *ctx, GLenum target, bool dsa)
|
|||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
return dsa ? GL_FALSE : ctx->Extensions.ARB_texture_cube_map;
|
||||
return dsa ? GL_FALSE : GL_TRUE;
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
return dsa ? GL_TRUE : GL_FALSE;
|
||||
default:
|
||||
|
|
|
@ -502,8 +502,7 @@ _mesa_max_texture_levels(const struct gl_context *ctx, GLenum target)
|
|||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map
|
||||
? ctx->Const.MaxCubeTextureLevels : 0;
|
||||
return ctx->Const.MaxCubeTextureLevels;
|
||||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
case GL_PROXY_TEXTURE_RECTANGLE_NV:
|
||||
return ctx->Extensions.NV_texture_rectangle ? 1 : 0;
|
||||
|
@ -1400,7 +1399,7 @@ _mesa_target_can_be_compressed(const struct gl_context *ctx, GLenum target,
|
|||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
target_can_be_compresed = ctx->Extensions.ARB_texture_cube_map;
|
||||
target_can_be_compresed = GL_TRUE;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
case GL_TEXTURE_2D_ARRAY_EXT:
|
||||
|
@ -1522,15 +1521,14 @@ legal_teximage_target(struct gl_context *ctx, GLuint dims, GLenum target)
|
|||
case GL_PROXY_TEXTURE_2D:
|
||||
return _mesa_is_desktop_gl(ctx);
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP:
|
||||
return _mesa_is_desktop_gl(ctx)
|
||||
&& ctx->Extensions.ARB_texture_cube_map;
|
||||
return _mesa_is_desktop_gl(ctx);
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
return ctx->Extensions.ARB_texture_cube_map;
|
||||
return GL_TRUE;
|
||||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
case GL_PROXY_TEXTURE_RECTANGLE_NV:
|
||||
return _mesa_is_desktop_gl(ctx)
|
||||
|
@ -1588,7 +1586,7 @@ legal_texsubimage_target(struct gl_context *ctx, GLuint dims, GLenum target,
|
|||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
return ctx->Extensions.ARB_texture_cube_map;
|
||||
return GL_TRUE;
|
||||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
return _mesa_is_desktop_gl(ctx)
|
||||
&& ctx->Extensions.NV_texture_rectangle;
|
||||
|
@ -5267,7 +5265,7 @@ compressed_subtexture_target_check(struct gl_context *ctx, GLenum target,
|
|||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
targetOK = ctx->Extensions.ARB_texture_cube_map;
|
||||
targetOK = GL_TRUE;
|
||||
break;
|
||||
default:
|
||||
targetOK = GL_FALSE;
|
||||
|
@ -5277,7 +5275,7 @@ compressed_subtexture_target_check(struct gl_context *ctx, GLenum target,
|
|||
case 3:
|
||||
switch (target) {
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
targetOK = dsa && ctx->Extensions.ARB_texture_cube_map;
|
||||
targetOK = dsa;
|
||||
break;
|
||||
case GL_TEXTURE_2D_ARRAY:
|
||||
targetOK = _mesa_is_gles3(ctx) ||
|
||||
|
|
|
@ -173,11 +173,9 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target)
|
|||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map
|
||||
? texUnit->CurrentTex[TEXTURE_CUBE_INDEX] : NULL;
|
||||
return texUnit->CurrentTex[TEXTURE_CUBE_INDEX];
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map
|
||||
? ctx->Texture.ProxyTex[TEXTURE_CUBE_INDEX] : NULL;
|
||||
return ctx->Texture.ProxyTex[TEXTURE_CUBE_INDEX];
|
||||
case GL_TEXTURE_CUBE_MAP_ARRAY:
|
||||
return _mesa_has_texture_cube_map_array(ctx)
|
||||
? texUnit->CurrentTex[TEXTURE_CUBE_ARRAY_INDEX] : NULL;
|
||||
|
@ -1563,8 +1561,7 @@ _mesa_tex_target_to_index(const struct gl_context *ctx, GLenum target)
|
|||
case GL_TEXTURE_3D:
|
||||
return ctx->API != API_OPENGLES ? TEXTURE_3D_INDEX : -1;
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map
|
||||
? TEXTURE_CUBE_INDEX : -1;
|
||||
return TEXTURE_CUBE_INDEX;
|
||||
case GL_TEXTURE_RECTANGLE:
|
||||
return _mesa_is_desktop_gl(ctx) && ctx->Extensions.NV_texture_rectangle
|
||||
? TEXTURE_RECT_INDEX : -1;
|
||||
|
|
|
@ -1557,7 +1557,7 @@ _mesa_legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target
|
|||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
|
||||
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
|
||||
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
|
||||
return ctx->Extensions.ARB_texture_cube_map;
|
||||
return GL_TRUE;
|
||||
case GL_TEXTURE_2D_MULTISAMPLE:
|
||||
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
|
||||
return ctx->Extensions.ARB_texture_multisample;
|
||||
|
@ -1598,9 +1598,8 @@ _mesa_legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target
|
|||
case GL_PROXY_TEXTURE_1D:
|
||||
case GL_PROXY_TEXTURE_2D:
|
||||
case GL_PROXY_TEXTURE_3D:
|
||||
return GL_TRUE;
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map;
|
||||
return GL_TRUE;
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:
|
||||
return ctx->Extensions.ARB_texture_cube_map_array;
|
||||
case GL_TEXTURE_RECTANGLE_NV:
|
||||
|
|
|
@ -63,9 +63,8 @@ _mesa_is_legal_tex_storage_target(const struct gl_context *ctx,
|
|||
case 2:
|
||||
switch (target) {
|
||||
case GL_TEXTURE_2D:
|
||||
return true;
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
|
@ -95,9 +94,8 @@ _mesa_is_legal_tex_storage_target(const struct gl_context *ctx,
|
|||
case 2:
|
||||
switch (target) {
|
||||
case GL_PROXY_TEXTURE_2D:
|
||||
return true;
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP:
|
||||
return ctx->Extensions.ARB_texture_cube_map;
|
||||
return true;
|
||||
case GL_TEXTURE_RECTANGLE:
|
||||
case GL_PROXY_TEXTURE_RECTANGLE:
|
||||
return ctx->Extensions.NV_texture_rectangle;
|
||||
|
|
|
@ -251,8 +251,7 @@ compute_version(const struct gl_extensions *extensions,
|
|||
{
|
||||
GLuint major, minor, version;
|
||||
|
||||
const bool ver_1_3 = (extensions->ARB_texture_cube_map &&
|
||||
extensions->ARB_texture_env_combine &&
|
||||
const bool ver_1_3 = (extensions->ARB_texture_env_combine &&
|
||||
extensions->ARB_texture_env_dot3);
|
||||
const bool ver_1_4 = (ver_1_3 &&
|
||||
extensions->ARB_depth_texture &&
|
||||
|
@ -515,8 +514,7 @@ compute_version_es2(const struct gl_extensions *extensions,
|
|||
const struct gl_constants *consts)
|
||||
{
|
||||
/* OpenGL ES 2.0 is derived from OpenGL 2.0 */
|
||||
const bool ver_2_0 = (extensions->ARB_texture_cube_map &&
|
||||
extensions->EXT_blend_color &&
|
||||
const bool ver_2_0 = (extensions->EXT_blend_color &&
|
||||
extensions->EXT_blend_func_separate &&
|
||||
extensions->EXT_blend_minmax &&
|
||||
extensions->ARB_vertex_shader &&
|
||||
|
|
|
@ -1109,7 +1109,6 @@ void st_init_extensions(struct pipe_screen *screen,
|
|||
extensions->ARB_internalformat_query2 = GL_TRUE;
|
||||
extensions->ARB_map_buffer_range = GL_TRUE;
|
||||
extensions->ARB_sync = GL_TRUE;
|
||||
extensions->ARB_texture_cube_map = GL_TRUE;
|
||||
extensions->ARB_texture_env_combine = GL_TRUE;
|
||||
extensions->ARB_texture_env_crossbar = GL_TRUE;
|
||||
extensions->ARB_texture_env_dot3 = GL_TRUE;
|
||||
|
|
Loading…
Reference in New Issue