Denis, this looks like a good candidate to nominate for inclusion in
the 17.2 stable queue.

What do you think?

On Tue, 2017-09-12 at 23:38 +0300, Denis Pauk wrote:
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102552
> 
> v2: Patch cleanup proposed by Nicolai Hähnle.
>     * deleted changes in si_translate_texformat.
> 
> Cc: Nicolai Hähnle <nhaeh...@gmail.com>
> Cc: Ilia Mirkin <imir...@alum.mit.edu>
> ---
>  src/gallium/auxiliary/util/u_format.c        |  4 ++++
>  src/gallium/drivers/r600/r600_state_common.c |  4 ++++
>  src/gallium/drivers/radeonsi/si_state.c      | 10 +++++++++-
>  3 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/src/gallium/auxiliary/util/u_format.c 
> b/src/gallium/auxiliary/util/u_format.c
> index 3d281905ce..a6d42a428d 100644
> --- a/src/gallium/auxiliary/util/u_format.c
> +++ b/src/gallium/auxiliary/util/u_format.c
> @@ -238,6 +238,10 @@ util_format_is_subsampled_422(enum pipe_format format)
>  boolean
>  util_format_is_supported(enum pipe_format format, unsigned bind)
>  {
> +   if (format >= PIPE_FORMAT_COUNT) {
> +      return FALSE;
> +   }
> +
>     if (util_format_is_s3tc(format) && !util_format_s3tc_enabled) {
>        return FALSE;
>     }
> diff --git a/src/gallium/drivers/r600/r600_state_common.c 
> b/src/gallium/drivers/r600/r600_state_common.c
> index c1bce8304b..1515c28091 100644
> --- a/src/gallium/drivers/r600/r600_state_common.c
> +++ b/src/gallium/drivers/r600/r600_state_common.c
> @@ -2284,6 +2284,8 @@ uint32_t r600_translate_texformat(struct pipe_screen 
> *screen,
>               format = PIPE_FORMAT_A4R4_UNORM;
>  
>       desc = util_format_description(format);
> +     if (!desc)
> +             goto out_unknown;
>  
>       /* Depth and stencil swizzling is handled separately. */
>       if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) {
> @@ -2650,6 +2652,8 @@ uint32_t r600_translate_colorformat(enum chip_class 
> chip, enum pipe_format forma
>       const struct util_format_description *desc = 
> util_format_description(format);
>       int channel = util_format_get_first_non_void_channel(format);
>       bool is_float;
> +     if (!desc)
> +             return ~0U;
>  
>  #define HAS_SIZE(x,y,z,w) \
>       (desc->channel[0].size == (x) && desc->channel[1].size == (y) && \
> diff --git a/src/gallium/drivers/radeonsi/si_state.c 
> b/src/gallium/drivers/radeonsi/si_state.c
> index ee070107fd..f7ee24bdc6 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -1292,6 +1292,8 @@ static void si_emit_db_render_state(struct si_context 
> *sctx, struct r600_atom *s
>  static uint32_t si_translate_colorformat(enum pipe_format format)
>  {
>       const struct util_format_description *desc = 
> util_format_description(format);
> +     if (!desc)
> +             return V_028C70_COLOR_INVALID;
>  
>  #define HAS_SIZE(x,y,z,w) \
>       (desc->channel[0].size == (x) && desc->channel[1].size == (y) && \
> @@ -1796,7 +1798,11 @@ static unsigned si_tex_dim(struct si_screen *sscreen, 
> struct r600_texture *rtex,
>  
>  static bool si_is_sampler_format_supported(struct pipe_screen *screen, enum 
> pipe_format format)
>  {
> -     return si_translate_texformat(screen, format, 
> util_format_description(format),
> +     struct util_format_description *desc = util_format_description(format);
> +     if (!desc)
> +             return false;
> +
> +     return si_translate_texformat(screen, format, desc,
>                                     
> util_format_get_first_non_void_channel(format)) != ~0U;
>  }
>  
> @@ -1925,6 +1931,8 @@ static unsigned si_is_vertex_format_supported(struct 
> pipe_screen *screen,
>                         PIPE_BIND_VERTEX_BUFFER)) == 0);
>  
>       desc = util_format_description(format);
> +     if (!desc)
> +             return 0;
>  
>       /* There are no native 8_8_8 or 16_16_16 data formats, and we currently
>        * select 8_8_8_8 and 16_16_16_16 instead. This works reasonably well
-- 
Br,

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

Reply via email to