diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index eda63a17..bb36f9bd 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -7763,6 +7763,7 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then echo '+ { "Nils Kuhnhenn", "wined3d: Fix incorrect return value in wined3d_cs_exec_set_light.", 1 },'; echo '+ { "Nils Kuhnhenn", "wined3d: Fix context_acquire not being called from the command thread in wined3d_texture_add_dirty_region.", 1 },'; echo '+ { "Sebastian Lackner", "wined3d: Do not signal CS event when we manage to unset waiting_for_event quickly enough.", 1 },'; + echo '+ { "Sebastian Lackner", "wined3d: Fix occlusion query tests.", 1 },'; echo '+ { "Sebastian Lackner", "wined3d: Enable CSMT by default, print a winediag message informing about this patchset.", 1 },'; ) >> "$patchlist" fi diff --git a/patches/wined3d-CSMT_Main/0134-wined3d-Fix-occlusion-query-tests.patch b/patches/wined3d-CSMT_Main/0134-wined3d-Fix-occlusion-query-tests.patch new file mode 100644 index 00000000..9afa7aca --- /dev/null +++ b/patches/wined3d-CSMT_Main/0134-wined3d-Fix-occlusion-query-tests.patch @@ -0,0 +1,30 @@ +From 7ca9013cbb089978d3a6cfa90d73ae37c8bc1df1 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Thu, 15 Dec 2016 05:21:00 +0100 +Subject: wined3d: Fix occlusion query tests. + +--- + dlls/wined3d/cs.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c +index b480705..c55afad 100644 +--- a/dlls/wined3d/cs.c ++++ b/dlls/wined3d/cs.c +@@ -2286,13 +2286,6 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data) + { + list_add_tail(&cs->query_poll_list, &query->poll_list_entry); + } +- else if (!poll && !list_empty(&query->poll_list_entry)) +- { +- /* Can happen if occlusion queries are restarted. This discards the old +- * result, polling it could result in a GL error */ +- list_remove(&query->poll_list_entry); +- list_init(&query->poll_list_entry); +- } + else if (op->flags & WINED3DISSUE_END) + { + /* Can happen when an occlusion query is ended without being started, +-- +2.9.0 + diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index 5b429570..867322e8 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -2893,7 +2893,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c } void wined3d_cs_emit_destroy_object(struct wined3d_cs *cs, void (*callback)(void *object), void *object) -@@ -1292,15 +2258,57 @@ void wined3d_cs_emit_destroy_object(struct wined3d_cs *cs, void (*callback)(void +@@ -1292,15 +2258,50 @@ void wined3d_cs_emit_destroy_object(struct wined3d_cs *cs, void (*callback)(void op->callback = callback; op->object = object; @@ -2925,13 +2925,6 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c + { + list_add_tail(&cs->query_poll_list, &query->poll_list_entry); + } -+ else if (!poll && !list_empty(&query->poll_list_entry)) -+ { -+ /* Can happen if occlusion queries are restarted. This discards the old -+ * result, polling it could result in a GL error */ -+ list_remove(&query->poll_list_entry); -+ list_init(&query->poll_list_entry); -+ } + else if (op->flags & WINED3DISSUE_END) + { + /* Can happen when an occlusion query is ended without being started, @@ -2951,7 +2944,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c } void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *query, DWORD flags) -@@ -1312,16 +2320,27 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu +@@ -1312,16 +2313,27 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu op->query = query; op->flags = flags; @@ -2979,7 +2972,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c } void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) -@@ -1334,16 +2353,27 @@ void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_reso +@@ -1334,16 +2346,27 @@ void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_reso wined3d_resource_acquire(resource); @@ -3007,7 +3000,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c } void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) -@@ -1356,6 +2386,7 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou +@@ -1356,6 +2379,7 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou wined3d_resource_acquire(resource); @@ -3015,7 +3008,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c cs->ops->submit(cs); } -@@ -1561,5 +2592,1175 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) +@@ -1561,5 +2585,1175 @@ void wined3d_cs_destroy(struct wined3d_cs *cs) state_cleanup(&cs->state); HeapFree(GetProcessHeap(), 0, cs->fb.render_targets); HeapFree(GetProcessHeap(), 0, cs->data);