[Mesa-dev] [PATCH 4/8] mesa: fill in signed cases and RGBA16 in _mesa_format_matches_format_and_type

Michel Dänzer michel at daenzer.net
Tue Jan 29 07:31:57 PST 2013


On Die, 2013-01-29 at 14:43 +0100, Marek Olšák wrote: 
> ---
>  src/mesa/main/formats.c |   30 ++++++++++++++++++++++++++----
>  1 file changed, 26 insertions(+), 4 deletions(-)
> 
> diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
> index 0273425..b86fb9e 100644
> --- a/src/mesa/main/formats.c
> +++ b/src/mesa/main/formats.c
> @@ -3240,8 +3240,14 @@ _mesa_format_matches_format_and_type(gl_format gl_format,
>        return format == GL_RGBA_INTEGER && type == GL_UNSIGNED_INT && !swapBytes;
>  
>     case MESA_FORMAT_DUDV8:
> +      return (format == GL_DU8DV8_ATI || format == GL_DUDV_ATI) &&
> +             type == GL_BYTE && littleEndian && !swapBytes;
> +
>     case MESA_FORMAT_SIGNED_R8:
> +      return format == GL_RED && type == GL_BYTE && !swapBytes;
>     case MESA_FORMAT_SIGNED_RG88_REV:
> +      return format == GL_RG && type == GL_BYTE && littleEndian &&
> +             !swapBytes;

The comments from my previous posts apply to these cases.


> @@ -3264,12 +3270,17 @@ _mesa_format_matches_format_and_type(gl_format gl_format,
>        return GL_FALSE;
>  
>     case MESA_FORMAT_SIGNED_R16:
> +      return format == GL_RED && type == GL_SHORT && littleEndian &&
> +             !swapBytes;
>     case MESA_FORMAT_SIGNED_GR1616:
> +      return format == GL_RG && type == GL_SHORT && littleEndian && !swapBytes;

GL_SHORT is in host byte order, so checking for littleEndian here
incorrectly excludes big endian hosts.


The last hunk has more examples of all of the above.


-- 
Earthling Michel Dänzer           |                   http://www.amd.com
Libre software enthusiast         |          Debian, X and DRI developer


More information about the mesa-dev mailing list