Module: Mesa
Branch: master
Commit: 514db90448ece28f6acaffea6358c715c47b359a
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=514db90448ece28f6acaffea6358c715c47b359a

Author: Eric Anholt <e...@anholt.net>
Date:   Fri Oct 13 13:11:15 2017 -0700

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.

---

 src/broadcom/cle/v3d_packet_v33.xml   | 23 +++++++++++++++
 src/gallium/drivers/vc5/vc5_formats.c | 55 ++++++++++++++++++-----------------
 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 165e489d4c..7633ff6f3b 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 92b88ef0e0..0c6b6fa315 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),

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to