[Mesa-dev] [PATCH 2/3] st/vdpau: use dri3 to direclty send the buffer to X
Nayan Deshmukh
nayan26deshmukh at gmail.com
Mon Oct 24 13:55:16 UTC 2016
this avoids an extra copy which occurs in case of dri2
Suggested-by: Christian König <christian.koenig at amd.com>
Signed-off-by: Nayan Deshmukh <nayan26deshmukh at gmail.com>
---
src/gallium/state_trackers/vdpau/presentation.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/gallium/state_trackers/vdpau/presentation.c b/src/gallium/state_trackers/vdpau/presentation.c
index f35d73a..9051b49 100644
--- a/src/gallium/state_trackers/vdpau/presentation.c
+++ b/src/gallium/state_trackers/vdpau/presentation.c
@@ -231,12 +231,16 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
vscreen = pq->device->vscreen;
pipe_mutex_lock(pq->device->mutex);
+#if defined(HAVE_DRI3)
+ vscreen->set_output_texture(vscreen, surf->surface->texture, clip_width, clip_height);
+#endif
tex = vscreen->texture_from_drawable(vscreen, (void *)pq->drawable);
if (!tex) {
pipe_mutex_unlock(pq->device->mutex);
return VDP_STATUS_INVALID_HANDLE;
}
+#if !defined(HAVE_DRI3)
dirty_area = vscreen->get_dirty_area(vscreen);
memset(&surf_templ, 0, sizeof(surf_templ));
@@ -269,6 +273,7 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
vl_compositor_set_dst_clip(cstate, &dst_clip);
vl_compositor_render(cstate, compositor, surf_draw, dirty_area, true);
}
+#endif
vscreen->set_next_timestamp(vscreen, earliest_presentation_time);
@@ -297,8 +302,10 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
framenum++;
}
+#if !defined(HAVE_DRI3)
pipe_resource_reference(&tex, NULL);
pipe_surface_reference(&surf_draw, NULL);
+#endif
pipe_mutex_unlock(pq->device->mutex);
return VDP_STATUS_OK;
--
2.7.4
More information about the mesa-dev
mailing list