[Mesa-dev] [PATCH 02/17] ac/surface: don't set the display flag for obviously unsupported cases

Michel Dänzer michel at daenzer.net
Mon Apr 9 08:26:31 UTC 2018


On 2018-04-06 07:14 PM, Marek Olšák wrote:
> On Fri, Apr 6, 2018 at 11:41 AM, Michel Dänzer <michel at daenzer.net> wrote:
> 
>> On 2018-04-06 03:25 PM, Marek Olšák wrote:
>>> On Thu, Apr 5, 2018, 3:09 AM Michel Dänzer <michel at daenzer.net> wrote:
>>>> On 2018-04-04 07:35 PM, Marek Olšák wrote:
>>>>> On Wed, Apr 4, 2018 at 9:01 AM, Michel Dänzer <michel at daenzer.net>
>>>> wrote:
>>>>>> On 2018-04-04 02:57 PM, Marek Olšák wrote:
>>>>>>> On Wed, Apr 4, 2018, 6:18 AM Michel Dänzer <michel at daenzer.net
>>>>>>> <mailto:michel at daenzer.net>> wrote:
>>>>>>>
>>>>>>>     On 2018-04-04 03:59 AM, Marek Olšák wrote:
>>>>>>>     > From: Marek Olšák <marek.olsak at amd.com <mailto:
>>>> marek.olsak at amd.com
>>>>>>>>
>>>>>>>     >
>>>>>>>     > This enables the tile swizzle for some cases of the displayable
>>>>>>>     micro mode,
>>>>>>>     > and it also fixes an addrlib assertion failure on Vega.
>>>>>>>     > ---
>>>>>>>     >  src/amd/common/ac_surface.c | 18 ++++++++++++++----
>>>>>>>     >  1 file changed, 14 insertions(+), 4 deletions(-)
>>>>>>>     >
>>>>>>>     > diff --git a/src/amd/common/ac_surface.c
>>>>>> b/src/amd/common/ac_surface.c
>>>>>>>     > index b294cd85259..2b20a553d51 100644
>>>>>>>     > --- a/src/amd/common/ac_surface.c
>>>>>>>     > +++ b/src/amd/common/ac_surface.c
>>>>>>>     > @@ -408,20 +408,29 @@ static unsigned
>>>>>>>     cik_get_macro_tile_index(struct radeon_surf *surf)
>>>>>>>     >       tileb = 8 * 8 * surf->bpe;
>>>>>>>     >       tileb = MIN2(surf->u.legacy.tile_split, tileb);
>>>>>>>     >
>>>>>>>     >       for (index = 0; tileb > 64; index++)
>>>>>>>     >               tileb >>= 1;
>>>>>>>     >
>>>>>>>     >       assert(index < 16);
>>>>>>>     >       return index;
>>>>>>>     >  }
>>>>>>>     >
>>>>>>>     > +static bool get_display_flag(const struct ac_surf_config
>>>> *config,
>>>>>>>     > +                          const struct radeon_surf *surf)
>>>>>>>     > +{
>>>>>>>     > +     return surf->flags & RADEON_SURF_SCANOUT &&
>>>>>>>     > +            !(surf->flags & RADEON_SURF_FMASK) &&
>>>>>>>     > +            config->info.samples <= 1 &&
>>>>>>>     > +            surf->bpe >= 4 && surf->bpe <= 8;
>>>>>>>
>>>>>>>     surf->bpe is the number of bytes used to store each pixel, right?
>>>> If
>>>>>> so,
>>>>>>>     this cannot exclude surf->bpe < 4, since 16 bpp and 8 bpp formats
>>>>>> can be
>>>>>>>     displayed.
>>>>>>>
>>>>>>>
>>>>>>> Sure, but what are the chances they will be displayed with the
>> current
>>>>>>> stack? GLX doesn't have 16bpp visuals for on-screen rendering.
>>>>>>
>>>>>> Maybe not when the X server runs at depth 24, but it can also run at
>>>>>> depths 8, 15 & 16, in which case displayable surfaces with bpe == 1
>> or 2
>>>>>> are needed even before GLX even comes into the picture.
>>>>>>
>>>>>
>>>>> OK. Let me ask differently. Do we wanna support displayable 8, 15, and
>> 16
>>>>> bpp?
>>>>
>>>> We do support it, it's not really a question of whether we want to
>>>> anymore. :)
>>>>
>>>>> Can we just say that we don't support those?
>>>>
>>>> I'm afraid we can't.
>>>>
>>>>
>>>> Which kind of surfaces are you trying to exclude like this? Maybe they
>>>> can be excluded in a different way.
>>>
>>> Currently just the MSAA resolve temporary destination buffer.
>>
>> Do those actually have surf->bpe < 4? Im not getting any hits with
>> glxgears -samples 8.
>>
> 
> The main purpose of the patch is to fix addrlib crashes on Vega when bpe ==
> 16. Everything else you see in the patch is just a bonus.

Then I'm confused what your last few posts in this thread were all about...


Anyway, with "surf->bpe >= 4" removed, this patch is

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list