Re: [Mesa-dev] [PATCH] mesa/texformat: Use format conversion function in _mesa_choose_tex_format
On Tue, Aug 25, 2015 at 4:19 PM, Chad Versace wrote: > On Sun 16 Aug 2015, Nanley Chery wrote: > > The last line of the commit message should say: > > > >GL_RGBA4_S3TC (0x83A3) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F3) > > There's another weird line too, see below. > > > On Wed, Aug 12, 2015 at 4:19 PM, Nanley Chery > wrote: > > > > > From: Nanley Chery > > > > > > This function's cases for non-generic compressed formats duplicate > > > the GL to MESA translation in _mesa_glenum_to_compressed_format(). > > > This patch replaces the switch cases with a call to the translation > > > function. There are no behavioral changes except for the RGB[A]4 > formats: > > > > > >case GL_RGB4_S3TC: > > > return MESA_FORMAT_RGB_DXT1 (old) -> MESA_FORMAT_RGBA_DXT1 (new) > ^ > > I have trouble believing this line is correct. It adds an alpha channel. > Can you provide the documentation for that translation? > > Since this mapping is nowhere explicitly defined, I was leaning on the fact that _mesa_glenum_to_compressed_format() uses this mapping and the last byte of the enums (coincidentally) match up. I did some more/better research however and I now think that _mesa_choose_tex_format() had the correct mapping for several reasons: * The GL_RGB4_S3TC and GL_RGBA4_S3TC formats are formats that the driver can chose if the user passes in GL_RGB_S3TC and GL_RGBA_S3TC respectively. Therefore, it's not a problem for the formats to map to the same mesa_format (according to http://homepage.ntlworld.com/neal.tringham/OpenGLGameDev/s3tcoglext.htm) * MESA_FORMAT_RGBA_DXT5 should be reserved for the RGBA[4]_DXT5_S3TC cases we currently aren't handling ( https://www.opengl.org/registry/specs/S3/s3tc.txt) * The mapping in _mesa_choose_tex_format() can also be found in nouveau_choose_tex_format(), radeonChooseTextureFormat(), and in st_format.c's format_map[]. Thank you for the feedback. I will send out another patch to correct _mesa_glenum_to_compressed_format() and (if R-b'd) will omit the note about the behavioral change in this patch. I could also send out a v2 with an updated commit message if you'd prefer. Thanks, Nanley > >case GL_RGBA4_S3TC: > > > return MESA_FORMAT_RGBA_DXT3 (old) -> MESA_FORMAT_RGBA_DXT5 (new) > > > > > > Although unclear, the old behavior was likely a bug, given that online > > > documentation (few and far between) imply a format mapping of the > > > following: > > > > > >GL_RGB_S3TC(0x83A0) -> COMPRESSED_RGB_S3TC_DXT1_EXT (0x83F0) > > >GL_RGB4_S3TC (0x83A1) -> COMPRESSED_RGBA_S3TC_DXT1_EXT (0x83F1) > > >GL_RGBA_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT3_EXT (0x83F2) > > >GL_RGBA4_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F2) > > > > > > Cc: Brian Paul > > > Cc: Ian Romanick > > > Signed-off-by: Nanley Chery > > > --- > > > src/mesa/main/texformat.c | 94 > > > +++ > > > 1 file changed, 13 insertions(+), 81 deletions(-) > ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] mesa/texformat: Use format conversion function in _mesa_choose_tex_format
On Sun 16 Aug 2015, Nanley Chery wrote: > The last line of the commit message should say: > >GL_RGBA4_S3TC (0x83A3) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F3) There's another weird line too, see below. > On Wed, Aug 12, 2015 at 4:19 PM, Nanley Chery wrote: > > > From: Nanley Chery > > > > This function's cases for non-generic compressed formats duplicate > > the GL to MESA translation in _mesa_glenum_to_compressed_format(). > > This patch replaces the switch cases with a call to the translation > > function. There are no behavioral changes except for the RGB[A]4 formats: > > > >case GL_RGB4_S3TC: > > return MESA_FORMAT_RGB_DXT1 (old) -> MESA_FORMAT_RGBA_DXT1 (new) ^ I have trouble believing this line is correct. It adds an alpha channel. Can you provide the documentation for that translation? > >case GL_RGBA4_S3TC: > > return MESA_FORMAT_RGBA_DXT3 (old) -> MESA_FORMAT_RGBA_DXT5 (new) > > > > Although unclear, the old behavior was likely a bug, given that online > > documentation (few and far between) imply a format mapping of the > > following: > > > >GL_RGB_S3TC(0x83A0) -> COMPRESSED_RGB_S3TC_DXT1_EXT (0x83F0) > >GL_RGB4_S3TC (0x83A1) -> COMPRESSED_RGBA_S3TC_DXT1_EXT (0x83F1) > >GL_RGBA_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT3_EXT (0x83F2) > >GL_RGBA4_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F2) > > > > Cc: Brian Paul > > Cc: Ian Romanick > > Signed-off-by: Nanley Chery > > --- > > src/mesa/main/texformat.c | 94 > > +++ > > 1 file changed, 13 insertions(+), 81 deletions(-) ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] mesa/texformat: Use format conversion function in _mesa_choose_tex_format
The last line of the commit message should say: GL_RGBA4_S3TC (0x83A3) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F3) On Wed, Aug 12, 2015 at 4:19 PM, Nanley Chery wrote: > From: Nanley Chery > > This function's cases for non-generic compressed formats duplicate > the GL to MESA translation in _mesa_glenum_to_compressed_format(). > This patch replaces the switch cases with a call to the translation > function. There are no behavioral changes except for the RGB[A]4 formats: > >case GL_RGB4_S3TC: > return MESA_FORMAT_RGB_DXT1 (old) -> MESA_FORMAT_RGBA_DXT1 (new) >case GL_RGBA4_S3TC: > return MESA_FORMAT_RGBA_DXT3 (old) -> MESA_FORMAT_RGBA_DXT5 (new) > > Although unclear, the old behavior was likely a bug, given that online > documentation (few and far between) imply a format mapping of the > following: > >GL_RGB_S3TC(0x83A0) -> COMPRESSED_RGB_S3TC_DXT1_EXT (0x83F0) >GL_RGB4_S3TC (0x83A1) -> COMPRESSED_RGBA_S3TC_DXT1_EXT (0x83F1) >GL_RGBA_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT3_EXT (0x83F2) >GL_RGBA4_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F2) > > Cc: Brian Paul > Cc: Ian Romanick > Signed-off-by: Nanley Chery > --- > src/mesa/main/texformat.c | 94 > +++ > 1 file changed, 13 insertions(+), 81 deletions(-) > > diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c > index f4d17e1..fd9f335 100644 > --- a/src/mesa/main/texformat.c > +++ b/src/mesa/main/texformat.c > @@ -38,6 +38,7 @@ > #include "mtypes.h" > #include "texcompress.h" > #include "texformat.h" > +#include "glformats.h" > > #define RETURN_IF_SUPPORTED(f) do {\ > if (ctx->TextureFormatSupported[f]) \ > @@ -276,87 +277,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, > GLenum target, > RETURN_IF_SUPPORTED(MESA_FORMAT_YCBCR_REV); >break; > > - /* For non-generic compressed format we assert two things: > -* > -* 1. The format has already been validated against the set of > available > -*extensions. > -* > -* 2. The driver only enables the extension if it supports all of the > -*formats that are part of that extension. > -*/ > - case GL_COMPRESSED_RGB_FXT1_3DFX: > - return MESA_FORMAT_RGB_FXT1; > - case GL_COMPRESSED_RGBA_FXT1_3DFX: > - return MESA_FORMAT_RGBA_FXT1; > - case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: > - case GL_RGB_S3TC: > - case GL_RGB4_S3TC: > - return MESA_FORMAT_RGB_DXT1; > - case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: > - return MESA_FORMAT_RGBA_DXT1; > - case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: > - case GL_RGBA_S3TC: > - case GL_RGBA4_S3TC: > - return MESA_FORMAT_RGBA_DXT3; > - case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: > - return MESA_FORMAT_RGBA_DXT5; > - case GL_COMPRESSED_RED_RGTC1: > - return MESA_FORMAT_R_RGTC1_UNORM; > - case GL_COMPRESSED_SIGNED_RED_RGTC1: > - return MESA_FORMAT_R_RGTC1_SNORM; > - case GL_COMPRESSED_RG_RGTC2: > - return MESA_FORMAT_RG_RGTC2_UNORM; > - case GL_COMPRESSED_SIGNED_RG_RGTC2: > - return MESA_FORMAT_RG_RGTC2_SNORM; > - case GL_COMPRESSED_LUMINANCE_LATC1_EXT: > - return MESA_FORMAT_L_LATC1_UNORM; > - case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: > - return MESA_FORMAT_L_LATC1_SNORM; > - case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: > - return MESA_FORMAT_LA_LATC2_UNORM; > - case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: > - return MESA_FORMAT_LA_LATC2_SNORM; > - case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: > - return MESA_FORMAT_LA_LATC2_UNORM; > - case GL_ETC1_RGB8_OES: > - return MESA_FORMAT_ETC1_RGB8; > - case GL_COMPRESSED_RGB8_ETC2: > - return MESA_FORMAT_ETC2_RGB8; > - case GL_COMPRESSED_SRGB8_ETC2: > - return MESA_FORMAT_ETC2_SRGB8; > - case GL_COMPRESSED_RGBA8_ETC2_EAC: > - return MESA_FORMAT_ETC2_RGBA8_EAC; > - case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: > - return MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC; > - case GL_COMPRESSED_R11_EAC: > - return MESA_FORMAT_ETC2_R11_EAC; > - case GL_COMPRESSED_RG11_EAC: > - return MESA_FORMAT_ETC2_RG11_EAC; > - case GL_COMPRESSED_SIGNED_R11_EAC: > - return MESA_FORMAT_ETC2_SIGNED_R11_EAC; > - case GL_COMPRESSED_SIGNED_RG11_EAC: > - return MESA_FORMAT_ETC2_SIGNED_RG11_EAC; > - case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: > - return MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1; > - case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: > - return MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1; > - case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: > - return MESA_FORMAT_SRGB_DXT1; > - case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: > - return MESA_FORMAT_SRGBA_DXT1; > - case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: > - return MESA_FORMAT_SRGBA_DXT3; > - case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: > - return MESA_FORMAT_SRGBA_DXT5; > - case GL_COMPRESSED_RGBA_BPTC_UNORM:
[Mesa-dev] [PATCH] mesa/texformat: Use format conversion function in _mesa_choose_tex_format
From: Nanley Chery This function's cases for non-generic compressed formats duplicate the GL to MESA translation in _mesa_glenum_to_compressed_format(). This patch replaces the switch cases with a call to the translation function. There are no behavioral changes except for the RGB[A]4 formats: case GL_RGB4_S3TC: return MESA_FORMAT_RGB_DXT1 (old) -> MESA_FORMAT_RGBA_DXT1 (new) case GL_RGBA4_S3TC: return MESA_FORMAT_RGBA_DXT3 (old) -> MESA_FORMAT_RGBA_DXT5 (new) Although unclear, the old behavior was likely a bug, given that online documentation (few and far between) imply a format mapping of the following: GL_RGB_S3TC(0x83A0) -> COMPRESSED_RGB_S3TC_DXT1_EXT (0x83F0) GL_RGB4_S3TC (0x83A1) -> COMPRESSED_RGBA_S3TC_DXT1_EXT (0x83F1) GL_RGBA_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT3_EXT (0x83F2) GL_RGBA4_S3TC (0x83A2) -> COMPRESSED_RGBA_S3TC_DXT5_EXT (0x83F2) Cc: Brian Paul Cc: Ian Romanick Signed-off-by: Nanley Chery --- src/mesa/main/texformat.c | 94 +++ 1 file changed, 13 insertions(+), 81 deletions(-) diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index f4d17e1..fd9f335 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -38,6 +38,7 @@ #include "mtypes.h" #include "texcompress.h" #include "texformat.h" +#include "glformats.h" #define RETURN_IF_SUPPORTED(f) do {\ if (ctx->TextureFormatSupported[f]) \ @@ -276,87 +277,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, RETURN_IF_SUPPORTED(MESA_FORMAT_YCBCR_REV); break; - /* For non-generic compressed format we assert two things: -* -* 1. The format has already been validated against the set of available -*extensions. -* -* 2. The driver only enables the extension if it supports all of the -*formats that are part of that extension. -*/ - case GL_COMPRESSED_RGB_FXT1_3DFX: - return MESA_FORMAT_RGB_FXT1; - case GL_COMPRESSED_RGBA_FXT1_3DFX: - return MESA_FORMAT_RGBA_FXT1; - case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - case GL_RGB_S3TC: - case GL_RGB4_S3TC: - return MESA_FORMAT_RGB_DXT1; - case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - return MESA_FORMAT_RGBA_DXT1; - case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - case GL_RGBA_S3TC: - case GL_RGBA4_S3TC: - return MESA_FORMAT_RGBA_DXT3; - case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - return MESA_FORMAT_RGBA_DXT5; - case GL_COMPRESSED_RED_RGTC1: - return MESA_FORMAT_R_RGTC1_UNORM; - case GL_COMPRESSED_SIGNED_RED_RGTC1: - return MESA_FORMAT_R_RGTC1_SNORM; - case GL_COMPRESSED_RG_RGTC2: - return MESA_FORMAT_RG_RGTC2_UNORM; - case GL_COMPRESSED_SIGNED_RG_RGTC2: - return MESA_FORMAT_RG_RGTC2_SNORM; - case GL_COMPRESSED_LUMINANCE_LATC1_EXT: - return MESA_FORMAT_L_LATC1_UNORM; - case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: - return MESA_FORMAT_L_LATC1_SNORM; - case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: - return MESA_FORMAT_LA_LATC2_UNORM; - case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: - return MESA_FORMAT_LA_LATC2_SNORM; - case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: - return MESA_FORMAT_LA_LATC2_UNORM; - case GL_ETC1_RGB8_OES: - return MESA_FORMAT_ETC1_RGB8; - case GL_COMPRESSED_RGB8_ETC2: - return MESA_FORMAT_ETC2_RGB8; - case GL_COMPRESSED_SRGB8_ETC2: - return MESA_FORMAT_ETC2_SRGB8; - case GL_COMPRESSED_RGBA8_ETC2_EAC: - return MESA_FORMAT_ETC2_RGBA8_EAC; - case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: - return MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC; - case GL_COMPRESSED_R11_EAC: - return MESA_FORMAT_ETC2_R11_EAC; - case GL_COMPRESSED_RG11_EAC: - return MESA_FORMAT_ETC2_RG11_EAC; - case GL_COMPRESSED_SIGNED_R11_EAC: - return MESA_FORMAT_ETC2_SIGNED_R11_EAC; - case GL_COMPRESSED_SIGNED_RG11_EAC: - return MESA_FORMAT_ETC2_SIGNED_RG11_EAC; - case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: - return MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1; - case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: - return MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1; - case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: - return MESA_FORMAT_SRGB_DXT1; - case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: - return MESA_FORMAT_SRGBA_DXT1; - case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: - return MESA_FORMAT_SRGBA_DXT3; - case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: - return MESA_FORMAT_SRGBA_DXT5; - case GL_COMPRESSED_RGBA_BPTC_UNORM: - return MESA_FORMAT_BPTC_RGBA_UNORM; - case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: - return MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM; - case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: - return MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT; - case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: - return MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT; - case GL_ALPHA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_A_FL