freedreno/a4xx: add 16-bit unorm/snorm format texturing/rendering
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 20 Nov 2015 15:40:59 +0000 (10:40 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sat, 21 Nov 2015 00:46:21 +0000 (19:46 -0500)
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/freedreno/a4xx/a4xx.xml.h
src/gallium/drivers/freedreno/a4xx/fd4_format.c

index 82c19b90b7d7815fd3c63db1275e69f4c416a6e1..cc48cdc4c6112e06f4d788226dff4fb228f68142 100644 (file)
@@ -52,6 +52,8 @@ enum a4xx_color_fmt {
        RB4_R8G8_SNORM = 16,
        RB4_R8G8_UINT = 17,
        RB4_R8G8_SINT = 18,
+       RB4_R16_UNORM = 19,
+       RB4_R16_SNORM = 20,
        RB4_R16_FLOAT = 21,
        RB4_R16_UINT = 22,
        RB4_R16_SINT = 23,
@@ -63,12 +65,16 @@ enum a4xx_color_fmt {
        RB4_R10G10B10A2_UNORM = 31,
        RB4_R10G10B10A2_UINT = 34,
        RB4_R11G11B10_FLOAT = 39,
+       RB4_R16G16_UNORM = 40,
+       RB4_R16G16_SNORM = 41,
        RB4_R16G16_FLOAT = 42,
        RB4_R16G16_UINT = 43,
        RB4_R16G16_SINT = 44,
        RB4_R32_FLOAT = 45,
        RB4_R32_UINT = 46,
        RB4_R32_SINT = 47,
+       RB4_R16G16B16A16_UNORM = 52,
+       RB4_R16G16B16A16_SNORM = 53,
        RB4_R16G16B16A16_FLOAT = 54,
        RB4_R16G16B16A16_UINT = 55,
        RB4_R16G16B16A16_SINT = 56,
@@ -172,6 +178,12 @@ enum a4xx_tex_fmt {
        TFMT4_8_SINT = 7,
        TFMT4_8_8_SINT = 17,
        TFMT4_8_8_8_8_SINT = 31,
+       TFMT4_16_UNORM = 18,
+       TFMT4_16_16_UNORM = 38,
+       TFMT4_16_16_16_16_UNORM = 51,
+       TFMT4_16_SNORM = 19,
+       TFMT4_16_16_SNORM = 39,
+       TFMT4_16_16_16_16_SNORM = 52,
        TFMT4_16_UINT = 21,
        TFMT4_16_16_UINT = 41,
        TFMT4_16_16_16_16_UINT = 54,
index d109f36b53cb3d670bd5e3f07b2c47b5d89b84bd..8eeeb96a3951d4eae1b830fc3d7c0b1a99d044bc 100644 (file)
@@ -99,20 +99,26 @@ static struct fd4_format formats[PIPE_FORMAT_COUNT] = {
        _T(S8_UINT,    8_UINT,  R8_UNORM, WZYX),
 
        /* 16-bit */
-       V_(R16_UNORM,   16_UNORM, NONE,     WZYX),
-       V_(R16_SNORM,   16_SNORM, NONE,     WZYX),
-       VT(R16_UINT,    16_UINT,  R16_UINT, WZYX),
-       VT(R16_SINT,    16_SINT,  R16_SINT, WZYX),
-       V_(R16_USCALED, 16_UINT,  NONE,     WZYX),
-       V_(R16_SSCALED, 16_UINT,  NONE,     WZYX),
-       VT(R16_FLOAT,   16_FLOAT, R16_FLOAT,WZYX),
-
-       _T(A16_UINT,    16_UINT,  NONE,     WZYX),
-       _T(A16_SINT,    16_SINT,  NONE,     WZYX),
-       _T(L16_UINT,    16_UINT,  NONE,     WZYX),
-       _T(L16_SINT,    16_SINT,  NONE,     WZYX),
-       _T(I16_UINT,    16_UINT,  NONE,     WZYX),
-       _T(I16_SINT,    16_SINT,  NONE,     WZYX),
+       VT(R16_UNORM,   16_UNORM, R16_UNORM, WZYX),
+       VT(R16_SNORM,   16_SNORM, R16_SNORM, WZYX),
+       VT(R16_UINT,    16_UINT,  R16_UINT,  WZYX),
+       VT(R16_SINT,    16_SINT,  R16_SINT,  WZYX),
+       V_(R16_USCALED, 16_UINT,  NONE,      WZYX),
+       V_(R16_SSCALED, 16_UINT,  NONE,      WZYX),
+       VT(R16_FLOAT,   16_FLOAT, R16_FLOAT, WZYX),
+
+       _T(A16_UNORM,   16_UNORM, NONE,      WZYX),
+       _T(A16_SNORM,   16_SNORM, NONE,      WZYX),
+       _T(A16_UINT,    16_UINT,  NONE,      WZYX),
+       _T(A16_SINT,    16_SINT,  NONE,      WZYX),
+       _T(L16_UNORM,   16_UNORM, NONE,      WZYX),
+       _T(L16_SNORM,   16_SNORM, NONE,      WZYX),
+       _T(L16_UINT,    16_UINT,  NONE,      WZYX),
+       _T(L16_SINT,    16_SINT,  NONE,      WZYX),
+       _T(I16_UNORM,   16_UNORM, NONE,      WZYX),
+       _T(I16_SNORM,   16_SNORM, NONE,      WZYX),
+       _T(I16_UINT,    16_UINT,  NONE,      WZYX),
+       _T(I16_SINT,    16_SINT,  NONE,      WZYX),
 
        VT(R8G8_UNORM,   8_8_UNORM, R8G8_UNORM, WZYX),
        VT(R8G8_SNORM,   8_8_SNORM, R8G8_SNORM, WZYX),
@@ -151,16 +157,18 @@ static struct fd4_format formats[PIPE_FORMAT_COUNT] = {
        _T(I32_UINT,    32_UINT,  NONE,     WZYX),
        _T(I32_SINT,    32_SINT,  NONE,     WZYX),
 
-       V_(R16G16_UNORM,   16_16_UNORM, NONE,        WZYX),
-       V_(R16G16_SNORM,   16_16_SNORM, NONE,        WZYX),
-       VT(R16G16_UINT,    16_16_UINT,  R16G16_UINT, WZYX),
-       VT(R16G16_SINT,    16_16_SINT,  R16G16_SINT, WZYX),
-       V_(R16G16_USCALED, 16_16_UINT,  NONE,        WZYX),
-       V_(R16G16_SSCALED, 16_16_SINT,  NONE,        WZYX),
-       VT(R16G16_FLOAT,   16_16_FLOAT, R16G16_FLOAT,WZYX),
+       VT(R16G16_UNORM,   16_16_UNORM, R16G16_UNORM, WZYX),
+       VT(R16G16_SNORM,   16_16_SNORM, R16G16_SNORM, WZYX),
+       VT(R16G16_UINT,    16_16_UINT,  R16G16_UINT,  WZYX),
+       VT(R16G16_SINT,    16_16_SINT,  R16G16_SINT,  WZYX),
+       V_(R16G16_USCALED, 16_16_UINT,  NONE,         WZYX),
+       V_(R16G16_SSCALED, 16_16_SINT,  NONE,         WZYX),
+       VT(R16G16_FLOAT,   16_16_FLOAT, R16G16_FLOAT, WZYX),
 
-       _T(L16A16_UINT,    16_16_UINT,  NONE,        WZYX),
-       _T(L16A16_SINT,    16_16_SINT,  NONE,        WZYX),
+       _T(L16A16_UNORM,   16_16_UNORM, NONE,         WZYX),
+       _T(L16A16_SNORM,   16_16_SNORM, NONE,         WZYX),
+       _T(L16A16_UINT,    16_16_UINT,  NONE,         WZYX),
+       _T(L16A16_SINT,    16_16_SINT,  NONE,         WZYX),
 
        VT(R8G8B8A8_UNORM,   8_8_8_8_UNORM, R8G8B8A8_UNORM, WZYX),
        _T(R8G8B8X8_UNORM,   8_8_8_8_UNORM, R8G8B8A8_UNORM, WZYX),
@@ -213,8 +221,10 @@ static struct fd4_format formats[PIPE_FORMAT_COUNT] = {
        V_(R16G16B16_FLOAT,   16_16_16_FLOAT, NONE, WZYX),
 
        /* 64-bit */
-       V_(R16G16B16A16_UNORM,   16_16_16_16_UNORM, NONE,               WZYX),
-       V_(R16G16B16A16_SNORM,   16_16_16_16_SNORM, NONE,               WZYX),
+       VT(R16G16B16A16_UNORM,   16_16_16_16_UNORM, R16G16B16A16_UNORM, WZYX),
+       VT(R16G16B16X16_UNORM,   16_16_16_16_UNORM, R16G16B16A16_UNORM, WZYX),
+       VT(R16G16B16A16_SNORM,   16_16_16_16_SNORM, R16G16B16A16_SNORM, WZYX),
+       VT(R16G16B16X16_SNORM,   16_16_16_16_SNORM, R16G16B16A16_SNORM, WZYX),
        VT(R16G16B16A16_UINT,    16_16_16_16_UINT,  R16G16B16A16_UINT,  WZYX),
        _T(R16G16B16X16_UINT,    16_16_16_16_UINT,  R16G16B16A16_UINT,  WZYX),
        VT(R16G16B16A16_SINT,    16_16_16_16_SINT,  R16G16B16A16_SINT,  WZYX),