aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2017-10-13 13:11:15 -0700
committerEric Anholt <[email protected]>2017-11-19 10:12:30 -0800
commit514db90448ece28f6acaffea6358c715c47b359a (patch)
tree07c58fde34d54aeb90445f6b8ec6bf7f89c5e960
parent65ae4527d928d12dff349680e35469f9503c7f08 (diff)
broadcom/vc5: Fix up integer texture handling.
The original spec I had didn't expose integer textures and suggested that you use unfiltered floats. Now there are proper formats for them. Fixes 16- and 32-bit texwrap integer tests in piglit, and dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0.rgb10_a2ui.
-rw-r--r--src/broadcom/cle/v3d_packet_v33.xml23
-rw-r--r--src/gallium/drivers/vc5/vc5_formats.c55
2 files changed, 51 insertions, 27 deletions
diff --git a/src/broadcom/cle/v3d_packet_v33.xml b/src/broadcom/cle/v3d_packet_v33.xml
index 165e489d4cd..7633ff6f3b0 100644
--- a/src/broadcom/cle/v3d_packet_v33.xml
+++ b/src/broadcom/cle/v3d_packet_v33.xml
@@ -939,5 +939,28 @@
<value name="Texture Data Format ASTC_10x10" value="75"/>
<value name="Texture Data Format ASTC_12x10" value="76"/>
<value name="Texture Data Format ASTC_12x12" value="77"/>
+
+ <value name="Texture Data Format R8I" value="96"/>
+ <value name="Texture Data Format R8UI" value="97"/>
+ <value name="Texture Data Format RG8I" value="98"/>
+ <value name="Texture Data Format RG8UI" value="99"/>
+ <value name="Texture Data Format RGBA8I" value="100"/>
+ <value name="Texture Data Format RGBA8UI" value="101"/>
+
+ <value name="Texture Data Format R16I" value="102"/>
+ <value name="Texture Data Format R16UI" value="103"/>
+ <value name="Texture Data Format RG16I" value="104"/>
+ <value name="Texture Data Format RG16UI" value="105"/>
+ <value name="Texture Data Format RGBA16I" value="106"/>
+ <value name="Texture Data Format RGBA16UI" value="107"/>
+
+ <value name="Texture Data Format R32I" value="108"/>
+ <value name="Texture Data Format R32UI" value="109"/>
+ <value name="Texture Data Format RG32I" value="110"/>
+ <value name="Texture Data Format RG32UI" value="111"/>
+ <value name="Texture Data Format RGBA32I" value="112"/>
+ <value name="Texture Data Format RGBA32UI" value="113"/>
+ <value name="Texture Data Format RGB10_A2UI" value="114"/>
+
</enum>
</vcxml>
diff --git a/src/gallium/drivers/vc5/vc5_formats.c b/src/gallium/drivers/vc5/vc5_formats.c
index 92b88ef0e00..0c6b6fa3157 100644
--- a/src/gallium/drivers/vc5/vc5_formats.c
+++ b/src/gallium/drivers/vc5/vc5_formats.c
@@ -107,6 +107,7 @@ static const struct vc5_format vc5_format_table[] = {
FORMAT(R8G8B8A8_SNORM, NO, RGBA8_SNORM, SWIZ_XYZW, 16, 0),
FORMAT(R8G8B8X8_SNORM, NO, RGBA8_SNORM, SWIZ_XYZ1, 16, 0),
FORMAT(R10G10B10A2_UNORM, RGB10_A2, RGB10_A2, SWIZ_XYZW, 16, 0),
+ FORMAT(B10G10R10A2_UINT, RGB10_A2UI, RGB10_A2UI, SWIZ_ZYXW, 16, 0),
FORMAT(B4G4R4A4_UNORM, ABGR4444, RGBA4, SWIZ_YZWX, 16, 0),
FORMAT(B4G4R4X4_UNORM, ABGR4444, RGBA4, SWIZ_YZW1, 16, 0),
@@ -150,33 +151,33 @@ static const struct vc5_format vc5_format_table[] = {
FORMAT(I8_UNORM, NO, R8, SWIZ_XXXX, 16, 0),
FORMAT(L8A8_UNORM, NO, RG8, SWIZ_XXXY, 16, 0),
- FORMAT(R8_SINT, R8I, S8, SWIZ_X001, 16, 0),
- FORMAT(R8_UINT, R8UI, S8, SWIZ_X001, 16, 0),
- FORMAT(R8G8_SINT, RG8I, S16, SWIZ_XY01, 16, 0),
- FORMAT(R8G8_UINT, RG8UI, S16, SWIZ_XY01, 16, 0),
- FORMAT(R8G8B8A8_SINT, RGBA8I, R32F, SWIZ_XYZW, 16, 0),
- FORMAT(R8G8B8A8_UINT, RGBA8UI, R32F, SWIZ_XYZW, 16, 0),
-
- FORMAT(R16_SINT, R16I, S16, SWIZ_X001, 16, 0),
- FORMAT(R16_UINT, R16UI, S16, SWIZ_X001, 16, 0),
- FORMAT(R16G16_SINT, RG16I, R32F, SWIZ_XY01, 16, 0),
- FORMAT(R16G16_UINT, RG16UI, R32F, SWIZ_XY01, 16, 0),
- FORMAT(R16G16B16A16_SINT, RGBA16I, RG32F, SWIZ_XYZW, 16, 0),
- FORMAT(R16G16B16A16_UINT, RGBA16UI, RG32F, SWIZ_XYZW, 16, 0),
-
- FORMAT(R32_SINT, R32I, R32F, SWIZ_X001, 16, 0),
- FORMAT(R32_UINT, R32UI, R32F, SWIZ_X001, 16, 0),
- FORMAT(R32G32_SINT, RG32I, RG32F, SWIZ_XY01, 16, 0),
- FORMAT(R32G32_UINT, RG32UI, RG32F, SWIZ_XY01, 16, 0),
- FORMAT(R32G32B32A32_SINT, RGBA32I, RGBA32F, SWIZ_XYZW, 16, 0),
- FORMAT(R32G32B32A32_UINT, RGBA32UI, RGBA32F, SWIZ_XYZW, 16, 0),
-
- FORMAT(A8_SINT, R8I, S8, SWIZ_000X, 16, 0),
- FORMAT(A8_UINT, R8UI, S8, SWIZ_000X, 16, 0),
- FORMAT(A16_SINT, R16I, S16, SWIZ_000X, 16, 0),
- FORMAT(A16_UINT, R16UI, S16, SWIZ_000X, 16, 0),
- FORMAT(A32_SINT, R32I, R32F, SWIZ_000X, 16, 0),
- FORMAT(A32_UINT, R32UI, R32F, SWIZ_000X, 16, 0),
+ FORMAT(R8_SINT, R8I, R8I, SWIZ_X001, 16, 0),
+ FORMAT(R8_UINT, R8UI, R8UI, SWIZ_X001, 16, 0),
+ FORMAT(R8G8_SINT, RG8I, RG8I, SWIZ_XY01, 16, 0),
+ FORMAT(R8G8_UINT, RG8UI, RG8UI, SWIZ_XY01, 16, 0),
+ FORMAT(R8G8B8A8_SINT, RGBA8I, RGBA8I, SWIZ_XYZW, 16, 0),
+ FORMAT(R8G8B8A8_UINT, RGBA8UI, RGBA8UI, SWIZ_XYZW, 16, 0),
+
+ FORMAT(R16_SINT, R16I, R16I, SWIZ_X001, 16, 0),
+ FORMAT(R16_UINT, R16UI, R16UI, SWIZ_X001, 16, 0),
+ FORMAT(R16G16_SINT, RG16I, R16I, SWIZ_XY01, 16, 0),
+ FORMAT(R16G16_UINT, RG16UI, R16UI, SWIZ_XY01, 16, 0),
+ FORMAT(R16G16B16A16_SINT, RGBA16I, RGBA16I, SWIZ_XYZW, 16, 0),
+ FORMAT(R16G16B16A16_UINT, RGBA16UI, RGBA16UI, SWIZ_XYZW, 16, 0),
+
+ FORMAT(R32_SINT, R32I, R32I, SWIZ_X001, 32, 1),
+ FORMAT(R32_UINT, R32UI, R32UI, SWIZ_X001, 32, 1),
+ FORMAT(R32G32_SINT, RG32I, RG32I, SWIZ_XY01, 32, 2),
+ FORMAT(R32G32_UINT, RG32UI, RG32UI, SWIZ_XY01, 32, 2),
+ FORMAT(R32G32B32A32_SINT, RGBA32I, RGBA32I, SWIZ_XYZW, 32, 4),
+ FORMAT(R32G32B32A32_UINT, RGBA32UI, RGBA32UI, SWIZ_XYZW, 32, 4),
+
+ FORMAT(A8_SINT, R8I, R8I, SWIZ_000X, 16, 0),
+ FORMAT(A8_UINT, R8UI, R8UI, SWIZ_000X, 16, 0),
+ FORMAT(A16_SINT, R16I, R16I, SWIZ_000X, 16, 0),
+ FORMAT(A16_UINT, R16UI, R16UI, SWIZ_000X, 16, 0),
+ FORMAT(A32_SINT, R32I, R32I, SWIZ_000X, 32, 1),
+ FORMAT(A32_UINT, R32UI, R32UI, SWIZ_000X, 32, 1),
FORMAT(R11G11B10_FLOAT, R11F_G11F_B10F, R11F_G11F_B10F, SWIZ_XYZW, 16, 0),
FORMAT(R9G9B9E5_FLOAT, NO, RGB9_E5, SWIZ_XYZW, 16, 0),