[Mesa-dev] [PATCH] vdpau: flush the context before exporting the surface v2

Marek Olšák maraeo at gmail.com
Mon Jan 13 06:20:52 PST 2014


This patch doesn't fix the bug. :(

Marek

On Mon, Jan 13, 2014 at 2:55 PM, Christian König
<deathsimple at vodafone.de> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> Bugzilla:
> https://bugs.freedesktop.org/show_bug.cgi?id=73191
>
> When VL uploads vertex buffers, it uses PIPE_TRANSFER_DONTBLOCK, which always
> flushes the context in the winsys if the buffer being mapped is busy. Since
> I added handling of DISCARD_RANGE, DONTBLOCK has had no effect when combined
> with DISCARD_RANGE and I think the context isn't flushed anywhere else,
> so no commands are submitted to the GPU until the IB is full, which takes
> a lot of frames.
>
> Using DISCARD_RANGE is not the only way to trigger this bug. The other way
> is to reallocate the vertex buffer before every upload.
>
> BTW, I'm not sure if this is the right place for flushing, but it does fix
> the bug.
>
> v2 (chk): move the flush to the right place.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>  src/gallium/state_trackers/vdpau/output.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c
> index e4e1433..7ff4196 100644
> --- a/src/gallium/state_trackers/vdpau/output.c
> +++ b/src/gallium/state_trackers/vdpau/output.c
> @@ -736,6 +736,7 @@ struct pipe_resource *vlVdpOutputSurfaceGallium(VdpOutputSurface surface)
>
>     pipe_mutex_lock(vlsurface->device->mutex);
>     vlVdpResolveDelayedRendering(vlsurface->device, NULL, NULL);
> +   vlsurface->device->context->flush(vlsurface->device->context, NULL, 0);
>     pipe_mutex_unlock(vlsurface->device->mutex);
>
>     return vlsurface->surface->texture;
> --
> 1.8.1.2
>


More information about the mesa-dev mailing list