Am 08.09.2016 um 08:23 schrieb Michel Dänzer:
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.
That approach isn't necessary. VDPAU has functions to query if an output
surface is still displayed or not.
If the application starts to render into a buffer while it is still
being displayed tearing-like artifacts are the expected result.
Additional to that I've made the VDPAU output surfaces linear a while
ago anyway, because it showed that tiling actually wasn't beneficial in
this use case (a single quad rendered over the whole texture).
Regards,
Christian.
For this I need to have a linear buffer field in vl_dri3_buffer, right?
I guess so.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev