This should already be handled by _mesa_base_tex_format() calls in TexImage*. ---
NOTE! I've replaced the actual patch full of unindentation of code described by: src/mesa/main/texformat.c | 1184 ++++++++++++++++++++------------------------- 1 file changed, 533 insertions(+), 651 deletions(-) with the git show -b output so that someone can actually review it. If you want to apply the series, please just use the "formats" branch of my tree. diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index ecf8fec..45497c1 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -207,12 +207,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_I8); break; - default: - ; /* fallthrough */ - } - - if (ctx->Extensions.ARB_depth_texture) { - switch (internalFormat) { case GL_DEPTH_COMPONENT: case GL_DEPTH_COMPONENT24: case GL_DEPTH_COMPONENT32: @@ -224,12 +218,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_Z16); RETURN_IF_SUPPORTED(MESA_FORMAT_X8_Z24); RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24); - default: - ; /* fallthrough */ - } - } - switch (internalFormat) { case GL_COMPRESSED_ALPHA_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_A8); break; @@ -273,28 +262,17 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888); RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888); break; - default: - ; /* fallthrough */ - } - if (ctx->Extensions.ARB_ES2_compatibility) { - switch (internalFormat) { case GL_RGB565: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB565); break; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.MESA_ycbcr_texture) { - if (internalFormat == GL_YCBCR_MESA) { + case GL_YCBCR_MESA: if (type == GL_UNSIGNED_SHORT_8_8_MESA) RETURN_IF_SUPPORTED(MESA_FORMAT_YCBCR); else RETURN_IF_SUPPORTED(MESA_FORMAT_YCBCR_REV); - } - } + break; /* For non-generic compressed format we assert two things: * @@ -304,7 +282,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, * 2. The driver only enables the extension if it supports all of the * formats that are part of that extension. */ - switch (internalFormat) { case GL_COMPRESSED_RGB_FXT1_3DFX: return MESA_FORMAT_RGB_FXT1; case GL_COMPRESSED_RGBA_FXT1_3DFX: @@ -369,12 +346,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, return MESA_FORMAT_SRGBA_DXT3; case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: return MESA_FORMAT_SRGBA_DXT5; - default: - ; /* fallthrough */ - } - if (ctx->Extensions.ARB_texture_float) { - switch (internalFormat) { case GL_ALPHA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16); RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); @@ -445,69 +417,35 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); break; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.EXT_texture_shared_exponent) { - switch (internalFormat) { case GL_RGB9_E5: + /* GL_EXT_texture_shared_exponent -- just one format to support */ ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_RGB9_E5_FLOAT]); return MESA_FORMAT_RGB9_E5_FLOAT; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.EXT_packed_float) { - switch (internalFormat) { case GL_R11F_G11F_B10F: + /* GL_EXT_texture_packed_float -- just one format to support */ ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_R11_G11_B10_FLOAT]); return MESA_FORMAT_R11_G11_B10_FLOAT; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.EXT_packed_depth_stencil) { - switch (internalFormat) { case GL_DEPTH_STENCIL_EXT: case GL_DEPTH24_STENCIL8_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_S8); RETURN_IF_SUPPORTED(MESA_FORMAT_S8_Z24); break; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.ARB_depth_buffer_float) { - switch (internalFormat) { case GL_DEPTH_COMPONENT32F: ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT]); return MESA_FORMAT_Z32_FLOAT; case GL_DEPTH32F_STENCIL8: ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT_X24S8]); return MESA_FORMAT_Z32_FLOAT_X24S8; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.ATI_envmap_bumpmap) { - switch (internalFormat) { case GL_DUDV_ATI: case GL_DU8DV8_ATI: RETURN_IF_SUPPORTED(MESA_FORMAT_DUDV8); break; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.EXT_texture_snorm) { - switch (internalFormat) { case GL_RED_SNORM: case GL_R8_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R8); @@ -586,13 +524,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); break; - default: - ; /* fall-through */ - } - } - if (ctx->Extensions.EXT_texture_sRGB) { - switch (internalFormat) { case GL_SRGB_EXT: case GL_SRGB8_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB8); @@ -622,24 +554,16 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8); break; case GL_COMPRESSED_SRGB_EXT: - if (ctx->Extensions.EXT_texture_compression_s3tc) RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB_DXT1); RETURN_IF_SUPPORTED(MESA_FORMAT_SRGB8); RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8); break; case GL_COMPRESSED_SRGB_ALPHA_EXT: - if (ctx->Extensions.EXT_texture_compression_s3tc) RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA_DXT3); /* Not srgba_dxt1, see spec */ RETURN_IF_SUPPORTED(MESA_FORMAT_SRGBA8); RETURN_IF_SUPPORTED(MESA_FORMAT_SARGB8); break; - default: - ; /* fallthrough */ - } - } - if (ctx->Extensions.EXT_texture_integer) { - switch (internalFormat) { case GL_ALPHA8UI_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_UINT8); RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_UINT8); @@ -736,12 +660,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT32); RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT32); break; - } - } - if (ctx->Version >= 30 || - ctx->Extensions.EXT_texture_integer) { - switch (internalFormat) { case GL_RGB8UI_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_UINT8); RETURN_IF_SUPPORTED(MESA_FORMAT_XBGR8888_UINT); @@ -790,11 +709,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, case GL_RGBA32I_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT32); break; - } - } - if (ctx->Extensions.ARB_texture_rg) { - switch (internalFormat) { case GL_R8: case GL_RED: RETURN_IF_SUPPORTED(MESA_FORMAT_R8); @@ -825,13 +740,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_GR1616); break; - default: - ; /* fallthrough */ - } - } - - if (ctx->Extensions.ARB_texture_rg && ctx->Extensions.ARB_texture_float) { - switch (internalFormat) { case GL_R16F: RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16); RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); @@ -861,15 +769,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); break; - default: - ; /* fallthrough */ - } - } - - if (ctx->Version >= 30 || - (ctx->Extensions.ARB_texture_rg && - ctx->Extensions.EXT_texture_integer)) { - switch (internalFormat) { case GL_R8UI: RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT8); break; @@ -906,32 +805,15 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, case GL_RG32I: RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT32); break; - default: - break; - } - } - if (ctx->Extensions.ARB_texture_rgb10_a2ui) { - switch (internalFormat) { case GL_RGB10_A2UI: RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB2101010_UINT); RETURN_IF_SUPPORTED(MESA_FORMAT_ABGR2101010_UINT); break; - default: - break; - } - } - /* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0). - */ - if (_mesa_is_gles(ctx)) { - switch (internalFormat) { + case GL_BGRA: RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888); break; - - default: - ; /* fallthrough */ - } } _mesa_problem(ctx, "unexpected format %s in _mesa_choose_tex_format()", _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev