[Mesa-dev] [PATCH v2] r600g: Fix ARB_texture_rgb10_a2ui support in big-endian

Oded Gabbay oded.gabbay at gmail.com
Mon Mar 7 08:33:52 UTC 2016


On Tue, Mar 1, 2016 at 2:11 PM, Oded Gabbay <oded.gabbay at gmail.com> wrote:
> This patch enables the correct detection of PIPE_FORMAT_R10G10B10A2_UINT
> and PIPE_FORMAT_B10G10R10A2_UINT formats in r600g in big-endian mode.
>
> Because the swapping doesn't happen on component boundaries for these
> formats, the GPU H/W needs to be configured differently for LE/BE.
> Therefore, we need to use a different color format for BE - V_0280A0_COLOR_10_10_10_2
>
> This enables support for ARB_texture_rgb10_a2ui, which otherwise is not
> detected as supported.
>
> Tested using piglit texwrap with GL_ARB_texture_rgb10_a2ui.
>
> v2:
>
> - Used the correct color format for R10G10B10A2 on
>   BE (V_0280A0_COLOR_10_10_10_2) to configure the GPU
>
> - Added detection of this color format in endian swap function
>
> - removed blank line
>
> Signed-off-by: Oded Gabbay <oded.gabbay at gmail.com>
> Cc: "11.1 11.2" <mesa-stable at lists.freedesktop.org>
> ---
>  src/gallium/drivers/r600/r600_state_common.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
> index aa3a085..53cf972 100644
> --- a/src/gallium/drivers/r600/r600_state_common.c
> +++ b/src/gallium/drivers/r600/r600_state_common.c
> @@ -2464,6 +2464,14 @@ uint32_t r600_translate_texformat(struct pipe_screen *screen,
>                                 result = FMT_2_10_10_10;
>                                 goto out_word4;
>                         }
> +                       if (R600_BIG_ENDIAN &&
> +                           desc->channel[0].size == 2 &&
> +                           desc->channel[1].size == 10 &&
> +                           desc->channel[2].size == 10 &&
> +                           desc->channel[3].size == 10) {
> +                               result = FMT_10_10_10_2;
> +                               goto out_word4;
> +                       }
>                         goto out_unknown;
>                 }
>                 goto out_unknown;
> @@ -2685,6 +2693,8 @@ uint32_t r600_translate_colorformat(enum chip_class chip, enum pipe_format forma
>                         return V_0280A0_COLOR_1_5_5_5;
>                 } else if (HAS_SIZE(10,10,10,2)) {
>                         return V_0280A0_COLOR_2_10_10_10;
> +               } else if (R600_BIG_ENDIAN && HAS_SIZE(2,10,10,10)) {
> +                       return V_0280A0_COLOR_10_10_10_2;
>                 }
>                 break;
>         }
> @@ -2717,6 +2727,7 @@ uint32_t r600_colorformat_endian_swap(uint32_t colorformat)
>                          */
>                         return ENDIAN_NONE;
>
> +               case V_0280A0_COLOR_10_10_10_2:
>                 case V_0280A0_COLOR_2_10_10_10:
>                 case V_0280A0_COLOR_8_24:
>                 case V_0280A0_COLOR_24_8:
> --
> 2.5.0
>

Hi Michel,
Please disregard this patch.
I'm going to fix BE issues methodically, as Marek suggested. Basically
removing all GL functionality (for debug) and testing the whole piglit
suite for GL 1.3 (lowest I could go), 1.4, ... and sending patches in
batches for each GL version.

Sorry for wasting your time.
Oded


More information about the mesa-dev mailing list