<div dir="auto">Little additional note:<div dir="auto"><br></div><div dir="auto">This checks related to possible issue with such kind of supported format check in external code:</div><div dir="auto"><pre style="width:50em">----
for(int i=0; i<PIPE_FORMAT_COUNT + 10; i++) {
   pscreen->is_format_supported(pscreen, i, PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW);
   }
-----</pre><pre style="width:50em">When we have segfault with: 73, 78, 79, 80, 81, </pre><pre style="width:50em">86 (holes in enum pipe_format) and format value</pre><pre style="width:50em">bigger than PIPE_FORMAT_COUNT.</pre><br><div data-smartmail="gmail_signature" dir="auto"><br>Best regards,<br>                  Denis.</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sep 13, 2017 7:54 AM, "Денис Паук" <<a href="mailto:pauk.denis@gmail.com">pauk.denis@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Do you mean delete check in <span style="font-size:12.8px">u_format.c::</span><span style="font-size:12.8px"> util_format_<wbr>is_supported? Could you please explain more?</span><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 13, 2017 at 1:32 AM, Marek Olšák <span dir="ltr"><<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On Wed, Sep 13, 2017 at 12:31 AM, Marek Olšák <<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>> wrote:<br>
> I think we shouldn't be getting PIPE_FORMAT_COUNT in<br>
> is_format_supported in the first place, and therefore drivers don't<br>
> have to work around it.<br>
<br>
</span>Or any other invalid formats, for that matter.<br>
<span class="m_-3419963340478818305HOEnZb"><font color="#888888"><br>
Marek<br>
</font></span><div class="m_-3419963340478818305HOEnZb"><div class="m_-3419963340478818305h5"><br>
><br>
> Marek<br>
><br>
> On Tue, Sep 12, 2017 at 10:38 PM, Denis Pauk <<a href="mailto:pauk.denis@gmail.com" target="_blank">pauk.denis@gmail.com</a>> wrote:<br>
>> Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=102552" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/s<wbr>how_bug.cgi?id=102552</a><br>
>><br>
>> v2: Patch cleanup proposed by Nicolai Hähnle.<br>
>>     * deleted changes in si_translate_texformat.<br>
>><br>
>> Cc: Nicolai Hähnle <<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a>><br>
>> Cc: Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>><br>
>> ---<br>
>>  src/gallium/auxiliary/util/u_f<wbr>ormat.c        |  4 ++++<br>
>>  src/gallium/drivers/r600/r600_<wbr>state_common.c |  4 ++++<br>
>>  src/gallium/drivers/radeonsi/s<wbr>i_state.c      | 10 +++++++++-<br>
>>  3 files changed, 17 insertions(+), 1 deletion(-)<br>
>><br>
>> diff --git a/src/gallium/auxiliary/util/u<wbr>_format.c b/src/gallium/auxiliary/util/u<wbr>_format.c<br>
>> index 3d281905ce..a6d42a428d 100644<br>
>> --- a/src/gallium/auxiliary/util/u<wbr>_format.c<br>
>> +++ b/src/gallium/auxiliary/util/u<wbr>_format.c<br>
>> @@ -238,6 +238,10 @@ util_format_is_subsampled_422(<wbr>enum pipe_format format)<br>
>>  boolean<br>
>>  util_format_is_supported(enum pipe_format format, unsigned bind)<br>
>>  {<br>
>> +   if (format >= PIPE_FORMAT_COUNT) {<br>
>> +      return FALSE;<br>
>> +   }<br>
>> +<br>
>>     if (util_format_is_s3tc(format) && !util_format_s3tc_enabled) {<br>
>>        return FALSE;<br>
>>     }<br>
>> diff --git a/src/gallium/drivers/r600/r60<wbr>0_state_common.c b/src/gallium/drivers/r600/r60<wbr>0_state_common.c<br>
>> index c1bce8304b..1515c28091 100644<br>
>> --- a/src/gallium/drivers/r600/r60<wbr>0_state_common.c<br>
>> +++ b/src/gallium/drivers/r600/r60<wbr>0_state_common.c<br>
>> @@ -2284,6 +2284,8 @@ uint32_t r600_translate_texformat(struc<wbr>t pipe_screen *screen,<br>
>>                 format = PIPE_FORMAT_A4R4_UNORM;<br>
>><br>
>>         desc = util_format_description(format<wbr>);<br>
>> +       if (!desc)<br>
>> +               goto out_unknown;<br>
>><br>
>>         /* Depth and stencil swizzling is handled separately. */<br>
>>         if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) {<br>
>> @@ -2650,6 +2652,8 @@ uint32_t r600_translate_colorformat(enu<wbr>m chip_class chip, enum pipe_format forma<br>
>>         const struct util_format_description *desc = util_format_description(format<wbr>);<br>
>>         int channel = util_format_get_first_non_void<wbr>_channel(format);<br>
>>         bool is_float;<br>
>> +       if (!desc)<br>
>> +               return ~0U;<br>
>><br>
>>  #define HAS_SIZE(x,y,z,w) \<br>
>>         (desc->channel[0].size == (x) && desc->channel[1].size == (y) && \<br>
>> diff --git a/src/gallium/drivers/radeonsi<wbr>/si_state.c b/src/gallium/drivers/radeonsi<wbr>/si_state.c<br>
>> index ee070107fd..f7ee24bdc6 100644<br>
>> --- a/src/gallium/drivers/radeonsi<wbr>/si_state.c<br>
>> +++ b/src/gallium/drivers/radeonsi<wbr>/si_state.c<br>
>> @@ -1292,6 +1292,8 @@ static void si_emit_db_render_state(struct si_context *sctx, struct r600_atom *s<br>
>>  static uint32_t si_translate_colorformat(enum pipe_format format)<br>
>>  {<br>
>>         const struct util_format_description *desc = util_format_description(format<wbr>);<br>
>> +       if (!desc)<br>
>> +               return V_028C70_COLOR_INVALID;<br>
>><br>
>>  #define HAS_SIZE(x,y,z,w) \<br>
>>         (desc->channel[0].size == (x) && desc->channel[1].size == (y) && \<br>
>> @@ -1796,7 +1798,11 @@ static unsigned si_tex_dim(struct si_screen *sscreen, struct r600_texture *rtex,<br>
>><br>
>>  static bool si_is_sampler_format_supported<wbr>(struct pipe_screen *screen, enum pipe_format format)<br>
>>  {<br>
>> -       return si_translate_texformat(screen, format, util_format_description(format<wbr>),<br>
>> +       struct util_format_description *desc = util_format_description(format<wbr>);<br>
>> +       if (!desc)<br>
>> +               return false;<br>
>> +<br>
>> +       return si_translate_texformat(screen, format, desc,<br>
>>                                       util_format_get_first_non_voi<wbr>d_channel(format)) != ~0U;<br>
>>  }<br>
>><br>
>> @@ -1925,6 +1931,8 @@ static unsigned si_is_vertex_format_supported(<wbr>struct pipe_screen *screen,<br>
>>                           PIPE_BIND_VERTEX_BUFFER)) == 0);<br>
>><br>
>>         desc = util_format_description(format<wbr>);<br>
>> +       if (!desc)<br>
>> +               return 0;<br>
>><br>
>>         /* There are no native 8_8_8 or 16_16_16 data formats, and we currently<br>
>>          * select 8_8_8_8 and 16_16_16_16 instead. This works reasonably well<br>
>> --<br>
>> 2.14.1<br>
>><br>
>> ______________________________<wbr>_________________<br>
>> mesa-dev mailing list<br>
>> <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
>> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_-3419963340478818305gmail_signature" data-smartmail="gmail_signature">Best regards,<br>                  Denis.</div>
</div></div>
</blockquote></div></div>