[Mesa-dev] [PATCH 7/9] softpipe: don't use 3-component formats

Brian Paul brianp at vmware.com
Tue Aug 25 12:47:24 PDT 2015


On 08/24/2015 05:08 PM, Ilia Mirkin wrote:
> On Mon, Aug 24, 2015 at 7:04 PM, 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.
>> ---
>>   src/gallium/drivers/softpipe/sp_screen.c | 25 +++++++++++++++++++++++++
>>   1 file changed, 25 insertions(+)
>>
>> diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
>> index aeef8e6..24d79f1 100644
>> --- a/src/gallium/drivers/softpipe/sp_screen.c
>> +++ b/src/gallium/drivers/softpipe/sp_screen.c
>> @@ -360,6 +360,31 @@ 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)) {
>> +      if (format == PIPE_FORMAT_R8G8B8_UINT ||
>> +          format == PIPE_FORMAT_R8G8B8_SINT ||
>> +          format == PIPE_FORMAT_R8G8B8_UNORM ||
>> +          format == PIPE_FORMAT_R16G16B16_UINT ||
>> +          format == PIPE_FORMAT_R16G16B16_SINT ||
>> +          format == PIPE_FORMAT_R16G16B16_UNORM ||
>> +          format == PIPE_FORMAT_R16G16B16_FLOAT ||
>> +          format == PIPE_FORMAT_R32G32B32_UINT ||
>> +          format == PIPE_FORMAT_R32G32B32_SINT ||
>> +          format == PIPE_FORMAT_R32G32B32_UNORM ||
>> +          format == PIPE_FORMAT_R32G32B32_FLOAT) {
>
> Won't this lose you ARB_texture_buffer_object_rgb32 support?
>
>     static const struct st_extension_format_mapping tbo_rgb32[] = {
>        { {o(ARB_texture_buffer_object_rgb32) },
>          { PIPE_FORMAT_R32G32B32_FLOAT,
>            PIPE_FORMAT_R32G32B32_UINT,
>            PIPE_FORMAT_R32G32B32_SINT,
>          } },
>
>        init_format_extensions(screen, extensions, tbo_rgb32,
>                               ARRAY_SIZE(tbo_rgb32), PIPE_BUFFER,
>                               PIPE_BIND_SAMPLER_VIEW);
>

Yeah, I also need to check that target!=PIPE_BUFFER.  I'm fixing that 
and re-checking with piglit.  Thanks.

-Brian




More information about the mesa-dev mailing list