[Mesa-dev] [PATCH] vl/dri3: handle the case of different GPU

Michel Dänzer michel at daenzer.net
Thu Sep 8 06:23:52 UTC 2016


On 08/09/16 01:13 PM, Nayan Deshmukh wrote:
> On Thu, Sep 8, 2016 at 9:03 AM, Michel Dänzer <michel at daenzer.net
> <mailto:michel at daenzer.net>> wrote:
>     On 08/09/16 02:48 AM, Nayan Deshmukh wrote:
>     > use a linear buffer in case of back buffer
>     >
>     > Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com <mailto:nayan26deshmukh at gmail.com>>
> 
>     [...]
> 
>     > @@ -226,8 +227,13 @@ dri3_alloc_back_buffer(struct vl_dri3_screen *scrn)
>     >        goto close_fd;
>     >
>     >     memset(&templ, 0, sizeof(templ));
>     > +   if (scrn->is_different_gpu)
>     > +   templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW |
>     > +                PIPE_BIND_SCANOUT | PIPE_BIND_SHARED | PIPE_BIND_LINEAR;
>     > +   else
>     >     templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW |
>     >                  PIPE_BIND_SCANOUT | PIPE_BIND_SHARED;
> 
>     The indentation is wrong. Also, it would be better to make it something
>     like this:
> 
>        templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW |
>                     PIPE_BIND_SCANOUT | PIPE_BIND_SHARED;
>        if (scrn->is_different_gpu)
>           templ.bind |= PIPE_BIND_LINEAR;
> 
> 
>     However, as we discussed before, for various reasons it would probably
>     be better to create separate linear buffers instead of making all
>     buffers linear.
> 
> So should I maintain a single linear buffer and copy the back buffer to
> it before sending it via the present extension?  

It's better to create one linear buffer corresponding to each non-linear
buffer with contents to be presented. Otherwise the rendering GPU may
overwrite the linear buffer contents while the presentation GPU is still
reading from it, resulting in tearing-like artifacts.


> For this I need to have a linear buffer field in vl_dri3_buffer, right?

I guess so.


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


More information about the mesa-dev mailing list