radeonsi: Handle more L/I/A format cases.
authorMichel Dänzer <michel.daenzer@amd.com>
Wed, 5 Sep 2012 16:24:14 +0000 (18:24 +0200)
committerMichel Dänzer <michel@daenzer.net>
Thu, 6 Sep 2012 14:48:16 +0000 (16:48 +0200)
Fixes piglit fbo-generatemipmap-formats.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
src/gallium/drivers/radeonsi/si_state.c

index 762887d224e6b0dcf96f76f2bf40cf4357c1d6a5..e3e4f0e4f35e669028ba0bb8c9bfddd04d8871ff 100644 (file)
@@ -715,6 +715,9 @@ static uint32_t si_translate_colorformat(enum pipe_format format)
        case PIPE_FORMAT_R16_SINT:
        case PIPE_FORMAT_R16_FLOAT:
        case PIPE_FORMAT_R16G16_FLOAT:
+       case PIPE_FORMAT_L16_UNORM:
+       case PIPE_FORMAT_I16_UNORM:
+       case PIPE_FORMAT_A16_UNORM:
                return V_028C70_COLOR_16;
 
        /* 32-bit buffers. */
@@ -759,6 +762,7 @@ static uint32_t si_translate_colorformat(enum pipe_format format)
        case PIPE_FORMAT_Z32_FLOAT:
                return V_028C70_COLOR_32;
 
+       case PIPE_FORMAT_L16A16_UNORM:
        case PIPE_FORMAT_R16G16_SSCALED:
        case PIPE_FORMAT_R16G16_UNORM:
        case PIPE_FORMAT_R16G16_UINT:
@@ -863,12 +867,17 @@ static uint32_t si_translate_colorswap(enum pipe_format format)
        case PIPE_FORMAT_R8G8_SINT:
                return V_028C70_SWAP_STD;
 
+       case PIPE_FORMAT_I16_UNORM:
+       case PIPE_FORMAT_L16_UNORM:
        case PIPE_FORMAT_R16_UNORM:
        case PIPE_FORMAT_R16_UINT:
        case PIPE_FORMAT_R16_SINT:
        case PIPE_FORMAT_R16_FLOAT:
                return V_028C70_SWAP_STD;
 
+       case PIPE_FORMAT_A16_UNORM:
+               return V_028C70_SWAP_ALT_REV;
+
        /* 32-bit buffers. */
        case PIPE_FORMAT_A8B8G8R8_SRGB:
                return V_028C70_SWAP_STD_REV;
@@ -924,6 +933,9 @@ static uint32_t si_translate_colorswap(enum pipe_format format)
        case PIPE_FORMAT_R16G16_SINT:
                return V_028C70_SWAP_STD;
 
+       case PIPE_FORMAT_L16A16_UNORM:
+               return V_028C70_SWAP_ALT;
+
        /* 64-bit buffers. */
        case PIPE_FORMAT_R32G32_FLOAT:
        case PIPE_FORMAT_R32G32_UINT:
@@ -1155,8 +1167,10 @@ static uint32_t si_translate_texformat(struct pipe_screen *screen,
        switch (desc->channel[first_non_void].size) {
        case 4:
                switch (desc->nr_channels) {
+#if 0 /* Not supported for render targets */
                case 2:
                        return V_008F14_IMG_DATA_FORMAT_4_4;
+#endif
                case 4:
                        return V_008F14_IMG_DATA_FORMAT_4_4_4_4;
                }