diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 98cd2547..9f528d11 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -369,6 +369,7 @@ patch_enable_all () enable_winecfg_Unmounted_Devices="$1" enable_wined3d_Accounting="$1" enable_wined3d_CSMT_Main="$1" + enable_wined3d_CompareInterpolationMode="$1" enable_wined3d_DXTn="$1" enable_wined3d_Dual_Source_Blending="$1" enable_wined3d_Indexed_Vertex_Blending="$1" @@ -1282,6 +1283,9 @@ patch_enable () wined3d-CSMT_Main) enable_wined3d_CSMT_Main="$2" ;; + wined3d-CompareInterpolationMode) + enable_wined3d_CompareInterpolationMode="$2" + ;; wined3d-DXTn) enable_wined3d_DXTn="$2" ;; @@ -7673,6 +7677,21 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-CompareInterpolationMode +# | +# | This patchset fixes the following Wine bugs: +# | * [#45127] Correctly compare Interpolation mode values +# | +# | Modified files: +# | * dlls/wined3d/glsl_shader.c +# | +if test "$enable_wined3d_CompareInterpolationMode" -eq 1; then + patch_apply wined3d-CompareInterpolationMode/0001-wined3d-Correctly-compare-Interpolation-mode-values.patch + ( + printf '%s\n' '+ { "Matteo Bruni", "wined3d: Correctly compare Interpolation mode values.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-WINED3D_RS_COLORWRITEENABLE # | # | This patchset has the following (direct or indirect) dependencies: diff --git a/patches/wined3d-CompareInterpolationMode/0001-wined3d-Correctly-compare-Interpolation-mode-values.patch b/patches/wined3d-CompareInterpolationMode/0001-wined3d-Correctly-compare-Interpolation-mode-values.patch new file mode 100644 index 00000000..6764bdb4 --- /dev/null +++ b/patches/wined3d-CompareInterpolationMode/0001-wined3d-Correctly-compare-Interpolation-mode-values.patch @@ -0,0 +1,27 @@ +From 76727eeb72952a3ded2b75917a15d76429efbaa3 Mon Sep 17 00:00:00 2001 +From: Matteo Bruni +Date: Sun, 27 May 2018 11:22:33 +1000 +Subject: [PATCH] wined3d: Correctly compare Interpolation mode values + +--- + dlls/wined3d/glsl_shader.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c +index 41bd1fd055..b54e2833ba 100644 +--- a/dlls/wined3d/glsl_shader.c ++++ b/dlls/wined3d/glsl_shader.c +@@ -8281,7 +8281,9 @@ static inline BOOL vs_args_equal(const struct vs_compile_args *stored, const str + return FALSE; + if (stored->next_shader_input_count != new->next_shader_input_count) + return FALSE; +- return stored->fog_src == new->fog_src; ++ if (stored->fog_src != new->fog_src) ++ return FALSE; ++ return !memcmp(stored->interpolation_mode, new->interpolation_mode, sizeof(new->interpolation_mode)); + } + + static GLuint find_glsl_vshader(const struct wined3d_context *context, struct shader_glsl_priv *priv, +-- +2.17.0 + diff --git a/patches/wined3d-CompareInterpolationMode/definition b/patches/wined3d-CompareInterpolationMode/definition new file mode 100644 index 00000000..e0aff67b --- /dev/null +++ b/patches/wined3d-CompareInterpolationMode/definition @@ -0,0 +1,2 @@ +Fixes: [45127] Correctly compare Interpolation mode values +