Added patch to ignore invalid render states in wined3d_device_set_render_state.

This commit is contained in:
Sebastian Lackner
2016-01-10 18:00:27 +01:00
parent 90dc2c0daa
commit 541375be89
4 changed files with 123 additions and 68 deletions

View File

@@ -316,6 +316,7 @@ patch_enable_all ()
enable_wined3d_CSMT_Main="$1"
enable_wined3d_DXTn="$1"
enable_wined3d_Geforce_425M="$1"
enable_wined3d_Invalid_Render_States="$1"
enable_wined3d_MESA_GPU_Info="$1"
enable_wined3d_Multisampling="$1"
enable_wined3d_Revert_PixelFormat="$1"
@@ -1071,6 +1072,9 @@ patch_enable ()
wined3d-Geforce_425M)
enable_wined3d_Geforce_425M="$2"
;;
wined3d-Invalid_Render_States)
enable_wined3d_Invalid_Render_States="$2"
;;
wined3d-MESA_GPU_Info)
enable_wined3d_MESA_GPU_Info="$2"
;;
@@ -6038,6 +6042,21 @@ if test "$enable_wined3d_Geforce_425M" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-Invalid_Render_States
# |
# | This patchset fixes the following Wine bugs:
# | * [#33988] Ignore invalid render states in wined3d_device_set_render_state
# |
# | Modified files:
# | * dlls/wined3d/device.c
# |
if test "$enable_wined3d_Invalid_Render_States" -eq 1; then
patch_apply wined3d-Invalid_Render_States/0001-wined3d-Ignore-invalid-render-states.patch
(
echo '+ { "Józef Kucia", "wined3d: Ignore invalid render states.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-MESA_GPU_Info
# |
# | This patchset has the following (direct or indirect) dependencies:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
From 7543fa04f189e57eb56c7d697920342e8f28b0de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B3zef=20Kucia?= <jkucia@codeweavers.com>
Date: Sun, 10 Jan 2016 17:59:00 +0100
Subject: wined3d: Ignore invalid render states.
---
dlls/wined3d/device.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 7c5a4c2..b0f4bf4 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2027,10 +2027,17 @@ static void resolve_depth_buffer(struct wined3d_state *state)
void CDECL wined3d_device_set_render_state(struct wined3d_device *device,
enum wined3d_render_state state, DWORD value)
{
- DWORD old_value = device->state.render_states[state];
+ DWORD old_value;
TRACE("device %p, state %s (%#x), value %#x.\n", device, debug_d3drenderstate(state), state, value);
+ if (state > WINEHIGHEST_RENDER_STATE)
+ {
+ WARN("Ignoring unrecognized render state %#x, value %#x.\n", state, value);
+ return;
+ }
+
+ old_value = device->state.render_states[state];
device->update_state->render_states[state] = value;
/* Handle recording of state blocks. */
--
2.6.4

View File

@@ -0,0 +1 @@
Fixes: [33988] Ignore invalid render states in wined3d_device_set_render_state