From: Nicolai Hähnle <nicolai.haeh...@amd.com>

Fixes dEQP-EGL.functional.image.modify.tex_rgb5_a1_tex_subimage_rgba8
---
 src/gallium/drivers/radeonsi/si_state.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 99c3ca36886..a86a3a83217 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -1499,20 +1499,22 @@ static uint32_t si_translate_colorformat(enum 
pipe_format format)
                                return V_028C70_COLOR_4_4_4_4;
                        case 8:
                                return V_028C70_COLOR_8_8_8_8;
                        case 16:
                                return V_028C70_COLOR_16_16_16_16;
                        case 32:
                                return V_028C70_COLOR_32_32_32_32;
                        }
                } else if (HAS_SIZE(5,5,5,1)) {
                        return V_028C70_COLOR_1_5_5_5;
+               } else if (HAS_SIZE(1,5,5,5)) {
+                       return V_028C70_COLOR_5_5_5_1;
                } else if (HAS_SIZE(10,10,10,2)) {
                        return V_028C70_COLOR_2_10_10_10;
                }
                break;
        }
        return V_028C70_COLOR_INVALID;
 }
 
 static uint32_t si_colorformat_endian_swap(uint32_t colorformat)
 {
@@ -1757,20 +1759,26 @@ static uint32_t si_translate_texformat(struct 
pipe_screen *screen,
                                return V_008F14_IMG_DATA_FORMAT_5_6_5;
                        }
                        goto out_unknown;
                case 4:
                        if (desc->channel[0].size == 5 &&
                            desc->channel[1].size == 5 &&
                            desc->channel[2].size == 5 &&
                            desc->channel[3].size == 1) {
                                return V_008F14_IMG_DATA_FORMAT_1_5_5_5;
                        }
+                       if (desc->channel[0].size == 1 &&
+                           desc->channel[1].size == 5 &&
+                           desc->channel[2].size == 5 &&
+                           desc->channel[3].size == 5) {
+                               return V_008F14_IMG_DATA_FORMAT_5_5_5_1;
+                       }
                        if (desc->channel[0].size == 10 &&
                            desc->channel[1].size == 10 &&
                            desc->channel[2].size == 10 &&
                            desc->channel[3].size == 2) {
                                return V_008F14_IMG_DATA_FORMAT_2_10_10_10;
                        }
                        goto out_unknown;
                }
                goto out_unknown;
        }
-- 
2.11.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to