Previously, we were downconverting to 8888 automatically if the hardware didn't suport it. However, with the advent of GL_OES_required_internalformat, we have to actually store the internalformats we advertise support for. And, it seems rather disingenuous to advertise the extension if we don't actually support it.
v2: Throw an error when using the format on ES2 without the extension present. --- src/mesa/drivers/dri/i965/intel_extensions.c | 1 + src/mesa/main/extensions_table.h | 2 +- src/mesa/main/glformats.c | 3 ++- src/mesa/main/mtypes.h | 1 + src/mesa/state_tracker/st_extensions.c | 5 +++++ 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c index b91bbdc8d954..6a4530826fee 100644 --- a/src/mesa/drivers/dri/i965/intel_extensions.c +++ b/src/mesa/drivers/dri/i965/intel_extensions.c @@ -111,6 +111,7 @@ intelInitExtensions(struct gl_context *ctx) ctx->Extensions.EXT_texture_sRGB = true; ctx->Extensions.EXT_texture_sRGB_decode = true; ctx->Extensions.EXT_texture_swizzle = true; + ctx->Extensions.EXT_texture_type_2_10_10_10_REV = true; ctx->Extensions.EXT_vertex_array_bgra = true; ctx->Extensions.KHR_robustness = true; ctx->Extensions.AMD_seamless_cubemap_per_texture = true; diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 347a6197ed8a..6e8114fcc8d9 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -282,7 +282,7 @@ EXT(EXT_texture_sRGB_decode , EXT_texture_sRGB_decode EXT(EXT_texture_shared_exponent , EXT_texture_shared_exponent , GLL, GLC, x , x , 2004) EXT(EXT_texture_snorm , EXT_texture_snorm , GLL, GLC, x , x , 2009) EXT(EXT_texture_swizzle , EXT_texture_swizzle , GLL, GLC, x , x , 2008) -EXT(EXT_texture_type_2_10_10_10_REV , dummy_true , x , x , x , ES2, 2008) +EXT(EXT_texture_type_2_10_10_10_REV , EXT_texture_type_2_10_10_10_REV , x , x , x , ES2, 2008) EXT(EXT_timer_query , EXT_timer_query , GLL, GLC, x , x , 2006) EXT(EXT_transform_feedback , EXT_transform_feedback , GLL, GLC, x , x , 2011) EXT(EXT_unpack_subimage , dummy_true , x , x , x , ES2, 2011) diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 4f240206ff45..aec41f079935 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -2234,7 +2234,8 @@ _mesa_es_error_check_format_and_type(const struct gl_context *ctx, || type == GL_UNSIGNED_SHORT_5_5_5_1 || type == GL_FLOAT || type == GL_HALF_FLOAT_OES - || type == GL_UNSIGNED_INT_2_10_10_10_REV); + || (ctx->Extensions.EXT_texture_type_2_10_10_10_REV && + type == GL_UNSIGNED_INT_2_10_10_10_REV)); break; case GL_DEPTH_COMPONENT: diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 49eb7d54bd5a..d4bf9277484c 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -4140,6 +4140,7 @@ struct gl_extensions GLboolean EXT_texture_sRGB; GLboolean EXT_texture_sRGB_decode; GLboolean EXT_texture_swizzle; + GLboolean EXT_texture_type_2_10_10_10_REV; GLboolean EXT_transform_feedback; GLboolean EXT_timer_query; GLboolean EXT_vertex_array_bgra; diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index e37814412a3c..239d12ed64b1 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -772,6 +772,11 @@ void st_init_extensions(struct pipe_screen *screen, PIPE_FORMAT_B8G8R8A8_SRGB }, GL_TRUE }, /* at least one format must be supported */ + { { o(EXT_texture_type_2_10_10_10_REV) }, + { PIPE_FORMAT_R10G10B10A2_UNORM, + PIPE_FORMAT_B10G10R10A2_UNORM }, + GL_TRUE }, /* at least one format must be supported */ + { { o(ATI_texture_compression_3dc) }, { PIPE_FORMAT_LATC2_UNORM } }, -- 2.14.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev