[Mesa-dev] [PATCH 4/4] llvmpipe: turn on integer texture support
Jose Fonseca
jfonseca at vmware.com
Tue Jan 15 14:00:26 PST 2013
----- Original Message -----
> From: Roland Scheidegger <sroland at vmware.com>
>
> Now that things mostly seem to work enable those formats.
> Some formats cause crashes (notably RGB8 variants) so switch these
> off
> (these crashes are not specific to INT/UINT variants but the state
> tracker
> doesn't use them for UNORM etc. formats so it went unnoticed so far).
> ---
> src/gallium/drivers/llvmpipe/lp_screen.c | 22
> ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c
> b/src/gallium/drivers/llvmpipe/lp_screen.c
> index b99e617..66a84c0 100644
> --- a/src/gallium/drivers/llvmpipe/lp_screen.c
> +++ b/src/gallium/drivers/llvmpipe/lp_screen.c
> @@ -334,6 +334,20 @@ llvmpipe_is_format_supported( struct pipe_screen
> *_screen,
>
> if (!format_desc->is_array && !format_desc->is_bitmask)
> return FALSE;
> +
> + /*
> + * XXX refuse formats known to crash in
> generate_unswizzled_blend().
> + * These include all 3-channel 24bit RGB8 variants, plus 48bit
> + * (except those using floats) 3-channel RGB16 variants (the
> latter
> + * seems to be more of a llvm bug though).
> + * The mesa state tracker only seems to use these for
> SINT/UINT formats.
> + */
> + if (format_desc->is_array && format_desc->nr_channels == 3) {
> + if (format_desc->block.bits == 24 ||
> (format_desc->block.bits == 48 &&
> + !util_format_is_float(format))) {
> + return FALSE;
> + }
> + }
> }
>
> if (bind & PIPE_BIND_DISPLAY_TARGET) {
> @@ -358,14 +372,10 @@ llvmpipe_is_format_supported( struct
> pipe_screen *_screen,
> }
>
> /*
> - * Everything can be supported by u_format.
> + * Everything can be supported by u_format
> + * (those without fetch_rgba_float might be not but shouldn't hit
> that)
> */
>
> - if (format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS &&
> - !format_desc->fetch_rgba_float) {
> - return FALSE;
> - }
We don't have a fetch_rgba_uint fallback, like the fetch_rgba_float there is now. But this is not a problem now. So series is
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
Jose
More information about the mesa-dev
mailing list