diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 829157ee..2167a844 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -370,6 +370,7 @@ patch_enable_all () enable_wined3d_CSMT_Helper="$1" enable_wined3d_DXTn="$1" enable_wined3d_GTX_560M="$1" + enable_wined3d_Invalidate_INDEXBUFFER="$1" enable_wined3d_Limit_Vram="$1" enable_wined3d_QUERY_Stubs="$1" enable_wined3d_Revert_Pixel_Center_Offset="$1" @@ -1293,6 +1294,9 @@ patch_enable () wined3d-GTX_560M) enable_wined3d_GTX_560M="$2" ;; + wined3d-Invalidate_INDEXBUFFER) + enable_wined3d_Invalidate_INDEXBUFFER="$2" + ;; wined3d-Limit_Vram) enable_wined3d_Limit_Vram="$2" ;; @@ -7566,6 +7570,18 @@ if test "$enable_wined3d_GTX_560M" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-Invalidate_INDEXBUFFER +# | +# | Modified files: +# | * dlls/wined3d/buffer.c +# | +if test "$enable_wined3d_Invalidate_INDEXBUFFER" -eq 1; then + patch_apply wined3d-Invalidate_INDEXBUFFER/0001-wined3d-Invalidate-INDEXBUFFER-device-state-when-bou.patch + ( + echo '+ { "Józef Kucia", "wined3d: Invalidate INDEXBUFFER device state when bound index buffer is unloaded.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-Limit_Vram # | # | Modified files: diff --git a/patches/wined3d-Invalidate_INDEXBUFFER/0001-wined3d-Invalidate-INDEXBUFFER-device-state-when-bou.patch b/patches/wined3d-Invalidate_INDEXBUFFER/0001-wined3d-Invalidate-INDEXBUFFER-device-state-when-bou.patch new file mode 100644 index 00000000..53ce11f5 --- /dev/null +++ b/patches/wined3d-Invalidate_INDEXBUFFER/0001-wined3d-Invalidate-INDEXBUFFER-device-state-when-bou.patch @@ -0,0 +1,39 @@ +From cda4f405aae949edf1ad29b2277b28a57c661ad5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3zef=20Kucia?= +Date: Mon, 31 Oct 2016 12:48:31 +0100 +Subject: wined3d: Invalidate INDEXBUFFER device state when bound index buffer + is unloaded. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes a regression introduced by commit +e3a8cd20ced9f33db64a35f60bc8487ae8173e47. + +Signed-off-by: Józef Kucia +Signed-off-by: Henri Verbeet +Signed-off-by: Alexandre Julliard +--- + dlls/wined3d/buffer.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c +index a81cd64..13953c9 100644 +--- a/dlls/wined3d/buffer.c ++++ b/dlls/wined3d/buffer.c +@@ -665,7 +665,12 @@ static void buffer_unload(struct wined3d_resource *resource) + * happens only once per changed vertexbuffer and should occur rather + * rarely. */ + if (resource->bind_count) ++ { + device_invalidate_state(device, STATE_STREAMSRC); ++ ++ if (buffer->buffer_type_hint == GL_ELEMENT_ARRAY_BUFFER) ++ device_invalidate_state(device, STATE_INDEXBUFFER); ++ } + } + + resource_unload(resource); +-- +2.9.0 +