[Mesa-dev] [PATCH v2 2/4] Gallium: Add format PIPE_FORMAT_R8_SRGB

Gert Wollny gert.wollny at collabora.com
Thu Nov 1 14:48:44 UTC 2018


Am Dienstag, den 30.10.2018, 16:04 +0000 schrieb Roland Scheidegger:
> With the format ordering in svga_format.c as Ilia mentioned fixed
> Reviewed-by: Roland Scheidegger <sroland at vmware.com>

CMIIW, but I guess was that your R-b was only for this patch, right?

Best, 
Gert 

> 
> Am 30.10.18 um 11:46 schrieb Gert Wollny:
> > This format is needed to support EXT_texture_sRGB_R8. THe patch
> > adds a new
> > format enum, the format entries in Gallium and and svga, the
> > mapping between
> > sRGB and linear formats, and tests.
> > 
> >   v2: - add mapping to linear format for PIPE_FORMATR_R8_SRGB
> >   v3: - Add texture format to svga format table since otherwise
> > building
> >         mesa will fail when this driver is enabled. It was not
> > tested
> >         whether the extension actually works.
> >   v4: - svga: remove the SVGA specific format definitions and table
> > entries
> >         and only add correct the location of PIPE_FORMAT_R8_SRGB in
> > the
> >         format_conversion_table (Ilia Mirkin)
> >       - Split patch (1/2) to separate Gallium part and mesa/st
> > part.
> >         (Roland Scheidegger)
> >       - Trim the commit message to only contain the relevant parts
> > from the
> >         split.
> > 
> > Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
> > ---
> >  src/gallium/auxiliary/util/u_format.csv     | 1 +
> >  src/gallium/auxiliary/util/u_format.h       | 4 ++++
> >  src/gallium/auxiliary/util/u_format_tests.c | 4 ++++
> >  src/gallium/drivers/svga/svga_format.c      | 1 +
> >  src/gallium/include/pipe/p_format.h         | 2 ++
> >  5 files changed, 12 insertions(+)
> > 
> > diff --git a/src/gallium/auxiliary/util/u_format.csv
> > b/src/gallium/auxiliary/util/u_format.csv
> > index f9e4925f27..911ac07d32 100644
> > --- a/src/gallium/auxiliary/util/u_format.csv
> > +++ b/src/gallium/auxiliary/util/u_format.csv
> > @@ -114,6 +114,7 @@ PIPE_FORMAT_I32_FLOAT             , plain, 1,
> > 1, f32 ,     ,     ,     , xxxx, r
> >  
> >  # SRGB formats
> >  PIPE_FORMAT_L8_SRGB               , plain, 1, 1, un8
> > ,     ,     ,     , xxx1, srgb 
> > +PIPE_FORMAT_R8_SRGB               , plain, 1, 1, un8
> > ,     ,     ,     , x001, srgb
> >  PIPE_FORMAT_L8A8_SRGB             , plain, 1, 1, un8 , un8
> > ,     ,     , xxxy, srgb 
> >  PIPE_FORMAT_R8G8B8_SRGB           , plain, 1, 1, un8 , un8 , un8
> > ,     , xyz1, srgb 
> >  PIPE_FORMAT_R8G8B8A8_SRGB         , plain, 1, 1, un8 , un8 , un8 ,
> > un8 , xyzw, srgb 
> > diff --git a/src/gallium/auxiliary/util/u_format.h
> > b/src/gallium/auxiliary/util/u_format.h
> > index e66849c16b..5bcfc1f115 100644
> > --- a/src/gallium/auxiliary/util/u_format.h
> > +++ b/src/gallium/auxiliary/util/u_format.h
> > @@ -925,6 +925,8 @@ util_format_srgb(enum pipe_format format)
> >     switch (format) {
> >     case PIPE_FORMAT_L8_UNORM:
> >        return PIPE_FORMAT_L8_SRGB;
> > +   case PIPE_FORMAT_R8_UNORM:
> > +      return PIPE_FORMAT_R8_SRGB;
> >     case PIPE_FORMAT_L8A8_UNORM:
> >        return PIPE_FORMAT_L8A8_SRGB;
> >     case PIPE_FORMAT_R8G8B8_UNORM:
> > @@ -1001,6 +1003,8 @@ util_format_linear(enum pipe_format format)
> >     switch (format) {
> >     case PIPE_FORMAT_L8_SRGB:
> >        return PIPE_FORMAT_L8_UNORM;
> > +   case PIPE_FORMAT_R8_SRGB:
> > +      return PIPE_FORMAT_R8_UNORM;
> >     case PIPE_FORMAT_L8A8_SRGB:
> >        return PIPE_FORMAT_L8A8_UNORM;
> >     case PIPE_FORMAT_R8G8B8_SRGB:
> > diff --git a/src/gallium/auxiliary/util/u_format_tests.c
> > b/src/gallium/auxiliary/util/u_format_tests.c
> > index 9c9a5838d1..dee52533c1 100644
> > --- a/src/gallium/auxiliary/util/u_format_tests.c
> > +++ b/src/gallium/auxiliary/util/u_format_tests.c
> > @@ -236,6 +236,10 @@ util_format_test_cases[] =
> >     {PIPE_FORMAT_L8_SRGB, PACKED_1x8(0xff), PACKED_1x8(0xbc),
> > UNPACKED_1x1(0.502886458033, 0.502886458033, 0.502886458033, 1.0)},
> >     {PIPE_FORMAT_L8_SRGB, PACKED_1x8(0xff), PACKED_1x8(0xff),
> > UNPACKED_1x1(1.0, 1.0, 1.0, 1.0)},
> >  
> > +   {PIPE_FORMAT_R8_SRGB, PACKED_1x8(0xff), PACKED_1x8(0x00),
> > UNPACKED_1x1(0.0, 0.0, 0.0, 1.0)},
> > +   {PIPE_FORMAT_R8_SRGB, PACKED_1x8(0xff), PACKED_1x8(0xbc),
> > UNPACKED_1x1(0.502886458033, 0.0, 0.0, 1.0)},
> > +   {PIPE_FORMAT_R8_SRGB, PACKED_1x8(0xff), PACKED_1x8(0xff),
> > UNPACKED_1x1(1.0, 0.0, 0.0, 1.0)},
> > +
> >     {PIPE_FORMAT_L8A8_SRGB, PACKED_1x16(0xffff),
> > PACKED_1x16(0x0000), UNPACKED_1x1(0.0, 0.0, 0.0, 0.0)},
> >     {PIPE_FORMAT_L8A8_SRGB, PACKED_1x16(0xffff),
> > PACKED_1x16(0x00bc), UNPACKED_1x1(0.502886458033, 0.502886458033,
> > 0.502886458033, 0.0)},
> >     {PIPE_FORMAT_L8A8_SRGB, PACKED_1x16(0xffff),
> > PACKED_1x16(0x00ff), UNPACKED_1x1(1.0, 1.0, 1.0, 0.0)},
> > diff --git a/src/gallium/drivers/svga/svga_format.c
> > b/src/gallium/drivers/svga/svga_format.c
> > index 9f6a618706..bf1bbca3e2 100644
> > --- a/src/gallium/drivers/svga/svga_format.c
> > +++ b/src/gallium/drivers/svga/svga_format.c
> > @@ -154,6 +154,7 @@ static const struct vgpu10_format_entry
> > format_conversion_table[] =
> >     {
> > PIPE_FORMAT_R16G16B16_FLOAT,       SVGA3D_R16G16B16A16_FLOAT,  SVGA
> > 3D_FORMAT_INVALID,       SVGA3D_FORMAT_INVALID,       VF_W_TO_1 },
> >     {
> > PIPE_FORMAT_R16G16B16A16_FLOAT,    SVGA3D_R16G16B16A16_FLOAT,  SVGA
> > 3D_R16G16B16A16_FLOAT,   SVGA3D_R16G16B16A16_FLOAT,   TF_GEN_MIPS
> > },
> >     {
> > PIPE_FORMAT_L8_SRGB,               SVGA3D_FORMAT_INVALID,      SVGA
> > 3D_FORMAT_INVALID,       SVGA3D_FORMAT_INVALID,       0 },
> > +   {
> > PIPE_FORMAT_R8_SRGB,               SVGA3D_FORMAT_INVALID,      SVGA
> > 3D_FORMAT_INVALID,       SVGA3D_FORMAT_INVALID,       0 },
> >     {
> > PIPE_FORMAT_L8A8_SRGB,             SVGA3D_FORMAT_INVALID,      SVGA
> > 3D_FORMAT_INVALID,       SVGA3D_FORMAT_INVALID,       0 },
> >     {
> > PIPE_FORMAT_R8G8B8_SRGB,           SVGA3D_FORMAT_INVALID,      SVGA
> > 3D_FORMAT_INVALID,       SVGA3D_FORMAT_INVALID,       0 },
> >     {
> > PIPE_FORMAT_A8B8G8R8_SRGB,         SVGA3D_FORMAT_INVALID,      SVGA
> > 3D_FORMAT_INVALID,       SVGA3D_FORMAT_INVALID,       0 },
> > diff --git a/src/gallium/include/pipe/p_format.h
> > b/src/gallium/include/pipe/p_format.h
> > index 57399800fa..6fb91222f2 100644
> > --- a/src/gallium/include/pipe/p_format.h
> > +++ b/src/gallium/include/pipe/p_format.h
> > @@ -396,6 +396,8 @@ enum pipe_format {
> >     PIPE_FORMAT_X1B5G5R5_UNORM          = 310,
> >     PIPE_FORMAT_A4B4G4R4_UNORM          = 311,
> >  
> > +   PIPE_FORMAT_R8_SRGB                 = 312,
> > +
> >     PIPE_FORMAT_COUNT
> >  };
> >  
> > 
> 
> 


More information about the mesa-dev mailing list