[Mesa-dev] [PATCH 7/9] softpipe: don't use 3-component formats
Marek Olšák
maraeo at gmail.com
Fri Aug 28 04:05:33 PDT 2015
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Fri, Aug 28, 2015 at 1:47 AM, Brian Paul <brianp at vmware.com> wrote:
> Mesa and gallium don't have a complete set of matching 3-component
> texture formats. For example, 8-bit sRGB unorm. To fully support
> the GL_ARB_copy_image extension we need to have support for all of
> these formats: RGB8_UNORM, RGB8_SNORM, RGB8_SRGB, RGB8_UINT, and
> RGB8_SINT using the same component order. Since we don't have that,
> disable the 3-component formats for now.
>
> v2: Simplify 3-component format check, per Marek.
> Also check that target != PIPE_BUFFER.
> ---
> src/gallium/drivers/softpipe/sp_screen.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
> index aeef8e6..817572c 100644
> --- a/src/gallium/drivers/softpipe/sp_screen.c
> +++ b/src/gallium/drivers/softpipe/sp_screen.c
> @@ -360,6 +360,24 @@ softpipe_is_format_supported( struct pipe_screen *screen,
> return FALSE;
> }
>
> + if ((bind & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW)) &&
> + ((bind & PIPE_BIND_DISPLAY_TARGET) == 0) &&
> + target != PIPE_BUFFER) {
> + const struct util_format_description *desc =
> + util_format_description(format);
> + if (desc->nr_channels == 3 && desc->is_array) {
> + /* Don't support any 3-component formats for rendering/texturing
> + * since we don't support the corresponding 8-bit 3 channel UNORM
> + * formats. This allows us to support GL_ARB_copy_image between
> + * GL_RGB8 and GL_RGB8UI, for example. Otherwise, we may be asked to
> + * do a resource copy between PIPE_FORMAT_R8G8B8_UINT and
> + * PIPE_FORMAT_R8G8B8X8_UNORM, for example, which will not work
> + * (different bpp).
> + */
> + return FALSE;
> + }
> + }
> +
> if (format_desc->layout == UTIL_FORMAT_LAYOUT_ETC &&
> format != PIPE_FORMAT_ETC1_RGB8)
> return FALSE;
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list