r600g: add support for subsampled rgb formats
authorChristian König <deathsimple@vodafone.de>
Sat, 3 Mar 2012 11:48:30 +0000 (12:48 +0100)
committerChristian König <deathsimple@vodafone.de>
Fri, 9 Mar 2012 11:43:49 +0000 (12:43 +0100)
v2: r600 formats are msb first!

Signed-off-by: Christian König <deathsimple@vodafone.de>
src/gallium/drivers/r600/r600_texture.c

index 923efce59e64356426ea3a82291e27decccb6bdf..ce66117ed47eaf5bf4ce5acaac8769ae4bbccdb7 100644 (file)
@@ -1135,6 +1135,21 @@ uint32_t r600_translate_texformat(struct pipe_screen *screen,
                }
        }
 
+       if (desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED) {
+               switch (format) {
+               case PIPE_FORMAT_R8G8_B8G8_UNORM:
+               case PIPE_FORMAT_G8R8_B8R8_UNORM:
+                       result = FMT_GB_GR;
+                       goto out_word4;
+               case PIPE_FORMAT_G8R8_G8B8_UNORM:
+               case PIPE_FORMAT_R8G8_R8B8_UNORM:
+                       result = FMT_BG_RG;
+                       goto out_word4;
+               default:
+                       goto out_unknown;
+               }
+       }
+
        if (format == PIPE_FORMAT_R9G9B9E5_FLOAT) {
                result = FMT_5_9_9_9_SHAREDEXP;
                goto out_word4;