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

Author: Ilia Mirkin <[email protected]>
Date:   Sat Nov 21 20:33:23 2015 -0500

freedreno/a4xx: add formats for ARB_texture_buffer_object_rgb32 support

Signed-off-by: Ilia Mirkin <[email protected]>

---

 src/gallium/drivers/freedreno/a4xx/a4xx.xml.h   |    3 +++
 src/gallium/drivers/freedreno/a4xx/fd4_format.c |    7 ++++---
 src/gallium/drivers/freedreno/a4xx/fd4_screen.c |    2 ++
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a4xx/a4xx.xml.h 
b/src/gallium/drivers/freedreno/a4xx/a4xx.xml.h
index e465334..a450379 100644
--- a/src/gallium/drivers/freedreno/a4xx/a4xx.xml.h
+++ b/src/gallium/drivers/freedreno/a4xx/a4xx.xml.h
@@ -204,6 +204,9 @@ enum a4xx_tex_fmt {
        TFMT4_32_FLOAT = 43,
        TFMT4_32_32_FLOAT = 56,
        TFMT4_32_32_32_32_FLOAT = 63,
+       TFMT4_32_32_32_FLOAT = 59,
+       TFMT4_32_32_32_UINT = 60,
+       TFMT4_32_32_32_SINT = 61,
        TFMT4_9_9_9_E5_FLOAT = 32,
        TFMT4_11_11_10_FLOAT = 37,
        TFMT4_DXT1 = 86,
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_format.c 
b/src/gallium/drivers/freedreno/a4xx/fd4_format.c
index ace5b3f..c240745 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_format.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_format.c
@@ -250,11 +250,11 @@ static struct fd4_format formats[PIPE_FORMAT_COUNT] = {
        _T(L32A32_SINT,    32_32_SINT,  NONE,        WZYX),
 
        /* 96-bit */
-       V_(R32G32B32_UINT,    32_32_32_UINT,  NONE, WZYX),
-       V_(R32G32B32_SINT,    32_32_32_SINT,  NONE, WZYX),
+       VT(R32G32B32_UINT,    32_32_32_UINT,  NONE, WZYX),
+       VT(R32G32B32_SINT,    32_32_32_SINT,  NONE, WZYX),
        V_(R32G32B32_USCALED, 32_32_32_UINT,  NONE, WZYX),
        V_(R32G32B32_SSCALED, 32_32_32_SINT,  NONE, WZYX),
-       V_(R32G32B32_FLOAT,   32_32_32_FLOAT, NONE, WZYX),
+       VT(R32G32B32_FLOAT,   32_32_32_FLOAT, NONE, WZYX),
        V_(R32G32B32_FIXED,   32_32_32_FIXED, NONE, WZYX),
 
        /* 128-bit */
@@ -384,6 +384,7 @@ fd4_pipe2fetchsize(enum pipe_format format)
        case 16:  return TFETCH4_2_BYTE;
        case 32:  return TFETCH4_4_BYTE;
        case 64:  return TFETCH4_8_BYTE;
+       case 96:  return TFETCH4_1_BYTE; /* Does this matter? */
        case 128: return TFETCH4_16_BYTE;
        default:
                debug_printf("Unknown block size for format %s: %d\n",
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_screen.c 
b/src/gallium/drivers/freedreno/a4xx/fd4_screen.c
index d8ea414..b2a69cc 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_screen.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_screen.c
@@ -57,6 +57,8 @@ fd4_screen_is_format_supported(struct pipe_screen *pscreen,
        }
 
        if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
+                       (target == PIPE_BUFFER ||
+                        util_format_get_blocksize(format) != 12) &&
                        (fd4_pipe2tex(format) != ~0)) {
                retval |= PIPE_BIND_SAMPLER_VIEW;
        }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to