[PATCH] wined3d: Fix the odd line condition in gen_yv12_read().
hverbeet at gmail.com
Mon Aug 30 08:59:07 CDT 2021
On Sun, 29 Aug 2021 at 20:19, Anton Baskanov <baskanov at gmail.com> wrote:
> Signed-off-by: Anton Baskanov <baskanov at gmail.com>
> The original condition is true for every other line, which is incorrect
> since the chroma has only half the resolution. Fixes comb artifacts
> around color transitions.
> dlls/wined3d/glsl_shader.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
> index 5ae90148dc8..21aef4606ff 100644
> --- a/dlls/wined3d/glsl_shader.c
> +++ b/dlls/wined3d/glsl_shader.c
> @@ -12622,7 +12622,7 @@ static void gen_yv12_read(struct wined3d_string_buffer *buffer,
> * get filtering bleeding. */
> /* Read odd lines from the right side (add 0.5 to the x coordinate). */
> - shader_addline(buffer, " if (fract(floor(texcoord.y * size.y) * 0.5 + 1.0 / 6.0) >= 0.5)\n");
> + shader_addline(buffer, " if (fract(texcoord.y * size.y * 0.25) >= 0.5)\n");
> shader_addline(buffer, " texcoord.x += 0.5;\n");
Changing the multiplier from 0.5 to 0.25 makes sense, but it would be
helpful to update the comment to make that obvious. It's not clear to
me why you're changing the rest of the expression.
More information about the wine-devel