summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/vdpau
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2011-07-08 14:44:19 +0200
committerChristian König <deathsimple@vodafone.de>2011-07-08 14:44:19 +0200
commitbd5fd67a3e3cda4b7676dd4745fc5d5524709210 (patch)
tree03fc88a9763ad0edf639b2821383a7866c972ff5 /src/gallium/state_trackers/vdpau
parent10fd45114d4a7bbac4093755305ea5e4ba3ab6a5 (diff)
[g3dvl] move compositor creation and handling directly into the state trackers
Diffstat (limited to 'src/gallium/state_trackers/vdpau')
-rw-r--r--src/gallium/state_trackers/vdpau/mixer.c14
-rw-r--r--src/gallium/state_trackers/vdpau/presentation.c16
-rw-r--r--src/gallium/state_trackers/vdpau/vdpau_private.h5
3 files changed, 18 insertions, 17 deletions
diff --git a/src/gallium/state_trackers/vdpau/mixer.c b/src/gallium/state_trackers/vdpau/mixer.c
index 85f4e1541ab..ea6d50d7457 100644
--- a/src/gallium/state_trackers/vdpau/mixer.c
+++ b/src/gallium/state_trackers/vdpau/mixer.c
@@ -61,7 +61,7 @@ vlVdpVideoMixerCreate(VdpDevice device,
return VDP_STATUS_RESOURCES;
vmixer->device = dev;
- vmixer->compositor = context->create_compositor(context);
+ vl_compositor_init(&vmixer->compositor, dev->context->pipe);
vl_csc_get_matrix
(
@@ -69,7 +69,7 @@ vlVdpVideoMixerCreate(VdpDevice device,
VL_CSC_COLOR_STANDARD_IDENTITY : VL_CSC_COLOR_STANDARD_BT_601,
NULL, true, csc
);
- vmixer->compositor->set_csc_matrix(vmixer->compositor, csc);
+ vl_compositor_set_csc_matrix(&vmixer->compositor, csc);
/*
* TODO: Handle features and parameters
@@ -97,7 +97,7 @@ vlVdpVideoMixerDestroy(VdpVideoMixer mixer)
if (!vmixer)
return VDP_STATUS_INVALID_HANDLE;
- vmixer->compositor->destroy(vmixer->compositor);
+ vl_compositor_cleanup(&vmixer->compositor);
FREE(vmixer);
@@ -158,10 +158,10 @@ VdpStatus vlVdpVideoMixerRender(VdpVideoMixer mixer,
if (!dst)
return VDP_STATUS_INVALID_HANDLE;
- vmixer->compositor->clear_layers(vmixer->compositor);
- vmixer->compositor->set_buffer_layer(vmixer->compositor, 0, surf->video_buffer, NULL, NULL);
- vmixer->compositor->render_picture(vmixer->compositor, PIPE_MPEG12_PICTURE_TYPE_FRAME,
- dst->surface, NULL, NULL);
+ vl_compositor_clear_layers(&vmixer->compositor);
+ vl_compositor_set_buffer_layer(&vmixer->compositor, 0, surf->video_buffer, NULL, NULL);
+ vl_compositor_render(&vmixer->compositor, PIPE_MPEG12_PICTURE_TYPE_FRAME,
+ dst->surface, NULL, NULL);
return VDP_STATUS_OK;
}
diff --git a/src/gallium/state_trackers/vdpau/presentation.c b/src/gallium/state_trackers/vdpau/presentation.c
index 02fcfbd0746..0f87ca78972 100644
--- a/src/gallium/state_trackers/vdpau/presentation.c
+++ b/src/gallium/state_trackers/vdpau/presentation.c
@@ -67,8 +67,8 @@ vlVdpPresentationQueueCreate(VdpDevice device,
pq->device = dev;
pq->drawable = pqt->drawable;
- pq->compositor = context->create_compositor(context);
- if (!pq->compositor) {
+
+ if (!vl_compositor_init(&pq->compositor, dev->context->pipe)) {
ret = VDP_STATUS_ERROR;
goto no_compositor;
}
@@ -97,7 +97,7 @@ vlVdpPresentationQueueDestroy(VdpPresentationQueue presentation_queue)
if (!pq)
return VDP_STATUS_INVALID_HANDLE;
- pq->compositor->destroy(pq->compositor);
+ vl_compositor_cleanup(&pq->compositor);
vlRemoveDataHTAB(presentation_queue);
FREE(pq);
@@ -120,7 +120,7 @@ vlVdpPresentationQueueSetBackgroundColor(VdpPresentationQueue presentation_queue
if (!pq)
return VDP_STATUS_INVALID_HANDLE;
- pq->compositor->set_clear_color(pq->compositor, (float*)background_color);
+ vl_compositor_set_clear_color(&pq->compositor, (float*)background_color);
return VDP_STATUS_OK;
}
@@ -170,10 +170,10 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
if (!surf)
return VDP_STATUS_INVALID_HANDLE;
- pq->compositor->clear_layers(pq->compositor);
- pq->compositor->set_rgba_layer(pq->compositor, 0, surf->sampler_view, NULL, NULL);
- pq->compositor->render_picture(pq->compositor, PIPE_MPEG12_PICTURE_TYPE_FRAME,
- drawable_surface, NULL, NULL);
+ vl_compositor_clear_layers(&pq->compositor);
+ vl_compositor_set_rgba_layer(&pq->compositor, 0, surf->sampler_view, NULL, NULL);
+ vl_compositor_render(&pq->compositor, PIPE_MPEG12_PICTURE_TYPE_FRAME,
+ drawable_surface, NULL, NULL);
pq->device->context->vpipe->screen->flush_frontbuffer
(
diff --git a/src/gallium/state_trackers/vdpau/vdpau_private.h b/src/gallium/state_trackers/vdpau/vdpau_private.h
index 1d6ca39fe39..ada17dfadc9 100644
--- a/src/gallium/state_trackers/vdpau/vdpau_private.h
+++ b/src/gallium/state_trackers/vdpau/vdpau_private.h
@@ -37,6 +37,7 @@
#include <pipe/p_video_context.h>
#include <util/u_debug.h>
+#include <vl/vl_compositor.h>
#include <vl_winsys.h>
@@ -188,13 +189,13 @@ typedef struct
{
vlVdpDevice *device;
Drawable drawable;
- struct pipe_video_compositor *compositor;
+ struct vl_compositor compositor;
} vlVdpPresentationQueue;
typedef struct
{
vlVdpDevice *device;
- struct pipe_video_compositor *compositor;
+ struct vl_compositor compositor;
} vlVdpVideoMixer;
typedef struct