On 08/09/16 01:13 PM, Nayan Deshmukh wrote: > On Thu, Sep 8, 2016 at 9:03 AM, Michel Dänzer <mic...@daenzer.net > <mailto:mic...@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 <nayan26deshm...@gmail.com > <mailto:nayan26deshm...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev