aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/vdpau/presentation.c
diff options
context:
space:
mode:
authorChristian König <[email protected]>2011-12-12 16:51:12 +0100
committerChristian König <[email protected]>2011-12-14 14:22:37 +0100
commit5d1de8bc7d83a20ed5ace7b408e7d3e1da7f9087 (patch)
treed2f60f012b11e82c3df3a583d3962b021ce79890 /src/gallium/state_trackers/vdpau/presentation.c
parent9e51c200a78b8be8be195e0d82d69e952afd1343 (diff)
st/vdpau: fix unwanted output scaling
vlVdpPresentationQueueDisplay shouldn't scale, so use size of destination surface as source rectangle. Based on work of Maarten Lankhorst <[email protected]> Signed-off-by: Christian König <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/vdpau/presentation.c')
-rw-r--r--src/gallium/state_trackers/vdpau/presentation.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/gallium/state_trackers/vdpau/presentation.c b/src/gallium/state_trackers/vdpau/presentation.c
index df38f637de9..0e086fc18b4 100644
--- a/src/gallium/state_trackers/vdpau/presentation.c
+++ b/src/gallium/state_trackers/vdpau/presentation.c
@@ -213,7 +213,7 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
struct pipe_context *pipe;
struct pipe_surface *drawable_surface;
- struct pipe_video_rect vo_rect;
+ struct pipe_video_rect src_rect, dst_clip;
pq = vlGetDataHTAB(presentation_queue);
if (!pq)
@@ -229,14 +229,19 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
surf->timestamp = (vlVdpTime)earliest_presentation_time;
- vo_rect.x = 0;
- vo_rect.y = 0;
- vo_rect.w = clip_width;
- vo_rect.h = clip_height;
+ src_rect.x = 0;
+ src_rect.y = 0;
+ src_rect.w = drawable_surface->width;
+ src_rect.h = drawable_surface->height;
+
+ dst_clip.x = 0;
+ dst_clip.y = 0;
+ dst_clip.w = clip_width;
+ dst_clip.h = clip_height;
vl_compositor_clear_layers(&pq->compositor);
- vl_compositor_set_rgba_layer(&pq->compositor, 0, surf->sampler_view, NULL, NULL);
- vl_compositor_render(&pq->compositor, drawable_surface, NULL, &vo_rect, &pq->dirty_area);
+ vl_compositor_set_rgba_layer(&pq->compositor, 0, surf->sampler_view, &src_rect, NULL);
+ vl_compositor_render(&pq->compositor, drawable_surface, NULL, &dst_clip, &pq->dirty_area);
pipe = pq->device->context->pipe;