freedreno/a3xx: add sRBG texture support
authorRob Clark <robclark@freedesktop.org>
Sat, 17 May 2014 00:29:44 +0000 (20:29 -0400)
committerRob Clark <robclark@freedesktop.org>
Sat, 17 May 2014 00:48:40 +0000 (20:48 -0400)
That was easy.  Turns out it is just a matter of setting one bit.
Enable sampling from sRGB texture, and therefore enable GL 2.1 :-)

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/a3xx/fd3_texture.c
src/gallium/drivers/freedreno/a3xx/fd3_util.c

index d15cf379190abd7867ec6cc2309cbd2bd940f277..f9a5b8269180e1ca07f206a870f34e70c1d25172 100644 (file)
@@ -30,6 +30,7 @@
 #include "util/u_string.h"
 #include "util/u_memory.h"
 #include "util/u_inlines.h"
+#include "util/u_format.h"
 
 #include "fd3_texture.h"
 #include "fd3_util.h"
@@ -158,6 +159,10 @@ fd3_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
                        A3XX_TEX_CONST_0_MIPLVLS(miplevels) |
                        fd3_tex_swiz(cso->format, cso->swizzle_r, cso->swizzle_g,
                                                cso->swizzle_b, cso->swizzle_a);
+
+       if (util_format_is_srgb(cso->format))
+               so->texconst0 |= A3XX_TEX_CONST_0_SRGB;
+
        so->texconst1 =
                        A3XX_TEX_CONST_1_FETCHSIZE(fd3_pipe2fetchsize(cso->format)) |
                        A3XX_TEX_CONST_1_WIDTH(prsc->width0) |
index baafc7831dcfe049f5b9b93f75475f1b856887ee..2cc8b8b5cedd06252117f21f46758e1de1134649 100644 (file)
@@ -235,6 +235,10 @@ fd3_pipe2tex(enum pipe_format format)
        case PIPE_FORMAT_B8G8R8X8_UNORM:
        case PIPE_FORMAT_R8G8B8A8_UNORM:
        case PIPE_FORMAT_R8G8B8X8_UNORM:
+       case PIPE_FORMAT_B8G8R8A8_SRGB:
+       case PIPE_FORMAT_B8G8R8X8_SRGB:
+       case PIPE_FORMAT_R8G8B8A8_SRGB:
+       case PIPE_FORMAT_R8G8B8X8_SRGB:
                return TFMT_NORM_UINT_8_8_8_8;
 
        case PIPE_FORMAT_Z24X8_UNORM:
@@ -275,6 +279,12 @@ fd3_pipe2fetchsize(enum pipe_format format)
 
        case PIPE_FORMAT_B8G8R8A8_UNORM:
        case PIPE_FORMAT_B8G8R8X8_UNORM:
+       case PIPE_FORMAT_R8G8B8A8_UNORM:
+       case PIPE_FORMAT_R8G8B8X8_UNORM:
+       case PIPE_FORMAT_B8G8R8A8_SRGB:
+       case PIPE_FORMAT_B8G8R8X8_SRGB:
+       case PIPE_FORMAT_R8G8B8A8_SRGB:
+       case PIPE_FORMAT_R8G8B8X8_SRGB:
        case PIPE_FORMAT_Z24X8_UNORM:
        case PIPE_FORMAT_Z24_UNORM_S8_UINT:
                return TFETCH_4_BYTE;