From 89e2d01a1d894e97b188870602b7e59871018c64 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 5 Aug 2016 02:43:06 +0200 Subject: [PATCH] Rebase against 0b49495b8ed9e725b47b7ca791312a2a3c3e3c97. --- ...ly-declare-debug-channel-when-needed.patch | 41 ------ ...serve-custom-colors-between-subitems.patch | 32 ++--- patches/patchinstall.sh | 9 +- ...-move-surface-volume_load_location-i.patch | 38 +----- ...ture_load_location-instead-of-surfac.patch | 52 +------- ...e-the-framebuffer-into-wined3d_state.patch | 76 +++++------ ...e-depth-stencil-to-swapchain-present.patch | 10 +- ...ace_blt_ugly-in-swapchain_gl_present.patch | 18 +-- .../wined3d-CSMT_Main/9999-IfDefined.patch | 125 ++++-------------- 9 files changed, 102 insertions(+), 299 deletions(-) delete mode 100644 patches/Compiler_Warnings/0014-xaudio2_7-Only-declare-debug-channel-when-needed.patch diff --git a/patches/Compiler_Warnings/0014-xaudio2_7-Only-declare-debug-channel-when-needed.patch b/patches/Compiler_Warnings/0014-xaudio2_7-Only-declare-debug-channel-when-needed.patch deleted file mode 100644 index a93bb05a..00000000 --- a/patches/Compiler_Warnings/0014-xaudio2_7-Only-declare-debug-channel-when-needed.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 337b1e60966bf902e79d69981c1bf49bf8be6192 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Sun, 31 Jul 2016 00:01:24 +0200 -Subject: xaudio2_7: Only declare debug channel when needed. - ---- - dlls/xaudio2_7/compat.c | 2 ++ - dlls/xaudio2_7/x3daudio.c | 2 ++ - 2 files changed, 4 insertions(+) - -diff --git a/dlls/xaudio2_7/compat.c b/dlls/xaudio2_7/compat.c -index 516d6c2..b9e720f 100644 ---- a/dlls/xaudio2_7/compat.c -+++ b/dlls/xaudio2_7/compat.c -@@ -101,7 +101,9 @@ - - #include "wine/debug.h" - -+#if XAUDIO2_VER <= 7 - WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); -+#endif - - /* BEGIN IXAudio2SourceVoice */ - #if XAUDIO2_VER == 0 -diff --git a/dlls/xaudio2_7/x3daudio.c b/dlls/xaudio2_7/x3daudio.c -index a182852..58f7062 100644 ---- a/dlls/xaudio2_7/x3daudio.c -+++ b/dlls/xaudio2_7/x3daudio.c -@@ -23,7 +23,9 @@ - - #include "wine/debug.h" - -+#if XAUDIO2_VER >= 8 || defined X3DAUDIO1_VER - WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); -+#endif - - #ifdef X3DAUDIO1_VER - BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, void *pReserved) --- -2.9.0 - diff --git a/patches/comctl32-Listview_DrawItem/0001-comctl32-Preserve-custom-colors-between-subitems.patch b/patches/comctl32-Listview_DrawItem/0001-comctl32-Preserve-custom-colors-between-subitems.patch index 714efbba..7347b391 100644 --- a/patches/comctl32-Listview_DrawItem/0001-comctl32-Preserve-custom-colors-between-subitems.patch +++ b/patches/comctl32-Listview_DrawItem/0001-comctl32-Preserve-custom-colors-between-subitems.patch @@ -1,18 +1,18 @@ -From 8113f7a7b3c214b5c9d07a4b6f5b0d97d6f576f1 Mon Sep 17 00:00:00 2001 +From ddc5f6fd9dde7a5cdde0be59d4a9db9e086400a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 12 Jul 2014 23:58:19 +0200 Subject: comctl32: Preserve custom colors between subitems. (v2) --- dlls/comctl32/listview.c | 20 +++++++++----------- - dlls/comctl32/tests/listview.c | 27 ++++++++++++++++++++++----- - 2 files changed, 31 insertions(+), 16 deletions(-) + dlls/comctl32/tests/listview.c | 23 ++++++++++++++++++++--- + 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c -index 784ca7b..2c4051d 100644 +index 56e2563..a35f5f2 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c -@@ -1054,7 +1054,7 @@ static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRA +@@ -1072,7 +1072,7 @@ static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRA COLORREF backcolor, textcolor; /* apparently, for selected items, we have to override the returned values */ @@ -21,7 +21,7 @@ index 784ca7b..2c4051d 100644 { if (lpnmlvcd->nmcd.uItemState & CDIS_SELECTED) { -@@ -4767,6 +4767,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT +@@ -4784,6 +4784,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT while (iterator_next(subitems)) { DWORD subitemstage = CDRF_DODEFAULT; @@ -29,7 +29,7 @@ index 784ca7b..2c4051d 100644 /* We need to query for each subitem, item's data (subitem == 0) is already here at this point */ if (subitems->nItem) -@@ -4793,19 +4794,16 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT +@@ -4810,19 +4811,16 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT if (cdsubitemmode & CDRF_NOTIFYSUBITEMDRAW) subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPREPAINT, &nmlvcd); @@ -57,22 +57,18 @@ index 784ca7b..2c4051d 100644 if (subitemstage & CDRF_NOTIFYPOSTPAINT) subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPOSTPAINT, &nmlvcd); diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c -index ed5d9f9..64cc214 100644 +index ec87e3b..eb4db0e 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c -@@ -1823,14 +1823,18 @@ static LRESULT WINAPI cd_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM +@@ -1830,12 +1830,16 @@ static LRESULT WINAPI cd_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM clr = GetBkColor(nmlvcd->nmcd.hdc); ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk); ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText); -- if (nmlvcd->iSubItem) -- todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr); -- else +- todo_wine_if(nmlvcd->iSubItem) - ok(clr == c0ffee, "clr=%.8x\n", clr); + if (!(GetWindowLongW(nmhdr->hwndFrom, GWL_STYLE) & LVS_SHOWSELALWAYS)) + { -+ if (nmlvcd->iSubItem) -+ todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr); -+ else ++ todo_wine_if(nmlvcd->iSubItem) + ok(clr == c0ffee, "clr=%.8x\n", clr); + } return CDRF_NOTIFYPOSTPAINT; @@ -84,7 +80,7 @@ index ed5d9f9..64cc214 100644 ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk); ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText); return CDRF_DODEFAULT; -@@ -1846,6 +1850,7 @@ static void test_customdraw(void) +@@ -1851,6 +1855,7 @@ static void test_customdraw(void) { HWND hwnd; WNDPROC oldwndproc; @@ -92,7 +88,7 @@ index ed5d9f9..64cc214 100644 hwnd = create_listview_control(LVS_REPORT); -@@ -1865,6 +1870,18 @@ static void test_customdraw(void) +@@ -1870,6 +1875,18 @@ static void test_customdraw(void) UpdateWindow(hwnd); ok_sequence(sequences, PARENT_CD_SEQ_INDEX, parent_report_cd_seq, "parent customdraw, LVS_REPORT", FALSE); @@ -112,5 +108,5 @@ index ed5d9f9..64cc214 100644 hwnd = create_listview_control(LVS_LIST); -- -2.8.0 +2.9.0 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index c97f76de..eadc3b1f 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "a65718a3e7b95443a82dafd5d2c9cded961404a6" + echo "0b49495b8ed9e725b47b7ca791312a2a3c3e3c97" } # Show version information @@ -2335,9 +2335,8 @@ fi # | dlls/rpcrt4/tests/ndr_marshall.c, dlls/scrrun/tests/dictionary.c, dlls/shell32/tests/appbar.c, # | dlls/shell32/tests/shelldispatch.c, dlls/shell32/tests/shellole.c, dlls/shlwapi/tests/ordinal.c, # | dlls/user32/tests/input.c, dlls/user32/tests/menu.c, dlls/vbscript/vbdisp.c, dlls/winealsa.drv/mmdevdrv.c, -# | dlls/wined3d/glsl_shader.c, dlls/winhttp/tests/winhttp.c, dlls/wshom.ocx/tests/wshom.c, dlls/xaudio2_7/compat.c, -# | dlls/xaudio2_7/x3daudio.c, include/d3dtypes.h, include/wine/list.h, include/wine/rbtree.h, include/winnt.h, -# | server/request.c, server/sock.c, tools/makedep.c +# | dlls/wined3d/glsl_shader.c, dlls/winhttp/tests/winhttp.c, dlls/wshom.ocx/tests/wshom.c, include/d3dtypes.h, +# | include/wine/list.h, include/wine/rbtree.h, include/winnt.h, server/request.c, server/sock.c, tools/makedep.c # | if test "$enable_Compiler_Warnings" -eq 1; then patch_apply Compiler_Warnings/0001-comctl32-Avoid-misleading-indentation-warnings.patch @@ -2352,7 +2351,6 @@ if test "$enable_Compiler_Warnings" -eq 1; then patch_apply Compiler_Warnings/0011-user32-tests-Avoid-misleading-indentation-warnings.patch patch_apply Compiler_Warnings/0012-winhttp-tests-Avoid-misleading-indentation-warnings.patch patch_apply Compiler_Warnings/0013-wshom.ocx-tests-Avoid-misleading-indentation-warning.patch - patch_apply Compiler_Warnings/0014-xaudio2_7-Only-declare-debug-channel-when-needed.patch patch_apply Compiler_Warnings/0015-include-Avoid-shift-overflow-warning.patch patch_apply Compiler_Warnings/0017-server-Workaround-duplicate-condition-warning-of-GCC.patch patch_apply Compiler_Warnings/0018-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch @@ -2382,7 +2380,6 @@ if test "$enable_Compiler_Warnings" -eq 1; then echo '+ { "Sebastian Lackner", "user32/tests: Avoid misleading indentation warnings.", 1 },'; echo '+ { "Sebastian Lackner", "winhttp/tests: Avoid misleading indentation warnings.", 1 },'; echo '+ { "Sebastian Lackner", "wshom.ocx/tests: Avoid misleading indentation warnings.", 1 },'; - echo '+ { "Sebastian Lackner", "xaudio2_7: Only declare debug channel when needed.", 1 },'; echo '+ { "Sebastian Lackner", "include: Avoid shift overflow warning.", 1 },'; echo '+ { "Sebastian Lackner", "server: Workaround duplicate condition warning of GCC 6.", 1 },'; echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },'; diff --git a/patches/wined3d-CSMT_Main/0002-wined3d-Start-to-move-surface-volume_load_location-i.patch b/patches/wined3d-CSMT_Main/0002-wined3d-Start-to-move-surface-volume_load_location-i.patch index dbf70c00..8afd0a8c 100644 --- a/patches/wined3d-CSMT_Main/0002-wined3d-Start-to-move-surface-volume_load_location-i.patch +++ b/patches/wined3d-CSMT_Main/0002-wined3d-Start-to-move-surface-volume_load_location-i.patch @@ -1,4 +1,4 @@ -From 39a2802a5a07da378f07e6e56b9ba89e297390fb Mon Sep 17 00:00:00 2001 +From c96b9ddd5a522622943774e1df2d58084e483e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 29 Oct 2015 17:33:23 +0100 Subject: wined3d: Start to move surface/volume_load_location into the texture. @@ -9,41 +9,9 @@ FIXME 2: This breaks some rtv->resource != buffer checks. wined3d_surface_prepare will be moved into the texture a lot later, after moving allocation of all locations (including sysmem) there. --- - dlls/wined3d/swapchain.c | 7 ++++--- - dlls/wined3d/texture.c | 1 + - 2 files changed, 5 insertions(+), 3 deletions(-) + dlls/wined3d/texture.c | 1 + + 1 file changed, 1 insertion(+) -diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index 8f93095..306c499 100644 ---- a/dlls/wined3d/swapchain.c -+++ b/dlls/wined3d/swapchain.c -@@ -327,7 +327,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, - if (texture->resource.multisample_type) - { - location = WINED3D_LOCATION_RB_RESOLVED; -- surface_load_location(back_buffer, context, location); -+ wined3d_texture_load_location(texture, 0, context, location); - } - - context_apply_fbo_state_blit(context, GL_READ_FRAMEBUFFER, back_buffer, NULL, location); -@@ -556,14 +556,15 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, - */ - if (!swapchain->render_to_fbo && render_to_fbo && wined3d_settings.offscreen_rendering_mode == ORM_FBO) - { -- surface_load_location(back_buffer, context, WINED3D_LOCATION_TEXTURE_RGB); -+ wined3d_texture_load_location(back_buffer->container, 0, context, WINED3D_LOCATION_TEXTURE_RGB); - wined3d_texture_invalidate_location(back_buffer->container, 0, WINED3D_LOCATION_DRAWABLE); - swapchain->render_to_fbo = TRUE; - swapchain_update_draw_bindings(swapchain); - } - else - { -- surface_load_location(back_buffer, context, back_buffer->container->resource.draw_binding); -+ wined3d_texture_load_location(swapchain->back_buffers[0], 0, context, -+ swapchain->back_buffers[0]->resource.draw_binding); - } - - if (swapchain->render_to_fbo) diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 873d72b..0acc74f 100644 --- a/dlls/wined3d/texture.c diff --git a/patches/wined3d-CSMT_Main/0003-wined3d-Call-texture_load_location-instead-of-surfac.patch b/patches/wined3d-CSMT_Main/0003-wined3d-Call-texture_load_location-instead-of-surfac.patch index b5179a12..2a404dec 100644 --- a/patches/wined3d-CSMT_Main/0003-wined3d-Call-texture_load_location-instead-of-surfac.patch +++ b/patches/wined3d-CSMT_Main/0003-wined3d-Call-texture_load_location-instead-of-surfac.patch @@ -1,14 +1,13 @@ -From 0de3c15670f2fa6a665f75a77ae522456372ed9b Mon Sep 17 00:00:00 2001 +From 6930278bb1ba99c7cfcbd1cfaef73c8034cc48a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Tue, 17 Nov 2015 23:13:29 -0800 Subject: wined3d: Call texture_load_location instead of surface_load_location. --- - dlls/wined3d/device.c | 9 ++++++--- - dlls/wined3d/surface.c | 8 +++++--- - dlls/wined3d/swapchain.c | 8 ++++---- - dlls/wined3d/texture.c | 2 +- - 4 files changed, 16 insertions(+), 11 deletions(-) + dlls/wined3d/device.c | 9 ++++++--- + dlls/wined3d/surface.c | 5 +++-- + dlls/wined3d/texture.c | 2 +- + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index e052557..604be94 100644 @@ -42,7 +41,7 @@ index e052557..604be94 100644 } diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index 859f481..6d5b22b 100644 +index 2796590..5dfdcfd 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -2447,7 +2447,7 @@ static void surface_blt_to_drawable(const struct wined3d_device *device, @@ -64,45 +63,6 @@ index 859f481..6d5b22b 100644 } if (texture->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) -@@ -4380,7 +4381,8 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst - if (!wined3d_resource_is_offscreen(&dst_texture->resource)) - { - struct wined3d_context *context = context_acquire(device, dst_surface); -- surface_load_location(dst_surface, context, dst_texture->resource.draw_binding); -+ wined3d_texture_load_location(dst_texture, surface_get_sub_resource_idx(dst_surface), -+ context, dst_texture->resource.draw_binding); - context_release(context); - } - return WINED3D_OK; -diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index 4d7f60a..6f3b4d8 100644 ---- a/dlls/wined3d/swapchain.c -+++ b/dlls/wined3d/swapchain.c -@@ -464,7 +464,7 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct - sub_resource = &texture->sub_resources[0]; - - if (!(sub_resource->locations & supported_locations)) -- surface_load_location(sub_resource->u.surface, context, texture->resource.draw_binding); -+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding); - - texture_prev->texture_rgb = texture->texture_rgb; - texture_prev->rb_multisample = texture->rb_multisample; -@@ -644,12 +644,12 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, - - static void swapchain_gl_frontbuffer_updated(struct wined3d_swapchain *swapchain) - { -- struct wined3d_surface *surface; -+ struct wined3d_texture *texture = swapchain->front_buffer; -+ struct wined3d_surface *surface = texture->sub_resources[0].u.surface; - struct wined3d_context *context; - -- surface = swapchain->front_buffer->sub_resources[0].u.surface; - context = context_acquire(swapchain->device, surface); -- surface_load_location(surface, context, surface->container->resource.draw_binding); -+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding); - context_release(context); - SetRectEmpty(&swapchain->front_buffer_update); - } diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 0acc74f..2d155cb 100644 --- a/dlls/wined3d/texture.c diff --git a/patches/wined3d-CSMT_Main/0008-wined3d-Move-the-framebuffer-into-wined3d_state.patch b/patches/wined3d-CSMT_Main/0008-wined3d-Move-the-framebuffer-into-wined3d_state.patch index 3bb94d37..e0a56dd8 100644 --- a/patches/wined3d-CSMT_Main/0008-wined3d-Move-the-framebuffer-into-wined3d_state.patch +++ b/patches/wined3d-CSMT_Main/0008-wined3d-Move-the-framebuffer-into-wined3d_state.patch @@ -1,4 +1,4 @@ -From c1c29e14d5b9efe39db225334885e4b4703ff72d Mon Sep 17 00:00:00 2001 +From 8f5ab38fe34d5b7da764d021d8389661f6815956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 20 Dec 2012 13:09:17 +0100 Subject: wined3d: Move the framebuffer into wined3d_state @@ -20,7 +20,7 @@ Subject: wined3d: Move the framebuffer into wined3d_state 13 files changed, 192 insertions(+), 133 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c -index 3f551b6..05ce745 100644 +index f877149..1ffe498 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -704,7 +704,7 @@ static void shader_arb_load_constants_internal(struct shader_arb_priv *priv, @@ -42,7 +42,7 @@ index 3f551b6..05ce745 100644 } diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c -index 8b12a39..8946676 100644 +index f5311af..d276ee8 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1699,6 +1699,11 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, @@ -73,7 +73,7 @@ index 8b12a39..8946676 100644 HeapFree(GetProcessHeap(), 0, context->draw_buffers); HeapFree(GetProcessHeap(), 0, context->blit_targets); device_context_remove(device, context); -@@ -2576,7 +2583,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win +@@ -2577,7 +2584,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win DWORD rt_mask = 0, *cur_mask; UINT i; @@ -82,7 +82,7 @@ index 8b12a39..8946676 100644 || rt_count != gl_info->limits.buffers) { if (!context_validate_rt_config(rt_count, rts, dsv)) -@@ -2621,6 +2628,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win +@@ -2622,6 +2629,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win rt_mask = context_generate_rt_mask_no_fbo(context, rt_count ? wined3d_rendertarget_view_get_surface(rts[0])->container : NULL); } @@ -91,7 +91,7 @@ index 8b12a39..8946676 100644 } else if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && (!rt_count || wined3d_resource_is_offscreen(rts[0]->resource))) -@@ -2678,7 +2687,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win +@@ -2679,7 +2688,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const struct wined3d_state *state) { @@ -100,7 +100,7 @@ index 8b12a39..8946676 100644 struct wined3d_shader *ps = state->shader[WINED3D_SHADER_TYPE_PIXEL]; DWORD rt_mask, rt_mask_bits; unsigned int i; -@@ -2708,7 +2717,7 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const +@@ -2709,7 +2718,7 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const void context_state_fb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD rt_mask = find_draw_buffers_mask(context, state); @@ -109,7 +109,7 @@ index 8b12a39..8946676 100644 DWORD *cur_mask; if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) -@@ -2739,6 +2748,8 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat +@@ -2740,6 +2749,8 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat context_apply_draw_buffers(context, rt_mask); *cur_mask = rt_mask; } @@ -118,7 +118,7 @@ index 8b12a39..8946676 100644 } static void context_map_stage(struct wined3d_context *context, DWORD stage, DWORD unit) -@@ -3370,7 +3381,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context, +@@ -3371,7 +3382,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context, const struct wined3d_device *device, const struct wined3d_state *state) { const struct StateEntry *state_table = context->state_table; @@ -128,7 +128,7 @@ index 8b12a39..8946676 100644 WORD map; diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 6569b97..0553d4a 100644 +index c9c9b9c..446c642 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -328,19 +328,19 @@ static void wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data) @@ -281,10 +281,10 @@ index 6569b97..0553d4a 100644 HeapFree(GetProcessHeap(), 0, cs); } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 98a934c..6e118dc 100644 +index 604be94..e7f0a67 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -987,7 +987,7 @@ static void device_init_swapchain_state(struct wined3d_device *device, struct wi +@@ -995,7 +995,7 @@ static void device_init_swapchain_state(struct wined3d_device *device, struct wi BOOL ds_enable = !!swapchain->desc.enable_auto_depth_stencil; unsigned int i; @@ -293,7 +293,7 @@ index 98a934c..6e118dc 100644 { for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { -@@ -1005,7 +1005,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device, +@@ -1013,7 +1013,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc) { static const struct wined3d_color black = {0.0f, 0.0f, 0.0f, 0.0f}; @@ -301,7 +301,7 @@ index 98a934c..6e118dc 100644 struct wined3d_swapchain *swapchain = NULL; struct wined3d_context *context; DWORD clear_flags = 0; -@@ -1018,9 +1017,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device, +@@ -1026,9 +1025,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device, if (device->wined3d->flags & WINED3D_NO3D) return WINED3DERR_INVALIDCALL; @@ -311,7 +311,7 @@ index 98a934c..6e118dc 100644 if (FAILED(hr = device->shader_backend->shader_alloc_private(device, device->adapter->vertex_pipe, device->adapter->fragment_pipe))) { -@@ -1095,7 +1091,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device, +@@ -1103,7 +1099,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device, return WINED3D_OK; err_out: @@ -319,7 +319,7 @@ index 98a934c..6e118dc 100644 HeapFree(GetProcessHeap(), 0, device->swapchains); device->swapchain_count = 0; if (device->back_buffer_view) -@@ -1173,8 +1168,25 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device) +@@ -1181,8 +1176,25 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device) if (device->cursor_texture) wined3d_texture_decref(device->cursor_texture); @@ -345,7 +345,7 @@ index 98a934c..6e118dc 100644 /* Unload resources */ LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry) { -@@ -1205,37 +1217,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device) +@@ -1213,37 +1225,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device) * destroy the context. */ context_release(context); @@ -383,7 +383,7 @@ index 98a934c..6e118dc 100644 if (device->back_buffer_view) { wined3d_rendertarget_view_decref(device->back_buffer_view); -@@ -1253,9 +1234,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device) +@@ -1261,9 +1242,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device) device->swapchains = NULL; device->swapchain_count = 0; @@ -393,7 +393,7 @@ index 98a934c..6e118dc 100644 device->d3d_initialized = FALSE; return WINED3D_OK; -@@ -2072,7 +2050,7 @@ static void resolve_depth_buffer(struct wined3d_state *state) +@@ -2080,7 +2058,7 @@ static void resolve_depth_buffer(struct wined3d_state *state) || !(dst_texture->resource.format_flags & WINED3DFMT_FLAG_DEPTH)) return; @@ -402,7 +402,7 @@ index 98a934c..6e118dc 100644 return; if (src_view->resource->type == WINED3D_RTYPE_BUFFER) { -@@ -3467,6 +3445,8 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device) +@@ -3475,6 +3453,8 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device) HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_count, const RECT *rects, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) { @@ -411,7 +411,7 @@ index 98a934c..6e118dc 100644 TRACE("device %p, rect_count %u, rects %p, flags %#x, color %s, depth %.8e, stencil %u.\n", device, rect_count, rects, flags, debug_color(color), depth, stencil); -@@ -3478,7 +3458,7 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou +@@ -3486,7 +3466,7 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou if (flags & (WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL)) { @@ -420,7 +420,7 @@ index 98a934c..6e118dc 100644 if (!ds) { WARN("Clearing depth and/or stencil without a depth stencil buffer attached, returning WINED3DERR_INVALIDCALL\n"); -@@ -3487,8 +3467,8 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou +@@ -3495,8 +3475,8 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou } else if (flags & WINED3DCLEAR_TARGET) { @@ -431,7 +431,7 @@ index 98a934c..6e118dc 100644 { WARN("Silently ignoring depth and target clear with mismatching sizes\n"); return WINED3D_OK; -@@ -3804,8 +3784,8 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device +@@ -3812,8 +3792,8 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device if (state->render_states[WINED3D_RS_ZENABLE] || state->render_states[WINED3D_RS_ZWRITEENABLE] || state->render_states[WINED3D_RS_STENCILENABLE]) { @@ -442,7 +442,7 @@ index 98a934c..6e118dc 100644 if (ds && rt && (ds->width < rt->width || ds->height < rt->height)) { -@@ -4263,20 +4243,21 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(co +@@ -4271,20 +4251,21 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(co return NULL; } @@ -466,7 +466,7 @@ index 98a934c..6e118dc 100644 TRACE("device %p, view_idx %u, view %p, set_viewport %#x.\n", device, view_idx, view, set_viewport); -@@ -4313,13 +4294,13 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device +@@ -4321,13 +4302,13 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device } @@ -482,7 +482,7 @@ index 98a934c..6e118dc 100644 wined3d_cs_emit_set_rendertarget_view(device->cs, view_idx, view); /* Release after the assignment, to prevent device_resource_released() * from seeing the surface as still in use. */ -@@ -4331,18 +4312,19 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device +@@ -4339,18 +4320,19 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device void CDECL wined3d_device_set_depth_stencil_view(struct wined3d_device *device, struct wined3d_rendertarget_view *view) { @@ -504,7 +504,7 @@ index 98a934c..6e118dc 100644 wined3d_rendertarget_view_incref(view); wined3d_cs_emit_set_depth_stencil_view(device->cs, view); if (prev) -@@ -4705,10 +4687,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4710,10 +4692,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, wined3d_texture_decref(device->cursor_texture); device->cursor_texture = NULL; } @@ -516,7 +516,7 @@ index 98a934c..6e118dc 100644 { for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { -@@ -4717,6 +4698,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4722,6 +4703,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, } wined3d_device_set_depth_stencil_view(device, NULL); @@ -528,7 +528,7 @@ index 98a934c..6e118dc 100644 if (device->onscreen_depth_stencil) { wined3d_texture_decref(device->onscreen_depth_stencil->container); -@@ -4942,27 +4928,28 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, +@@ -4888,27 +4874,28 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, if (device->d3d_initialized) delete_opengl_contexts(device, swapchain); @@ -564,7 +564,7 @@ index 98a934c..6e118dc 100644 wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect); } -@@ -5052,11 +5039,11 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso +@@ -4998,11 +4985,11 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i) { @@ -578,7 +578,7 @@ index 98a934c..6e118dc 100644 ERR("Resource %p is still in use as depth/stencil buffer.\n", resource); switch (type) -@@ -5192,8 +5179,12 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d, +@@ -5138,8 +5125,12 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d, device->blitter = adapter->blitter; @@ -594,7 +594,7 @@ index 98a934c..6e118dc 100644 if (!(device->cs = wined3d_cs_create(device))) diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c -index dd82654..dd0f1d9 100644 +index e5b30db..1188009 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c @@ -412,7 +412,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s @@ -829,10 +829,10 @@ index 2fbfa2c..bb3c0cc 100644 if (type == WINED3D_SBT_RECORDED) return WINED3D_OK; diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index af7a92a..1b32ad0 100644 +index 3673fe9..5695a53 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -2568,7 +2568,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE +@@ -2566,7 +2566,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE { struct wined3d_texture *dst_texture = dst_surface->container; struct wined3d_device *device = dst_texture->resource.device; @@ -842,13 +842,13 @@ index af7a92a..1b32ad0 100644 struct wined3d_texture *src_texture; diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index cf3cb95..783a174 100644 +index 041e289..c2db0e4 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c -@@ -481,7 +481,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -488,7 +488,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT *src_rect, const RECT *dst_rect, DWORD flags) { - struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface; + struct wined3d_texture *back_buffer = swapchain->back_buffers[0]; - const struct wined3d_fb_state *fb = &swapchain->device->fb; + const struct wined3d_fb_state *fb = &swapchain->device->state.fb; const struct wined3d_gl_info *gl_info; @@ -877,7 +877,7 @@ index 93b610d..288c82e 100644 || !state->render_states[WINED3D_RS_CLIPPLANEENABLE]) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 63534ce..5e6cbda 100644 +index 4b4aecc..032d236 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1450,6 +1450,36 @@ struct wined3d_timestamp_query diff --git a/patches/wined3d-CSMT_Main/0020-wined3d-Pass-the-depth-stencil-to-swapchain-present.patch b/patches/wined3d-CSMT_Main/0020-wined3d-Pass-the-depth-stencil-to-swapchain-present.patch index f870d3e6..8c529eca 100644 --- a/patches/wined3d-CSMT_Main/0020-wined3d-Pass-the-depth-stencil-to-swapchain-present.patch +++ b/patches/wined3d-CSMT_Main/0020-wined3d-Pass-the-depth-stencil-to-swapchain-present.patch @@ -1,4 +1,4 @@ -From 2b155ebd27175664ee670e0213dff7295c3fbdff Mon Sep 17 00:00:00 2001 +From 896c9a5cbbf43da7bafda1c00169cb6b67c1a32a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 4 Apr 2013 14:52:24 +0200 Subject: wined3d: Pass the depth stencil to swapchain->present @@ -26,7 +26,7 @@ index 095fa0e..cacafec 100644 wined3d_resource_release(&swapchain->front_buffer->resource); for (i = 0; i < swapchain->desc.backbuffer_count; ++i) diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index c920919..33908dc 100644 +index 7a3cdd2..dd0f17d 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -485,10 +485,10 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct @@ -37,12 +37,12 @@ index c920919..33908dc 100644 + const RECT *src_rect, const RECT *dst_rect, DWORD flags, + struct wined3d_rendertarget_view *depth_stencil) { - struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface; + struct wined3d_texture *back_buffer = swapchain->back_buffers[0]; - const struct wined3d_fb_state *fb = &swapchain->device->state.fb; const struct wined3d_gl_info *gl_info; struct wined3d_texture *logo_texture; struct wined3d_context *context; -@@ -624,15 +624,15 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -621,15 +621,15 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, wined3d_texture_validate_location(swapchain->back_buffers[swapchain->desc.backbuffer_count - 1], 0, WINED3D_LOCATION_DISCARDED); @@ -61,7 +61,7 @@ index c920919..33908dc 100644 if (ds == swapchain->device->onscreen_depth_stencil) { wined3d_texture_decref(swapchain->device->onscreen_depth_stencil->container); -@@ -705,7 +705,8 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai +@@ -701,7 +701,8 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai } static void swapchain_gdi_present(struct wined3d_swapchain *swapchain, diff --git a/patches/wined3d-CSMT_Main/0101-wined3d-Use-surface_blt_ugly-in-swapchain_gl_present.patch b/patches/wined3d-CSMT_Main/0101-wined3d-Use-surface_blt_ugly-in-swapchain_gl_present.patch index dbe47c64..f9041e4f 100644 --- a/patches/wined3d-CSMT_Main/0101-wined3d-Use-surface_blt_ugly-in-swapchain_gl_present.patch +++ b/patches/wined3d-CSMT_Main/0101-wined3d-Use-surface_blt_ugly-in-swapchain_gl_present.patch @@ -1,4 +1,4 @@ -From aa7fbb82f5ce2b7bac9fd6cb74fcbaa85f5ac777 Mon Sep 17 00:00:00 2001 +From c41a1ed5fc68a6083416dd263e23fbd72544dfc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Sat, 7 May 2016 13:58:17 +0100 Subject: wined3d: Use surface_blt_ugly in swapchain_gl_present. @@ -8,30 +8,30 @@ Subject: wined3d: Use surface_blt_ugly in swapchain_gl_present. 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c -index a622844..87fae35 100644 +index b885fc7..16dd4c5 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c -@@ -503,7 +503,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -514,7 +514,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, RECT rect = {0, 0, logo_texture->resource.width, logo_texture->resource.height}; /* Blit the logo into the upper left corner of the drawable. */ -- wined3d_texture_blt(swapchain->back_buffers[0], 0, &rect, logo_texture, 0, &rect, -+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &rect, +- wined3d_texture_blt(back_buffer, 0, &rect, logo_texture, 0, &rect, ++ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &rect, + logo_texture->sub_resources[0].u.surface, &rect, WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT); } -@@ -532,8 +533,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -541,8 +542,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, if (swapchain->desc.windowed) MapWindowPoints(NULL, swapchain->win_handle, (POINT *)&dst_rect, 2); if (wined3d_clip_blit(&clip_rect, &dst_rect, &src_rect)) -- wined3d_texture_blt(swapchain->back_buffers[0], 0, &dst_rect, +- wined3d_texture_blt(back_buffer, 0, &dst_rect, - swapchain->device->cursor_texture, 0, &src_rect, -+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &dst_rect, ++ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &dst_rect, + swapchain->device->cursor_texture->sub_resources[0].u.surface, &src_rect, WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT); } -- -2.8.0 +2.9.0 diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index d2d35d51..29820b02 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -6463,26 +6463,19 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } else { -@@ -4380,10 +4732,18 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst - if (!wined3d_resource_is_offscreen(&dst_texture->resource)) - { - struct wined3d_context *context = context_acquire(device, dst_surface); -+#if !defined(STAGING_CSMT) - surface_load_location(dst_surface, context, dst_texture->resource.draw_binding); +@@ -4384,7 +4736,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst + context, dst_texture->resource.draw_binding); context_release(context); } ++#if !defined(STAGING_CSMT) return WINED3D_OK; +#else /* STAGING_CSMT */ -+ wined3d_texture_load_location(dst_texture, surface_get_sub_resource_idx(dst_surface), -+ context, dst_texture->resource.draw_binding); -+ context_release(context); -+ } + return; +#endif /* STAGING_CSMT */ } } } -@@ -4407,7 +4767,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst +@@ -4408,7 +4764,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, 0); dst_swapchain->desc.swap_effect = swap_effect; @@ -6494,7 +6487,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } if (fbo_blit_supported(&device->adapter->gl_info, blit_op, -@@ -4428,7 +4792,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst +@@ -4429,7 +4789,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst wined3d_texture_invalidate_location(dst_texture, dst_sub_resource_idx, ~dst_texture->resource.draw_binding); @@ -6506,7 +6499,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, blit_op, -@@ -4438,7 +4806,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst +@@ -4439,7 +4803,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst { blitter->blit_surface(device, blit_op, filter, src_surface, src_rect, dst_surface, dst_rect, color_key); @@ -6518,7 +6511,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c } } } -@@ -4446,9 +4818,156 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst +@@ -4447,9 +4815,156 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst fallback: /* Special cases for render targets. */ if (SUCCEEDED(surface_blt_special(dst_surface, dst_rect, src_surface, src_rect, flags, fx, filter))) @@ -6692,100 +6685,52 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c swapchain_cleanup(swapchain); swapchain->parent_ops->wined3d_object_destroyed(swapchain->parent); HeapFree(GetProcessHeap(), 0, swapchain); -@@ -334,7 +341,11 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, - if (texture->resource.multisample_type) - { - location = WINED3D_LOCATION_RB_RESOLVED; -+#if !defined(STAGING_CSMT) - surface_load_location(back_buffer, context, location); -+#else /* STAGING_CSMT */ -+ wined3d_texture_load_location(texture, 0, context, location); -+#endif /* STAGING_CSMT */ - } - - context_apply_fbo_state_blit(context, GL_READ_FRAMEBUFFER, back_buffer, NULL, location); -@@ -464,7 +475,11 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct - sub_resource = &texture->sub_resources[0]; - - if (!(sub_resource->locations & supported_locations)) -+#if !defined(STAGING_CSMT) - surface_load_location(sub_resource->u.surface, context, texture->resource.draw_binding); -+#else /* STAGING_CSMT */ -+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding); -+#endif /* STAGING_CSMT */ - - texture_prev->texture_rgb = texture->texture_rgb; - texture_prev->rb_multisample = texture->rb_multisample; -@@ -485,10 +500,17 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct +@@ -485,10 +492,17 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct } static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +#if !defined(STAGING_CSMT) const RECT *src_rect, const RECT *dst_rect, DWORD flags) { - struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface; + struct wined3d_texture *back_buffer = swapchain->back_buffers[0]; const struct wined3d_fb_state *fb = &swapchain->device->fb; +#else /* STAGING_CSMT */ + const RECT *src_rect, const RECT *dst_rect, DWORD flags, + struct wined3d_rendertarget_view *depth_stencil) +{ -+ struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface; ++ struct wined3d_texture *back_buffer = swapchain->back_buffers[0]; +#endif /* STAGING_CSMT */ const struct wined3d_gl_info *gl_info; struct wined3d_texture *logo_texture; struct wined3d_context *context; -@@ -509,7 +531,12 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -509,7 +523,12 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, RECT rect = {0, 0, logo_texture->resource.width, logo_texture->resource.height}; /* Blit the logo into the upper left corner of the drawable. */ +#if !defined(STAGING_CSMT) - wined3d_texture_blt(swapchain->back_buffers[0], 0, &rect, logo_texture, 0, &rect, + wined3d_texture_blt(back_buffer, 0, &rect, logo_texture, 0, &rect, +#else /* STAGING_CSMT */ -+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &rect, ++ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &rect, + logo_texture->sub_resources[0].u.surface, &rect, +#endif /* STAGING_CSMT */ WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT); } -@@ -538,8 +565,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -536,8 +555,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, if (swapchain->desc.windowed) MapWindowPoints(NULL, swapchain->win_handle, (POINT *)&dst_rect, 2); if (wined3d_clip_blit(&clip_rect, &dst_rect, &src_rect)) +#if !defined(STAGING_CSMT) - wined3d_texture_blt(swapchain->back_buffers[0], 0, &dst_rect, + wined3d_texture_blt(back_buffer, 0, &dst_rect, swapchain->device->cursor_texture, 0, &src_rect, +#else /* STAGING_CSMT */ -+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &dst_rect, ++ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &dst_rect, + swapchain->device->cursor_texture->sub_resources[0].u.surface, &src_rect, +#endif /* STAGING_CSMT */ WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT); } -@@ -563,14 +595,23 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, - */ - if (!swapchain->render_to_fbo && render_to_fbo && wined3d_settings.offscreen_rendering_mode == ORM_FBO) - { -+#if !defined(STAGING_CSMT) - surface_load_location(back_buffer, context, WINED3D_LOCATION_TEXTURE_RGB); -+#else /* STAGING_CSMT */ -+ wined3d_texture_load_location(back_buffer->container, 0, context, WINED3D_LOCATION_TEXTURE_RGB); -+#endif /* STAGING_CSMT */ - wined3d_texture_invalidate_location(back_buffer->container, 0, WINED3D_LOCATION_DRAWABLE); - swapchain->render_to_fbo = TRUE; - swapchain_update_draw_bindings(swapchain); - } - else - { -+#if !defined(STAGING_CSMT) - surface_load_location(back_buffer, context, back_buffer->container->resource.draw_binding); -+#else /* STAGING_CSMT */ -+ wined3d_texture_load_location(swapchain->back_buffers[0], 0, context, -+ swapchain->back_buffers[0]->resource.draw_binding); -+#endif /* STAGING_CSMT */ - } - - if (swapchain->render_to_fbo) -@@ -583,8 +624,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -581,8 +605,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, swapchain_blit(swapchain, context, src_rect, dst_rect); } @@ -6799,7 +6744,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c /* call wglSwapBuffers through the gl table to avoid confusing the Steam overlay */ gl_info->gl_ops.wgl.p_wglSwapBuffers(context->hdc); -@@ -621,19 +667,33 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, +@@ -619,19 +648,33 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, wined3d_texture_validate_location(swapchain->back_buffers[swapchain->desc.backbuffer_count - 1], 0, WINED3D_LOCATION_DISCARDED); @@ -6833,29 +6778,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c } } } -@@ -643,12 +703,21 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, - - static void swapchain_gl_frontbuffer_updated(struct wined3d_swapchain *swapchain) - { -+#if !defined(STAGING_CSMT) - struct wined3d_surface *surface; - struct wined3d_context *context; - - surface = swapchain->front_buffer->sub_resources[0].u.surface; - context = context_acquire(swapchain->device, surface); - surface_load_location(surface, context, surface->container->resource.draw_binding); -+#else /* STAGING_CSMT */ -+ struct wined3d_texture *texture = swapchain->front_buffer; -+ struct wined3d_surface *surface = texture->sub_resources[0].u.surface; -+ struct wined3d_context *context; -+ -+ context = context_acquire(swapchain->device, surface); -+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding); -+#endif /* STAGING_CSMT */ - context_release(context); - SetRectEmpty(&swapchain->front_buffer_update); - } -@@ -702,7 +771,12 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai +@@ -699,7 +742,12 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai } static void swapchain_gdi_present(struct wined3d_swapchain *swapchain, @@ -6868,7 +6791,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c { struct wined3d_surface *front, *back; HBITMAP bitmap; -@@ -813,6 +887,71 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s +@@ -810,6 +858,71 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s *quality = 0; } @@ -6940,7 +6863,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3d_device *device, struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops) { -@@ -935,6 +1074,7 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3 +@@ -932,6 +1045,7 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3 if (!(device->wined3d->flags & WINED3D_NO3D)) { @@ -6948,7 +6871,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c static const enum wined3d_format_id formats[] = { WINED3DFMT_D24_UNORM_S8_UINT, -@@ -990,6 +1130,11 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3 +@@ -987,6 +1101,11 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3 } context_release(swapchain->context[0]); swapchain_update_swap_interval(swapchain); @@ -6960,7 +6883,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c } if (swapchain->desc.backbuffer_count > 0) -@@ -1315,6 +1460,9 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha +@@ -1312,6 +1431,9 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha enum wined3d_multisample_type multisample_type, unsigned int multisample_quality) { BOOL update_desc = FALSE; @@ -6970,7 +6893,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c TRACE("swapchain %p, buffer_count %u, width %u, height %u, format %s, " "multisample_type %#x, multisample_quality %#x.\n", -@@ -1326,6 +1474,11 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha +@@ -1323,6 +1445,11 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha if (buffer_count && buffer_count != swapchain->desc.backbuffer_count) FIXME("Cannot change the back buffer count yet.\n");