summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/vl
diff options
context:
space:
mode:
authorMaarten Lankhorst <[email protected]>2012-12-18 13:17:22 +0100
committerMaarten Lankhorst <[email protected]>2013-01-16 17:22:55 +0100
commit4b8af72f96825cba8519b2c381ccde42decb69d3 (patch)
treee88de2265e2b038f06043c9f5326ad750c0876be /src/gallium/auxiliary/vl
parent892c1fa8d8248bcdb153faf0694073e3b4a91ed3 (diff)
vl/video_buffer: fix up surface ordering for the interlaced case
It seems the other code expects surface[0..1] to be the luma field in interlaced case. See for example vdpau/surface.c vlVdpVideoSurfaceClear and vlVdpVideoSurfacePutBitsYCbCr. Signed-off-by: Maarten Lankhorst <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/vl')
-rw-r--r--src/gallium/auxiliary/vl/vl_video_buffer.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/vl/vl_video_buffer.c b/src/gallium/auxiliary/vl/vl_video_buffer.c
index 511485f75d6..d61dab22c2d 100644
--- a/src/gallium/auxiliary/vl/vl_video_buffer.c
+++ b/src/gallium/auxiliary/vl/vl_video_buffer.c
@@ -356,20 +356,20 @@ vl_video_buffer_surfaces(struct pipe_video_buffer *buffer)
pipe = buf->base.context;
depth = buffer->interlaced ? 2 : 1;
- for (i = 0, surf = 0; i < depth; ++i ) {
- for (j = 0; j < VL_NUM_COMPONENTS; ++j, ++surf) {
+ for (i = 0, surf = 0; i < VL_NUM_COMPONENTS; ++i) {
+ for (j = 0; j < depth; ++j, ++surf) {
assert(surf < (VL_NUM_COMPONENTS * 2));
- if (!buf->resources[j]) {
+ if (!buf->resources[i]) {
pipe_surface_reference(&buf->surfaces[surf], NULL);
continue;
}
if (!buf->surfaces[surf]) {
memset(&surf_templ, 0, sizeof(surf_templ));
- surf_templ.format = vl_video_buffer_surface_format(buf->resources[j]->format);
- surf_templ.u.tex.first_layer = surf_templ.u.tex.last_layer = i;
- buf->surfaces[surf] = pipe->create_surface(pipe, buf->resources[j], &surf_templ);
+ surf_templ.format = vl_video_buffer_surface_format(buf->resources[i]->format);
+ surf_templ.u.tex.first_layer = surf_templ.u.tex.last_layer = j;
+ buf->surfaces[surf] = pipe->create_surface(pipe, buf->resources[i], &surf_templ);
if (!buf->surfaces[surf])
goto error;
}