From 7649ab1f03f6e020baa64db63bc2cc40f1bbbd88 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 14 Dec 2021 17:06:49 -0800 Subject: [PATCH] mesa: OpenGL 1.3 feature GL_ARB_texture_cube_map is not optional MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Part-of: --- src/mesa/main/attrib.c | 6 ++---- src/mesa/main/enable.c | 6 ++---- src/mesa/main/extensions_table.h | 6 +++--- src/mesa/main/fbobject.c | 2 +- src/mesa/main/formatquery.c | 2 +- src/mesa/main/genmipmap.c | 2 +- src/mesa/main/get.c | 4 +--- src/mesa/main/get_hash_params.py | 4 ++-- src/mesa/main/mtypes.h | 1 - src/mesa/main/texgetimage.c | 2 +- src/mesa/main/teximage.c | 16 +++++++--------- src/mesa/main/texobj.c | 9 +++------ src/mesa/main/texparam.c | 5 ++--- src/mesa/main/texstorage.c | 6 ++---- src/mesa/main/version.c | 6 ++---- src/mesa/state_tracker/st_extensions.c | 1 - 16 files changed, 30 insertions(+), 48 deletions(-) diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 6c93ef2..aa734c3 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -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) { diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index b39d19f..9e1a348 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -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); diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index ad2ba2c..72be42e 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -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) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index a4026bd..9999ff0 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -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; diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c index 355aa05..3c2d6d4 100644 --- a/src/mesa/main/formatquery.c +++ b/src/mesa/main/formatquery.c @@ -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; diff --git a/src/mesa/main/genmipmap.c b/src/mesa/main/genmipmap.c index d86fd43..97d0ab3 100644 --- a/src/mesa/main/genmipmap.c +++ b/src/mesa/main/genmipmap.c @@ -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; diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index fe3b131..8df36f8 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -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; diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index f0782c7..6c824c7 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -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" ], diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index e7ba9ba..ef7e241 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -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; diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 5a8f48e..d896c7c 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -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: diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 226b14c..52a1abd 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -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) || diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 87fe6fc..d5fce2f 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -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; diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 49996db..63e5b07 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -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: diff --git a/src/mesa/main/texstorage.c b/src/mesa/main/texstorage.c index 4970524..8fe9a46 100644 --- a/src/mesa/main/texstorage.c +++ b/src/mesa/main/texstorage.c @@ -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; diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index 07d0549..f92e9d2 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -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 && diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index ecec363..3e69786 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -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; -- 2.7.4