[Mesa-dev] [PATCH] mesa: fix texstore for MESA_FORMAT_R8G8B8A8_SRGB

Brian Paul brianp at vmware.com
Sat Mar 29 04:30:14 PDT 2014


On 03/28/2014 09:56 PM, Chris Forbes wrote:
> The case for this was in the wrong function, and this format's store
> func was not set in the table at all.
>
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
>   src/mesa/main/texstore.c | 10 ++++++----
>   1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
> index b68ba60..fe3b072 100644
> --- a/src/mesa/main/texstore.c
> +++ b/src/mesa/main/texstore.c
> @@ -3260,12 +3260,16 @@ _mesa_texstore_srgba8(TEXSTORE_PARAMS)
>      GLboolean k;
>
>      ASSERT(dstFormat == MESA_FORMAT_A8B8G8R8_SRGB ||
> -          dstFormat == MESA_FORMAT_R8G8B8X8_SRGB);
> +          dstFormat == MESA_FORMAT_R8G8B8X8_SRGB ||
> +          dstFormat == MESA_FORMAT_R8G8B8A8_SRGB);
>
>      /* reuse normal rgba texstore code */
>      if (dstFormat == MESA_FORMAT_A8B8G8R8_SRGB) {
>         newDstFormat = MESA_FORMAT_A8B8G8R8_UNORM;
>      }
> +   else if (dstFormat == MESA_FORMAT_R8G8B8A8_SRGB) {
> +      newDstFormat = MESA_FORMAT_R8G8B8A8_UNORM;
> +   }
>      else if (dstFormat == MESA_FORMAT_R8G8B8X8_SRGB) {
>         newDstFormat = MESA_FORMAT_R8G8B8X8_UNORM;
>      }

BTW, this else/if block could be replaced by a call to 
_mesa_get_srgb_format_linear().


> @@ -3294,9 +3298,6 @@ _mesa_texstore_sargb8(TEXSTORE_PARAMS)
>      case MESA_FORMAT_B8G8R8A8_SRGB:
>         newDstFormat = MESA_FORMAT_B8G8R8A8_UNORM;
>         break;
> -   case MESA_FORMAT_R8G8B8A8_SRGB:
> -      newDstFormat = MESA_FORMAT_R8G8B8A8_UNORM;
> -      break;
>      case MESA_FORMAT_B8G8R8X8_SRGB:
>         newDstFormat = MESA_FORMAT_B8G8R8X8_UNORM;
>         break;

_mesa_get_srgb_format_linear() here too.


> @@ -3852,6 +3853,7 @@ _mesa_get_texstore_func(mesa_format format)
>         table[MESA_FORMAT_B5G5R5X1_UNORM] = store_ubyte_texture;
>         table[MESA_FORMAT_R8G8B8X8_SNORM] = _mesa_texstore_signed_rgbx8888;
>         table[MESA_FORMAT_R8G8B8X8_SRGB] = _mesa_texstore_srgba8;
> +      table[MESA_FORMAT_R8G8B8A8_SRGB] = _mesa_texstore_srgba8;
>         table[MESA_FORMAT_RGBX_UINT8] = _mesa_texstore_rgba_uint8;
>         table[MESA_FORMAT_RGBX_SINT8] = _mesa_texstore_rgba_int8;
>         table[MESA_FORMAT_B10G10R10X2_UNORM] = _mesa_texstore_argb2101010;
>

Reviewed-by: Brian Paul <brianp at vmware.com>

Feel free to make the _mesa_get_srgb_format_linear() change in a 
follow-on commit.

-Brian



More information about the mesa-dev mailing list