Gallium: Add format PIPE_FORMAT_R8_SRGB
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. v5: - svga: correct location of PIPE_FORMAT_SRGB_R8 (Ilia Mirkin) Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
b8e9c6522d
commit
29f0ab2c30
|
@ -114,6 +114,7 @@ PIPE_FORMAT_I32_FLOAT , plain, 1, 1, f32 , , , , xxxx, r
|
||||||
|
|
||||||
# SRGB formats
|
# SRGB formats
|
||||||
PIPE_FORMAT_L8_SRGB , plain, 1, 1, un8 , , , , xxx1, srgb
|
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_L8A8_SRGB , plain, 1, 1, un8 , un8 , , , xxxy, srgb
|
||||||
PIPE_FORMAT_R8G8B8_SRGB , plain, 1, 1, un8 , un8 , un8 , , xyz1, 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
|
PIPE_FORMAT_R8G8B8A8_SRGB , plain, 1, 1, un8 , un8 , un8 , un8 , xyzw, srgb
|
||||||
|
|
Can't render this file because it contains an unexpected character in line 8 and column 3.
|
|
@ -925,6 +925,8 @@ util_format_srgb(enum pipe_format format)
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case PIPE_FORMAT_L8_UNORM:
|
case PIPE_FORMAT_L8_UNORM:
|
||||||
return PIPE_FORMAT_L8_SRGB;
|
return PIPE_FORMAT_L8_SRGB;
|
||||||
|
case PIPE_FORMAT_R8_UNORM:
|
||||||
|
return PIPE_FORMAT_R8_SRGB;
|
||||||
case PIPE_FORMAT_L8A8_UNORM:
|
case PIPE_FORMAT_L8A8_UNORM:
|
||||||
return PIPE_FORMAT_L8A8_SRGB;
|
return PIPE_FORMAT_L8A8_SRGB;
|
||||||
case PIPE_FORMAT_R8G8B8_UNORM:
|
case PIPE_FORMAT_R8G8B8_UNORM:
|
||||||
|
@ -1001,6 +1003,8 @@ util_format_linear(enum pipe_format format)
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case PIPE_FORMAT_L8_SRGB:
|
case PIPE_FORMAT_L8_SRGB:
|
||||||
return PIPE_FORMAT_L8_UNORM;
|
return PIPE_FORMAT_L8_UNORM;
|
||||||
|
case PIPE_FORMAT_R8_SRGB:
|
||||||
|
return PIPE_FORMAT_R8_UNORM;
|
||||||
case PIPE_FORMAT_L8A8_SRGB:
|
case PIPE_FORMAT_L8A8_SRGB:
|
||||||
return PIPE_FORMAT_L8A8_UNORM;
|
return PIPE_FORMAT_L8A8_UNORM;
|
||||||
case PIPE_FORMAT_R8G8B8_SRGB:
|
case PIPE_FORMAT_R8G8B8_SRGB:
|
||||||
|
|
|
@ -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(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_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(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(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)},
|
{PIPE_FORMAT_L8A8_SRGB, PACKED_1x16(0xffff), PACKED_1x16(0x00ff), UNPACKED_1x1(1.0, 1.0, 1.0, 0.0)},
|
||||||
|
|
|
@ -370,6 +370,7 @@ static const struct vgpu10_format_entry format_conversion_table[] =
|
||||||
{ PIPE_FORMAT_A1B5G5R5_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
{ PIPE_FORMAT_A1B5G5R5_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
||||||
{ PIPE_FORMAT_X1B5G5R5_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
{ PIPE_FORMAT_X1B5G5R5_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
||||||
{ PIPE_FORMAT_A4B4G4R4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
{ PIPE_FORMAT_A4B4G4R4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
||||||
|
{ PIPE_FORMAT_R8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -396,6 +396,8 @@ enum pipe_format {
|
||||||
PIPE_FORMAT_X1B5G5R5_UNORM = 310,
|
PIPE_FORMAT_X1B5G5R5_UNORM = 310,
|
||||||
PIPE_FORMAT_A4B4G4R4_UNORM = 311,
|
PIPE_FORMAT_A4B4G4R4_UNORM = 311,
|
||||||
|
|
||||||
|
PIPE_FORMAT_R8_SRGB = 312,
|
||||||
|
|
||||||
PIPE_FORMAT_COUNT
|
PIPE_FORMAT_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue