diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c index 42285d1b61c..ebb88fd4d34 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.c +++ b/src/gallium/auxiliary/vl/vl_compositor.c @@ -330,7 +330,6 @@ set_yuv_layer(struct vl_compositor_state *s, struct vl_compositor *c, assert(layer < VL_COMPOSITOR_MAX_LAYERS); - s->interlaced = buffer->interlaced; s->used_layers |= 1 << layer; sampler_views = buffer->get_sampler_view_components(buffer); for (i = 0; i < 3; ++i) { @@ -352,7 +351,7 @@ set_yuv_layer(struct vl_compositor_state *s, struct vl_compositor *c, if (c->pipe_gfx_supported) s->layers[layer].fs = (y) ? c->fs_yuv.bob.y : c->fs_yuv.bob.uv; if (c->pipe_cs_composit_supported) - s->layers[layer].cs = (y) ? c->cs_yuv.bob.y : c->cs_yuv.bob.uv; + s->layers[layer].cs = (y) ? c->cs_yuv.progressive.y : c->cs_yuv.progressive.uv; break; case VL_COMPOSITOR_BOB_BOTTOM: @@ -362,7 +361,7 @@ set_yuv_layer(struct vl_compositor_state *s, struct vl_compositor *c, if (c->pipe_gfx_supported) s->layers[layer].fs = (y) ? c->fs_yuv.bob.y : c->fs_yuv.bob.uv; if (c->pipe_cs_composit_supported) - s->layers[layer].cs = (y) ? c->cs_yuv.bob.y : c->cs_yuv.bob.uv; + s->layers[layer].cs = (y) ? c->cs_yuv.progressive.y : c->cs_yuv.progressive.uv; break; case VL_COMPOSITOR_NONE: @@ -443,7 +442,6 @@ vl_compositor_clear_layers(struct vl_compositor_state *s) unsigned i, j; assert(s); - s->interlaced = false; s->used_layers = 0; for ( i = 0; i < VL_COMPOSITOR_MAX_LAYERS; ++i) { struct vertex4f v_one = { 1.0f, 1.0f, 1.0f, 1.0f }; @@ -563,7 +561,6 @@ vl_compositor_set_buffer_layer(struct vl_compositor_state *s, assert(layer < VL_COMPOSITOR_MAX_LAYERS); - s->interlaced = buffer->interlaced; s->used_layers |= 1 << layer; sampler_views = buffer->get_sampler_view_components(buffer); for (i = 0; i < 3; ++i) { diff --git a/src/gallium/auxiliary/vl/vl_compositor.h b/src/gallium/auxiliary/vl/vl_compositor.h index 8966e032cde..c8f2515d5ea 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.h +++ b/src/gallium/auxiliary/vl/vl_compositor.h @@ -159,10 +159,6 @@ struct vl_compositor void *y; void *uv; } weave; - struct { - void *y; - void *uv; - } bob; struct { void *y; void *uv; diff --git a/src/gallium/auxiliary/vl/vl_compositor_cs.c b/src/gallium/auxiliary/vl/vl_compositor_cs.c index 5889f93a72b..dec2b9c8f2b 100644 --- a/src/gallium/auxiliary/vl/vl_compositor_cs.c +++ b/src/gallium/auxiliary/vl/vl_compositor_cs.c @@ -156,32 +156,25 @@ const char *compute_shader_weave = /* Translate */ "UADD TEMP[2].xy, TEMP[2].xyyy, -CONST[5].xyxy\n" - "U2F TEMP[2].xy, TEMP[2].xyyy\n" + /* Top Y */ + "U2F TEMP[2], TEMP[2]\n" + /* Down Y */ + "MOV TEMP[12], TEMP[2]\n" /* Top UV */ - "MOV TEMP[3].xy, TEMP[2].xyyy\n" + "MOV TEMP[3], TEMP[2]\n" /* Chroma offset */ "ADD TEMP[3].xy, TEMP[3].xyyy, CONST[8].xyxy\n" - "DIV TEMP[3].xy, TEMP[3], IMM[1].yyyy\n" - "DIV TEMP[3].y, TEMP[3].yyyy, IMM[1].yyyy\n" + "DIV TEMP[3].xy, TEMP[3].xyyy, IMM[1].yyyy\n" /* Down UV */ - "MOV TEMP[13].xy, TEMP[3].xyyy\n" - - /* Top Y */ - "DIV TEMP[2].y, TEMP[2].yyyy, IMM[1].yyyy\n" - /* Down Y */ - "MOV TEMP[12].xy, TEMP[2].xyyy\n" + "MOV TEMP[13], TEMP[3]\n" /* Texture offset */ - "ADD TEMP[2].x, TEMP[2].xxxx, IMM[3].yyyy\n" - "ADD TEMP[2].y, TEMP[2].yyyy, IMM[3].xxxx\n" - "ADD TEMP[12].x, TEMP[12].xxxx, IMM[3].yyyy\n" - "ADD TEMP[12].y, TEMP[12].yyyy, IMM[3].xxxx\n" + "ADD TEMP[2].xy, TEMP[2].xyyy, IMM[3].yyyy\n" + "ADD TEMP[12].xy, TEMP[12].xyyy, IMM[3].yyyy\n" - "ADD TEMP[3].x, TEMP[3].xxxx, IMM[3].yyyy\n" - "ADD TEMP[3].y, TEMP[3].yyyy, IMM[3].xxxx\n" - "ADD TEMP[13].x, TEMP[13].xxxx, IMM[3].yyyy\n" - "ADD TEMP[13].y, TEMP[13].yyyy, IMM[3].xxxx\n" + "ADD TEMP[3].xy, TEMP[3].xyyy, IMM[3].xxxx\n" + "ADD TEMP[13].xy, TEMP[13].xyyy, IMM[3].xxxx\n" /* Scale */ "DIV TEMP[2].xy, TEMP[2].xyyy, CONST[3].zwzw\n" @@ -329,7 +322,6 @@ static const char *compute_shader_yuv_weave_y = /* Top Y */ "U2F TEMP[2], TEMP[2]\n" - "DIV TEMP[2].y, TEMP[2].yyyy, IMM[1].yyyy\n" /* Down Y */ "MOV TEMP[12], TEMP[2]\n" @@ -340,15 +332,11 @@ static const char *compute_shader_yuv_weave_y = "MOV TEMP[13], TEMP[3]\n" /* Texture offset */ - "ADD TEMP[2].x, TEMP[2].xxxx, IMM[3].yyyy\n" - "ADD TEMP[2].y, TEMP[2].yyyy, IMM[3].xxxx\n" - "ADD TEMP[12].x, TEMP[12].xxxx, IMM[3].yyyy\n" - "ADD TEMP[12].y, TEMP[12].yyyy, IMM[3].xxxx\n" + "ADD TEMP[2].xy, TEMP[2].xyyy, IMM[3].yyyy\n" + "ADD TEMP[12].xy, TEMP[12].xyyy, IMM[3].yyyy\n" - "ADD TEMP[3].x, TEMP[3].xxxx, IMM[3].xxxx\n" - "ADD TEMP[3].y, TEMP[3].yyyy, IMM[3].wwww\n" - "ADD TEMP[13].x, TEMP[13].xxxx, IMM[3].xxxx\n" - "ADD TEMP[13].y, TEMP[13].yyyy, IMM[3].wwww\n" + "ADD TEMP[3].xy, TEMP[3].xyyy, IMM[3].xxxx\n" + "ADD TEMP[13].xy, TEMP[13].xyyy, IMM[3].xxxx\n" /* Scale */ "DIV TEMP[2].xy, TEMP[2], CONST[3].zwzw\n" @@ -441,7 +429,6 @@ static const char *compute_shader_yuv_weave_uv = /* Top Y */ "U2F TEMP[2], TEMP[2]\n" - "DIV TEMP[2].y, TEMP[2].yyyy, IMM[1].yyyy\n" /* Down Y */ "MOV TEMP[12], TEMP[2]\n" @@ -452,15 +439,11 @@ static const char *compute_shader_yuv_weave_uv = "MOV TEMP[13], TEMP[3]\n" /* Texture offset */ - "ADD TEMP[2].x, TEMP[2].xxxx, IMM[3].yyyy\n" - "ADD TEMP[2].y, TEMP[2].yyyy, IMM[3].xxxx\n" - "ADD TEMP[12].x, TEMP[12].xxxx, IMM[3].yyyy\n" - "ADD TEMP[12].y, TEMP[12].yyyy, IMM[3].xxxx\n" + "ADD TEMP[2].xy, TEMP[2].xyyy, IMM[3].yyyy\n" + "ADD TEMP[12].xy, TEMP[12].xyyy, IMM[3].yyyy\n" - "ADD TEMP[3].x, TEMP[3].xxxx, IMM[3].xxxx\n" - "ADD TEMP[3].y, TEMP[3].yyyy, IMM[3].wwww\n" - "ADD TEMP[13].x, TEMP[13].xxxx, IMM[3].xxxx\n" - "ADD TEMP[13].y, TEMP[13].yyyy, IMM[3].wwww\n" + "ADD TEMP[3].xy, TEMP[3].xyyy, IMM[3].xxxx\n" + "ADD TEMP[13].xy, TEMP[13].xyyy, IMM[3].xxxx\n" /* Scale */ "DIV TEMP[2].xy, TEMP[2], CONST[3].zwzw\n" @@ -518,120 +501,6 @@ static const char *compute_shader_yuv_weave_uv = "END\n"; -static const char *compute_shader_yuv_bob_y = - "COMP\n" - "PROPERTY CS_FIXED_BLOCK_WIDTH 8\n" - "PROPERTY CS_FIXED_BLOCK_HEIGHT 8\n" - "PROPERTY CS_FIXED_BLOCK_DEPTH 1\n" - - "DCL SV[0], THREAD_ID\n" - "DCL SV[1], BLOCK_ID\n" - - "DCL CONST[0..7]\n" - "DCL SVIEW[0..2], RECT, FLOAT\n" - "DCL SAMP[0..2]\n" - - "DCL IMAGE[0], 2D, WR\n" - "DCL TEMP[0..4]\n" - - "IMM[0] UINT32 { 8, 8, 1, 0}\n" - "IMM[1] FLT32 { 1.0, 2.0, 0.0, 0.0}\n" - - "UMAD TEMP[0], SV[1], IMM[0], SV[0]\n" - - /* Drawn area check */ - "USGE TEMP[1].xy, TEMP[0].xyxy, CONST[4].xyxy\n" - "USLT TEMP[1].zw, TEMP[0].xyxy, CONST[4].zwzw\n" - "AND TEMP[1].x, TEMP[1].xxxx, TEMP[1].yyyy\n" - "AND TEMP[1].x, TEMP[1].xxxx, TEMP[1].zzzz\n" - "AND TEMP[1].x, TEMP[1].xxxx, TEMP[1].wwww\n" - - "UIF TEMP[1]\n" - /* Translate */ - "UADD TEMP[2].xy, TEMP[0], -CONST[5].xyxy\n" - "U2F TEMP[2], TEMP[2]\n" - "DIV TEMP[3], TEMP[2], IMM[1].yyyy\n" - - /* Scale */ - "DIV TEMP[2], TEMP[2], CONST[3].zwzw\n" - "DIV TEMP[2], TEMP[2], IMM[1].xyxy\n" - "DIV TEMP[3], TEMP[3], CONST[3].zwzw\n" - "DIV TEMP[3], TEMP[3], IMM[1].xyxy\n" - - /* Clamp coords */ - "MIN TEMP[2].xy, TEMP[2].xyyy, CONST[7].xyxy\n" - "MIN TEMP[3].xy, TEMP[3].xyyy, CONST[7].zwzw\n" - - /* Fetch texels */ - "TEX_LZ TEMP[4].x, TEMP[2], SAMP[0], RECT\n" - "TEX_LZ TEMP[4].y, TEMP[3], SAMP[1], RECT\n" - "TEX_LZ TEMP[4].z, TEMP[3], SAMP[2], RECT\n" - - "MOV TEMP[4].w, IMM[1].xxxx\n" - - "STORE IMAGE[0], TEMP[0], TEMP[4], 2D\n" - "ENDIF\n" - - "END\n"; - -static const char *compute_shader_yuv_bob_uv = - "COMP\n" - "PROPERTY CS_FIXED_BLOCK_WIDTH 8\n" - "PROPERTY CS_FIXED_BLOCK_HEIGHT 8\n" - "PROPERTY CS_FIXED_BLOCK_DEPTH 1\n" - - "DCL SV[0], THREAD_ID\n" - "DCL SV[1], BLOCK_ID\n" - - "DCL CONST[0..7]\n" - "DCL SVIEW[0..2], RECT, FLOAT\n" - "DCL SAMP[0..2]\n" - - "DCL IMAGE[0], 2D, WR\n" - "DCL TEMP[0..5]\n" - - "IMM[0] UINT32 { 8, 8, 1, 0}\n" - "IMM[1] FLT32 { 1.0, 2.0, 0.0, 0.0}\n" - - "UMAD TEMP[0], SV[1], IMM[0], SV[0]\n" - - /* Drawn area check */ - "USGE TEMP[1].xy, TEMP[0].xyxy, CONST[4].xyxy\n" - "USLT TEMP[1].zw, TEMP[0].xyxy, CONST[4].zwzw\n" - "AND TEMP[1].x, TEMP[1].xxxx, TEMP[1].yyyy\n" - "AND TEMP[1].x, TEMP[1].xxxx, TEMP[1].zzzz\n" - "AND TEMP[1].x, TEMP[1].xxxx, TEMP[1].wwww\n" - - "UIF TEMP[1]\n" - /* Translate */ - "UADD TEMP[2].xy, TEMP[0], -CONST[5].xyxy\n" - "U2F TEMP[2], TEMP[2]\n" - "DIV TEMP[3], TEMP[2], IMM[1].yyyy\n" - - /* Scale */ - "DIV TEMP[2], TEMP[2], CONST[3].zwzw\n" - "DIV TEMP[2], TEMP[2], IMM[1].xyxy\n" - "DIV TEMP[3], TEMP[3], CONST[3].zwzw\n" - "DIV TEMP[3], TEMP[3], IMM[1].xyxy\n" - - /* Clamp coords */ - "MIN TEMP[2].xy, TEMP[2].xyyy, CONST[7].xyxy\n" - "MIN TEMP[3].xy, TEMP[3].xyyy, CONST[7].zwzw\n" - - /* Fetch texels */ - "TEX_LZ TEMP[4].x, TEMP[2], SAMP[0], RECT\n" - "TEX_LZ TEMP[4].y, TEMP[3], SAMP[1], RECT\n" - "TEX_LZ TEMP[4].z, TEMP[3], SAMP[2], RECT\n" - - "MOV TEMP[4].w, IMM[1].xxxx\n" - - "MOV TEMP[5].xy, TEMP[4].yzww\n" - - "STORE IMAGE[0], TEMP[0], TEMP[5], 2D\n" - "ENDIF\n" - - "END\n"; - static const char *compute_shader_yuv_y = "COMP\n" "PROPERTY CS_FIXED_BLOCK_WIDTH 8\n" @@ -1077,7 +946,6 @@ draw_layers(struct vl_compositor *c, (layer->src.br.x - layer->src.tl.x)); drawn.scale_y = layer->viewport.scale[1] / ((float)layer->sampler_views[0]->texture->height0 * - (s->interlaced ? 2.0 : 1.0) * (layer->src.br.y - layer->src.tl.y)); drawn.crop_x = (int)(layer->src.tl.x * layer->sampler_views[0]->texture->width0); drawn.translate_x = layer->viewport.translate[0]; @@ -1197,12 +1065,9 @@ bool vl_compositor_cs_init_shaders(struct vl_compositor *c) c->cs_yuv.weave.y = vl_compositor_cs_create_shader(c, compute_shader_yuv_weave_y); c->cs_yuv.weave.uv = vl_compositor_cs_create_shader(c, compute_shader_yuv_weave_uv); - c->cs_yuv.bob.y = vl_compositor_cs_create_shader(c, compute_shader_yuv_bob_y); - c->cs_yuv.bob.uv = vl_compositor_cs_create_shader(c, compute_shader_yuv_bob_uv); c->cs_yuv.progressive.y = vl_compositor_cs_create_shader(c, compute_shader_yuv_y); c->cs_yuv.progressive.uv = vl_compositor_cs_create_shader(c, compute_shader_yuv_uv); - if (!c->cs_yuv.weave.y || !c->cs_yuv.weave.uv || - !c->cs_yuv.bob.y || !c->cs_yuv.bob.uv) { + if (!c->cs_yuv.weave.y || !c->cs_yuv.weave.uv) { debug_printf("Unable to create YCbCr i-to-YCbCr p deint compute shader.\n"); return false; } @@ -1233,10 +1098,6 @@ void vl_compositor_cs_cleanup_shaders(struct vl_compositor *c) c->pipe->delete_compute_state(c->pipe, c->cs_yuv.weave.y); if (c->cs_yuv.weave.uv) c->pipe->delete_compute_state(c->pipe, c->cs_yuv.weave.uv); - if (c->cs_yuv.bob.y) - c->pipe->delete_compute_state(c->pipe, c->cs_yuv.bob.y); - if (c->cs_yuv.bob.uv) - c->pipe->delete_compute_state(c->pipe, c->cs_yuv.bob.uv); if (c->cs_yuv.progressive.y) c->pipe->delete_compute_state(c->pipe, c->cs_yuv.progressive.y); if (c->cs_yuv.progressive.uv)