[Mesa-dev] [PATCH] radeonsi: fix PIPE_FORMAT_R11G11B10_FLOAT handling
Marek Olšák
maraeo at gmail.com
Sat Apr 30 08:38:43 UTC 2016
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Fri, Apr 29, 2016 at 11:21 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> That format has first_non_void < 0. This fixes a regression in piglit
> arb_shader_image_load_store-semantics that was introduced by commit 76b8c5cc602,
> while hopefully still shutting Coverity up (and failing in a more obvious way
> if a similar error should re-appear).
> ---
> src/gallium/drivers/radeonsi/si_state.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
> index 1dd468b..16c941e 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -1760,18 +1760,18 @@ static uint32_t si_translate_buffer_dataformat(struct pipe_screen *screen,
> const struct util_format_description *desc,
> int first_non_void)
> {
> - if (first_non_void < 0)
> - return V_008F0C_BUF_DATA_FORMAT_INVALID;
> -
> - unsigned type = desc->channel[first_non_void].type;
> + unsigned type;
> int i;
>
> - if (type == UTIL_FORMAT_TYPE_FIXED)
> - return V_008F0C_BUF_DATA_FORMAT_INVALID;
> -
> if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT)
> return V_008F0C_BUF_DATA_FORMAT_10_11_11;
>
> + assert(first_non_void >= 0);
> + type = desc->channel[first_non_void].type;
> +
> + if (type == UTIL_FORMAT_TYPE_FIXED)
> + return V_008F0C_BUF_DATA_FORMAT_INVALID;
> +
> if (desc->nr_channels == 4 &&
> desc->channel[0].size == 10 &&
> desc->channel[1].size == 10 &&
> @@ -1837,9 +1837,11 @@ static uint32_t si_translate_buffer_numformat(struct pipe_screen *screen,
> const struct util_format_description *desc,
> int first_non_void)
> {
> - if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT || first_non_void < 0)
> + if (desc->format == PIPE_FORMAT_R11G11B10_FLOAT)
> return V_008F0C_BUF_NUM_FORMAT_FLOAT;
>
> + assert(first_non_void >= 0);
> +
> switch (desc->channel[first_non_void].type) {
> case UTIL_FORMAT_TYPE_SIGNED:
> if (desc->channel[first_non_void].normalized)
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list