Matteo Bruni : wined3d: Implement source fixups in the GLSL blitter.

Alexandre Julliard julliard at winehq.org
Mon Apr 16 15:26:26 CDT 2018


Module: wine
Branch: master
Commit: aa59d40a18b0754b6468c3dd71f8db8d02357d30
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=aa59d40a18b0754b6468c3dd71f8db8d02357d30

Author: Matteo Bruni <mbruni at codeweavers.com>
Date:   Mon Apr 16 18:17:27 2018 +0430

wined3d: Implement source fixups in the GLSL blitter.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/glsl_shader.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index e27b0ff..e839369 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -12270,8 +12270,8 @@ static GLuint glsl_blitter_generate_program(struct wined3d_glsl_blitter *blitter
         "\n"
         "void main()\n"
         "{\n";
+    struct wined3d_string_buffer *buffer, *string;
     GLuint program, vshader_id, fshader_id;
-    struct wined3d_string_buffer *buffer;
     const char *tex_type, *swizzle, *ptr;
     unsigned int i;
 
@@ -12314,9 +12314,14 @@ static GLuint glsl_blitter_generate_program(struct wined3d_glsl_blitter *blitter
     declare_in_varying(gl_info, buffer, FALSE, "vec3 out_texcoord;\n");
     if (!needs_legacy_glsl_syntax(gl_info))
         shader_addline(buffer, "out vec4 ps_out[1];\n");
+
     shader_addline(buffer, fshader_header);
-    shader_addline(buffer, "    %s[0] = texture%s(sampler, out_texcoord.%s);\n",
-            get_fragment_output(gl_info), needs_legacy_glsl_syntax(gl_info) ? tex_type : "", swizzle);
+    string = string_buffer_get(&blitter->string_buffers);
+    string_buffer_sprintf(string, "%s[0]", get_fragment_output(gl_info));
+    shader_addline(buffer, "    %s = texture%s(sampler, out_texcoord.%s);\n",
+            string->buffer, needs_legacy_glsl_syntax(gl_info) ? tex_type : "", swizzle);
+    shader_glsl_color_correction_ext(buffer, string->buffer, WINED3DSP_WRITEMASK_ALL, args->fixup);
+    string_buffer_release(&blitter->string_buffers, string);
     shader_addline(buffer, "}\n");
 
     ptr = buffer->buffer;
@@ -12436,9 +12441,9 @@ static BOOL glsl_blitter_supported(enum wined3d_blit_op blit_op, const struct wi
         return FALSE;
     }
 
-    if (!is_identity_fixup(src_format->color_fixup))
+    if (is_complex_fixup(src_format->color_fixup))
     {
-        TRACE("Source fixups are not supported.\n");
+        TRACE("Complex source fixups are not supported.\n");
         return FALSE;
     }
 




More information about the wine-cvs mailing list