From 476a9c608e514b5ce477023c9d0f6befea7cf424 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Tue, 5 Apr 2016 18:20:22 +0200 Subject: [PATCH] Rebase against be91fcd879a1de768a57b4a06be470c10313b08d. [advapi32-RegNotifyChangeKeyValue] Removed patch to fix return value of RegNotifyChangeKeyValue for pending events (accepted upstream). --- ...urn-value-of-RegNotifyChangeKeyValue.patch | 74 --------------- .../definition | 1 - ...86.exe16-Emulate-GDT-and-LDT-access.patch} | 0 ...ulate-mov-Eb-Gb-instruction-on-x86-p.patch | 90 ------------------- patches/patchinstall.sh | 25 +----- ...rack-if-a-context-s-hdc-is-private-s.patch | 32 +++---- ...extremely-noisy-FIXME-in-wined3d_tex.patch | 8 +- ...ined3d_resource_-un-map-to-wined3d_r.patch | 64 +++++++------ 8 files changed, 58 insertions(+), 236 deletions(-) delete mode 100644 patches/advapi32-RegNotifyChangeKeyValue/0001-advapi32-Fix-return-value-of-RegNotifyChangeKeyValue.patch delete mode 100644 patches/advapi32-RegNotifyChangeKeyValue/definition rename patches/krnl386.exe16-GDT_LDT_Emulation/{0002-krnl386.exe16-Emulate-GDT-and-LDT-access.patch => 0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch} (100%) delete mode 100644 patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-mov-Eb-Gb-instruction-on-x86-p.patch diff --git a/patches/advapi32-RegNotifyChangeKeyValue/0001-advapi32-Fix-return-value-of-RegNotifyChangeKeyValue.patch b/patches/advapi32-RegNotifyChangeKeyValue/0001-advapi32-Fix-return-value-of-RegNotifyChangeKeyValue.patch deleted file mode 100644 index ba1ef6ff..00000000 --- a/patches/advapi32-RegNotifyChangeKeyValue/0001-advapi32-Fix-return-value-of-RegNotifyChangeKeyValue.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 63e3d8fa86ea5bb6dd9154754d57b680b00533ad Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Thu, 24 Mar 2016 02:42:22 +0100 -Subject: advapi32: Fix return value of RegNotifyChangeKeyValue for pending - events. - -Also remove handling for STATUS_TIMEOUT. Is it ever returned? ---- - dlls/advapi32/registry.c | 2 +- - dlls/advapi32/tests/registry.c | 28 ++++++++++++++++++++++++++++ - 2 files changed, 29 insertions(+), 1 deletion(-) - -diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c -index 7992384..4b3d852 100644 ---- a/dlls/advapi32/registry.c -+++ b/dlls/advapi32/registry.c -@@ -2760,7 +2760,7 @@ LSTATUS WINAPI RegNotifyChangeKeyValue( HKEY hkey, BOOL fWatchSubTree, - fdwNotifyFilter, fWatchSubTree, NULL, 0, - fAsync); - -- if (status && status != STATUS_TIMEOUT) -+ if (status && status != STATUS_PENDING) - return RtlNtStatusToDosError( status ); - - return ERROR_SUCCESS; -diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c -index f877b36..82f5015 100644 ---- a/dlls/advapi32/tests/registry.c -+++ b/dlls/advapi32/tests/registry.c -@@ -3452,6 +3452,33 @@ static void test_RegOpenCurrentUser(void) - RegCloseKey(key); - } - -+static void test_RegNotifyChangeKeyValue(void) -+{ -+ HKEY key, subkey; -+ HANDLE event; -+ DWORD dwret; -+ LONG ret; -+ -+ event = CreateEventW(NULL, FALSE, TRUE, NULL); -+ ok(event != NULL, "CreateEvent failed, error %u\n", GetLastError()); -+ ret = RegCreateKeyA(hkey_main, "TestKey", &key); -+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret); -+ -+ ret = RegNotifyChangeKeyValue(key, TRUE, REG_NOTIFY_CHANGE_NAME, event, TRUE); -+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret); -+ dwret = WaitForSingleObject(event, 0); -+ ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret); -+ -+ ret = RegCreateKeyA(key, "SubKey", &subkey); -+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret); -+ dwret = WaitForSingleObject(event, 0); -+ ok(dwret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", dwret); -+ -+ RegDeleteKeyA(key, ""); -+ RegCloseKey(key); -+ CloseHandle(event); -+} -+ - START_TEST(registry) - { - /* Load pointers for functions that are not available in all Windows versions */ -@@ -3486,6 +3513,7 @@ START_TEST(registry) - test_delete_value(); - test_delete_key_value(); - test_RegOpenCurrentUser(); -+ test_RegNotifyChangeKeyValue(); - - /* cleanup */ - delete_key( hkey_main ); --- -2.7.1 - diff --git a/patches/advapi32-RegNotifyChangeKeyValue/definition b/patches/advapi32-RegNotifyChangeKeyValue/definition deleted file mode 100644 index ff442729..00000000 --- a/patches/advapi32-RegNotifyChangeKeyValue/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [39863] Fix return value of RegNotifyChangeKeyValue for pending events diff --git a/patches/krnl386.exe16-GDT_LDT_Emulation/0002-krnl386.exe16-Emulate-GDT-and-LDT-access.patch b/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch similarity index 100% rename from patches/krnl386.exe16-GDT_LDT_Emulation/0002-krnl386.exe16-Emulate-GDT-and-LDT-access.patch rename to patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch diff --git a/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-mov-Eb-Gb-instruction-on-x86-p.patch b/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-mov-Eb-Gb-instruction-on-x86-p.patch deleted file mode 100644 index 7d341ef9..00000000 --- a/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-mov-Eb-Gb-instruction-on-x86-p.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 3b1a8788726b7031baa66985329f4071fc0600a7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Fri, 26 Feb 2016 23:14:25 +0100 -Subject: krnl386.exe16: Emulate 'mov Eb, Gb' instruction on x86 processor - architecture. - -Stolen from Sebastian Lackners ntorkrnl implementation. ---- - dlls/krnl386.exe16/instr.c | 35 +++++++++++++++++++++++++++++------ - 1 file changed, 29 insertions(+), 6 deletions(-) - -diff --git a/dlls/krnl386.exe16/instr.c b/dlls/krnl386.exe16/instr.c -index b44bd55..b0de30f 100644 ---- a/dlls/krnl386.exe16/instr.c -+++ b/dlls/krnl386.exe16/instr.c -@@ -113,7 +113,7 @@ static BOOL INSTR_ReplaceSelector( CONTEXT *context, WORD *sel ) - - - /* store an operand into a register */ --static void store_reg( CONTEXT *context, BYTE regmodrm, const BYTE *addr, int long_op ) -+static void store_reg_word( CONTEXT *context, BYTE regmodrm, const BYTE *addr, int long_op ) - { - switch((regmodrm >> 3) & 7) - { -@@ -152,6 +152,22 @@ static void store_reg( CONTEXT *context, BYTE regmodrm, const BYTE *addr, int lo - } - } - -+/* store an operand into a byte register */ -+static void store_reg_byte( CONTEXT *context, BYTE regmodrm, const BYTE *addr ) -+{ -+ switch((regmodrm >> 3) & 7) -+ { -+ case 0: context->Eax = (context->Eax & 0xffffff00) | *addr; break; -+ case 1: context->Ecx = (context->Ecx & 0xffffff00) | *addr; break; -+ case 2: context->Edx = (context->Edx & 0xffffff00) | *addr; break; -+ case 3: context->Ebx = (context->Ebx & 0xffffff00) | *addr; break; -+ case 4: context->Eax = (context->Eax & 0xffff00ff) | (*addr << 8); break; -+ case 5: context->Ecx = (context->Ecx & 0xffff00ff) | (*addr << 8); break; -+ case 6: context->Edx = (context->Edx & 0xffff00ff) | (*addr << 8); break; -+ case 7: context->Ebx = (context->Ebx & 0xffff00ff) | (*addr << 8); break; -+ } -+} -+ - /*********************************************************************** - * INSTR_GetOperandAddr - * -@@ -333,7 +349,7 @@ static BOOL INSTR_EmulateLDS( CONTEXT *context, BYTE *instr, int long_op, - - /* Now store the offset in the correct register */ - -- store_reg( context, *regmodrm, addr, long_op ); -+ store_reg_word( context, *regmodrm, addr, long_op ); - - /* Store the correct segment in the segment register */ - -@@ -689,19 +705,26 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) - } - return ExceptionContinueExecution; - -+ case 0x8a: /* mov Eb, Gb */ - case 0x8b: /* mov Ev, Gv */ - { -- BYTE *addr = INSTR_GetOperandAddr(context, instr + 1, long_addr, -+ BYTE *data = INSTR_GetOperandAddr(context, instr + 1, long_addr, - segprefix, &len); -+ unsigned int data_size = (*instr == 0x8b) ? (long_op ? 4 : 2) : 1; - struct idtr idtr = get_idtr(); -- unsigned int offset = addr - idtr.base; -+ unsigned int offset = data - idtr.base; - -- if (offset <= idtr.limit + 1 - (long_op ? 4 : 2)) -+ if (offset <= idtr.limit + 1 - data_size) - { - idt[1].LimitLow = 0x100; /* FIXME */ - idt[2].LimitLow = 0x11E; /* FIXME */ - idt[3].LimitLow = 0x500; /* FIXME */ -- store_reg( context, instr[1], (BYTE *)idt + offset, long_op ); -+ -+ switch (*instr) -+ { -+ case 0x8a: store_reg_byte( context, instr[1], (BYTE *)idt + offset ); break; -+ case 0x8b: store_reg_word( context, instr[1], (BYTE *)idt + offset, long_op ); break; -+ } - context->Eip += prefixlen + len + 1; - return ExceptionContinueExecution; - } --- -2.7.1 - diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 84dd3c2a..84fd25b9 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "f6c10b8a75943dc3a49890c9c7a64c91752a4ee0" + echo "be91fcd879a1de768a57b4a06be470c10313b08d" } # Show version information @@ -86,7 +86,6 @@ patch_enable_all () enable_Pipelight="$1" enable_Staging="$1" enable_advapi32_LsaLookupSids="$1" - enable_advapi32_RegNotifyChangeKeyValue="$1" enable_advapi32_SetSecurityInfo="$1" enable_amstream_GetMultiMediaStream="$1" enable_api_ms_win_Stub_DLLs="$1" @@ -433,9 +432,6 @@ patch_enable () advapi32-LsaLookupSids) enable_advapi32_LsaLookupSids="$2" ;; - advapi32-RegNotifyChangeKeyValue) - enable_advapi32_RegNotifyChangeKeyValue="$2" - ;; advapi32-SetSecurityInfo) enable_advapi32_SetSecurityInfo="$2" ;; @@ -2546,21 +2542,6 @@ if test "$enable_advapi32_LsaLookupSids" -eq 1; then ) >> "$patchlist" fi -# Patchset advapi32-RegNotifyChangeKeyValue -# | -# | This patchset fixes the following Wine bugs: -# | * [#39863] Fix return value of RegNotifyChangeKeyValue for pending events -# | -# | Modified files: -# | * dlls/advapi32/registry.c, dlls/advapi32/tests/registry.c -# | -if test "$enable_advapi32_RegNotifyChangeKeyValue" -eq 1; then - patch_apply advapi32-RegNotifyChangeKeyValue/0001-advapi32-Fix-return-value-of-RegNotifyChangeKeyValue.patch - ( - echo '+ { "Sebastian Lackner", "advapi32: Fix return value of RegNotifyChangeKeyValue for pending events.", 1 },'; - ) >> "$patchlist" -fi - # Patchset advapi32-SetSecurityInfo # | # | This patchset fixes the following Wine bugs: @@ -4308,10 +4289,8 @@ fi # | * dlls/krnl386.exe16/instr.c # | if test "$enable_krnl386_exe16_GDT_LDT_Emulation" -eq 1; then - patch_apply krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-mov-Eb-Gb-instruction-on-x86-p.patch - patch_apply krnl386.exe16-GDT_LDT_Emulation/0002-krnl386.exe16-Emulate-GDT-and-LDT-access.patch + patch_apply krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch ( - echo '+ { "Michael Müller", "krnl386.exe16: Emulate '\''mov Eb, Gb'\'' instruction on x86 processor architecture.", 1 },'; echo '+ { "Michael Müller", "krnl386.exe16: Emulate GDT and LDT access.", 1 },'; ) >> "$patchlist" fi diff --git a/patches/wined3d-Revert_PixelFormat/0003-Revert-wined3d-Track-if-a-context-s-hdc-is-private-s.patch b/patches/wined3d-Revert_PixelFormat/0003-Revert-wined3d-Track-if-a-context-s-hdc-is-private-s.patch index bcadaf7f..695e7a32 100644 --- a/patches/wined3d-Revert_PixelFormat/0003-Revert-wined3d-Track-if-a-context-s-hdc-is-private-s.patch +++ b/patches/wined3d-Revert_PixelFormat/0003-Revert-wined3d-Track-if-a-context-s-hdc-is-private-s.patch @@ -1,4 +1,4 @@ -From 8e605496655d72d832a822ba6adc77fdc2540216 Mon Sep 17 00:00:00 2001 +From 5c8e815ea863794e9c598e99a3b3d7357478d067 Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Sun, 14 Sep 2014 19:47:03 -0500 Subject: Revert "wined3d: Track if a context's hdc is private so we never need @@ -11,10 +11,10 @@ This reverts commit 272873823e9beff91ea1a62845fc7e5f94a9636f. 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c -index cfd6ec6..ed14aa4 100644 +index 45dae36..ab217fc 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c -@@ -812,7 +812,7 @@ static BOOL context_restore_pixel_format(struct wined3d_context *ctx) +@@ -939,7 +939,7 @@ static BOOL context_restore_pixel_format(struct wined3d_context *ctx) return ret; } @@ -23,7 +23,7 @@ index cfd6ec6..ed14aa4 100644 { const struct wined3d_gl_info *gl_info = context->gl_info; int current = GetPixelFormat(dc); -@@ -830,7 +830,7 @@ static BOOL context_set_pixel_format(struct wined3d_context *context, HDC dc, BO +@@ -957,7 +957,7 @@ static BOOL context_set_pixel_format(struct wined3d_context *context, HDC dc, BO } context->restore_pf = 0; @@ -32,7 +32,7 @@ index cfd6ec6..ed14aa4 100644 return TRUE; } -@@ -849,12 +849,12 @@ static BOOL context_set_pixel_format(struct wined3d_context *context, HDC dc, BO +@@ -976,12 +976,12 @@ static BOOL context_set_pixel_format(struct wined3d_context *context, HDC dc, BO return FALSE; } @@ -47,7 +47,7 @@ index cfd6ec6..ed14aa4 100644 context->restore_pf_win = win; } -@@ -875,7 +875,7 @@ static BOOL context_set_gl_context(struct wined3d_context *ctx) +@@ -1002,7 +1002,7 @@ static BOOL context_set_gl_context(struct wined3d_context *ctx) struct wined3d_swapchain *swapchain = ctx->swapchain; BOOL backup = FALSE; @@ -56,7 +56,7 @@ index cfd6ec6..ed14aa4 100644 { WARN("Failed to set pixel format %d on device context %p.\n", ctx->pixel_format, ctx->hdc); -@@ -908,7 +908,7 @@ static BOOL context_set_gl_context(struct wined3d_context *ctx) +@@ -1035,7 +1035,7 @@ static BOOL context_set_gl_context(struct wined3d_context *ctx) return FALSE; } @@ -65,7 +65,7 @@ index cfd6ec6..ed14aa4 100644 { ERR("Failed to set pixel format %d on device context %p.\n", ctx->pixel_format, dc); -@@ -952,7 +952,6 @@ static void context_update_window(struct wined3d_context *context) +@@ -1079,7 +1079,6 @@ static void context_update_window(struct wined3d_context *context) wined3d_release_dc(context->win_handle, context->hdc); context->win_handle = context->swapchain->win_handle; @@ -73,15 +73,15 @@ index cfd6ec6..ed14aa4 100644 context->needs_set = 1; context->valid = 1; -@@ -1446,7 +1445,6 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, - int swap_interval; +@@ -1573,7 +1572,6 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, + unsigned int s; DWORD state; HDC hdc = 0; - BOOL hdc_is_private = FALSE; TRACE("swapchain %p, target %p, window %p.\n", swapchain, target, swapchain->win_handle); -@@ -1519,9 +1517,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, +@@ -1651,9 +1649,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, { WARN("Failed to retrieve device context, trying swapchain backup.\n"); @@ -92,7 +92,7 @@ index cfd6ec6..ed14aa4 100644 { ERR("Failed to retrieve a device context.\n"); goto out; -@@ -1587,7 +1583,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, +@@ -1719,7 +1715,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, ret->gl_info = gl_info; @@ -101,7 +101,7 @@ index cfd6ec6..ed14aa4 100644 { ERR("Failed to set pixel format %d on device context %p.\n", pixel_format, hdc); context_release(ret); -@@ -1650,7 +1646,6 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, +@@ -1783,7 +1779,6 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain, ret->glCtx = ctx; ret->win_handle = swapchain->win_handle; ret->hdc = hdc; @@ -110,10 +110,10 @@ index cfd6ec6..ed14aa4 100644 ret->needs_set = 1; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index a5e7167..00ecbc4 100644 +index 7c9b4d2..8683604 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -1218,9 +1218,8 @@ struct wined3d_context +@@ -1356,9 +1356,8 @@ struct wined3d_context DWORD use_immediate_mode_draw : 1; DWORD rebind_fbo : 1; DWORD needs_set : 1; @@ -125,5 +125,5 @@ index a5e7167..00ecbc4 100644 DWORD constant_update_mask; DWORD numbered_array_mask; -- -2.6.4 +2.7.1 diff --git a/patches/wined3d-Silence_FIXMEs/0006-wined3d-Silence-extremely-noisy-FIXME-in-wined3d_tex.patch b/patches/wined3d-Silence_FIXMEs/0006-wined3d-Silence-extremely-noisy-FIXME-in-wined3d_tex.patch index 52e50fb3..2fb8a0e8 100644 --- a/patches/wined3d-Silence_FIXMEs/0006-wined3d-Silence-extremely-noisy-FIXME-in-wined3d_tex.patch +++ b/patches/wined3d-Silence_FIXMEs/0006-wined3d-Silence-extremely-noisy-FIXME-in-wined3d_tex.patch @@ -1,4 +1,4 @@ -From 8ab4cc3db3686130a15d6698675c836cebf5f78f Mon Sep 17 00:00:00 2001 +From bf05198e84d5e154902542508e769163fcda3cc8 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 21 Mar 2016 18:27:59 +0100 Subject: wined3d: Silence extremely noisy FIXME in @@ -9,10 +9,10 @@ Subject: wined3d: Silence extremely noisy FIXME in 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c -index 4d2a94f..853564e 100644 +index 3476b32e..ec2f372 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c -@@ -898,7 +898,7 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, +@@ -1036,7 +1036,7 @@ HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, } if (dirty_region) @@ -20,7 +20,7 @@ index 4d2a94f..853564e 100644 + WARN("Ignoring dirty_region %s.\n", debug_box(dirty_region)); context = context_acquire(texture->resource.device, NULL); - if (!texture->texture_ops->texture_load_location(texture, sub_resource_idx, context, sub_resource->map_binding)) + if (!texture->texture_ops->texture_load_location(texture, sub_resource_idx, -- 2.7.1 diff --git a/patches/wined3d-resource_map/0001-wined3d-Rename-wined3d_resource_-un-map-to-wined3d_r.patch b/patches/wined3d-resource_map/0001-wined3d-Rename-wined3d_resource_-un-map-to-wined3d_r.patch index 845a6d71..118017db 100644 --- a/patches/wined3d-resource_map/0001-wined3d-Rename-wined3d_resource_-un-map-to-wined3d_r.patch +++ b/patches/wined3d-resource_map/0001-wined3d-Rename-wined3d_resource_-un-map-to-wined3d_r.patch @@ -1,4 +1,4 @@ -From b1ebd3a49593c0feb4780fd9cf47910095c3c8fc Mon Sep 17 00:00:00 2001 +From 70aa91068703ddf7f6edb982f1a1c37482df7dcf Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Wed, 4 Nov 2015 19:31:30 +0100 Subject: wined3d: Rename wined3d_resource_(un)map to @@ -21,7 +21,7 @@ To avoid name conflicts in the CSMT patchset. 12 files changed, 44 insertions(+), 44 deletions(-) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c -index 4e84dad..551dea7 100644 +index f0bb52e..b804bc4 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -273,7 +273,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_immediate_context_Map(ID3D11DeviceContext @@ -227,7 +227,7 @@ index 83457fc..7f51a1d 100644 if (src_surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_MIPMAP) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 62e5129..0a32e14 100644 +index 5231533..42dd0f1 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3569,7 +3569,7 @@ static HRESULT wined3d_device_update_texture_3d(struct wined3d_device *device, @@ -248,7 +248,7 @@ index 62e5129..0a32e14 100644 goto done; } -@@ -4289,7 +4289,7 @@ static struct wined3d_texture *wined3d_device_create_cursor_texture(struct wined +@@ -4293,7 +4293,7 @@ static struct wined3d_texture *wined3d_device_create_cursor_texture(struct wined struct wined3d_texture *texture; HRESULT hr; @@ -257,7 +257,7 @@ index 62e5129..0a32e14 100644 { ERR("Failed to map source texture.\n"); return NULL; -@@ -4312,7 +4312,7 @@ static struct wined3d_texture *wined3d_device_create_cursor_texture(struct wined +@@ -4316,7 +4316,7 @@ static struct wined3d_texture *wined3d_device_create_cursor_texture(struct wined hr = wined3d_texture_create(device, &desc, 1, WINED3D_TEXTURE_CREATE_MAPPABLE, &data, NULL, &wined3d_null_parent_ops, &texture); @@ -266,7 +266,7 @@ index 62e5129..0a32e14 100644 if (FAILED(hr)) { ERR("Failed to create cursor texture.\n"); -@@ -4392,14 +4392,14 @@ HRESULT CDECL wined3d_device_set_cursor_properties(struct wined3d_device *device +@@ -4396,14 +4396,14 @@ HRESULT CDECL wined3d_device_set_cursor_properties(struct wined3d_device *device return E_OUTOFMEMORY; memset(mask_bits, 0xff, mask_size); @@ -306,41 +306,49 @@ index 423d162..0821fde 100644 TRACE("resource %p, sub_resource_idx %u.\n", resource, sub_resource_idx); diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c -index a7dfbf5..d47f3a9 100644 +index 16d03e8..aece7e5 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c -@@ -1735,25 +1735,25 @@ static struct wined3d_texture *surface_convert_format(struct wined3d_texture *sr - memset(&src_map, 0, sizeof(src_map)); - memset(&dst_map, 0, sizeof(dst_map)); +@@ -1737,7 +1737,7 @@ static struct wined3d_texture *surface_convert_format(struct wined3d_texture *sr + } + memset(&src_map, 0, sizeof(src_map)); - if (FAILED(wined3d_resource_map(&src_texture->resource, sub_resource_idx, + if (FAILED(wined3d_resource_sub_resource_map(&src_texture->resource, sub_resource_idx, &src_map, NULL, WINED3D_MAP_READONLY))) { ERR("Failed to map the source texture.\n"); - wined3d_texture_decref(dst_texture); - return NULL; +@@ -1749,17 +1749,17 @@ static struct wined3d_texture *surface_convert_format(struct wined3d_texture *sr + struct wined3d_map_desc dst_map; + + memset(&dst_map, 0, sizeof(dst_map)); +- if (FAILED(wined3d_resource_map(&dst_texture->resource, 0, &dst_map, NULL, 0))) ++ if (FAILED(wined3d_resource_sub_resource_map(&dst_texture->resource, 0, &dst_map, NULL, 0))) + { + ERR("Failed to map the destination texture.\n"); +- wined3d_resource_unmap(&src_texture->resource, sub_resource_idx); ++ wined3d_resource_sub_resource_unmap(&src_texture->resource, sub_resource_idx); + wined3d_texture_decref(dst_texture); + return NULL; + } + + conv->convert(src_map.data, dst_map.data, src_map.row_pitch, dst_map.row_pitch, desc.width, desc.height); + +- wined3d_resource_unmap(&dst_texture->resource, 0); ++ wined3d_resource_sub_resource_unmap(&dst_texture->resource, 0); } -- if (FAILED(wined3d_resource_map(&dst_texture->resource, 0, &dst_map, NULL, 0))) -+ if (FAILED(wined3d_resource_sub_resource_map(&dst_texture->resource, 0, &dst_map, NULL, 0))) + else { - ERR("Failed to map the destination texture.\n"); -- wined3d_resource_unmap(&src_texture->resource, sub_resource_idx); -+ wined3d_resource_sub_resource_unmap(&src_texture->resource, sub_resource_idx); - wined3d_texture_decref(dst_texture); - return NULL; +@@ -1783,7 +1783,7 @@ static struct wined3d_texture *surface_convert_format(struct wined3d_texture *sr + wined3d_texture_validate_location(dst_texture, 0, WINED3D_LOCATION_TEXTURE_RGB); + wined3d_texture_invalidate_location(dst_texture, 0, ~WINED3D_LOCATION_TEXTURE_RGB); } - - conv->convert(src_map.data, dst_map.data, src_map.row_pitch, dst_map.row_pitch, desc.width, desc.height); - -- wined3d_resource_unmap(&dst_texture->resource, 0); - wined3d_resource_unmap(&src_texture->resource, sub_resource_idx); -+ wined3d_resource_sub_resource_unmap(&dst_texture->resource, 0); + wined3d_resource_sub_resource_unmap(&src_texture->resource, sub_resource_idx); return dst_texture; } -@@ -3648,7 +3648,7 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int +@@ -3678,7 +3678,7 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int if (src_texture == dst_texture && src_sub_resource_idx == dst_sub_resource_idx) { same_sub_resource = TRUE; @@ -349,7 +357,7 @@ index a7dfbf5..d47f3a9 100644 src_map = dst_map; src_format = dst_texture->resource.format; dst_format = src_format; -@@ -3673,7 +3673,7 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int +@@ -3703,7 +3703,7 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int src_texture = converted_texture; src_sub_resource_idx = 0; } @@ -358,7 +366,7 @@ index a7dfbf5..d47f3a9 100644 src_format = src_texture->resource.format; src_fmt_flags = src_texture->resource.format_flags; } -@@ -3683,7 +3683,7 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int +@@ -3713,7 +3713,7 @@ static HRESULT surface_cpu_blt(struct wined3d_texture *dst_texture, unsigned int src_fmt_flags = dst_fmt_flags; } @@ -367,7 +375,7 @@ index a7dfbf5..d47f3a9 100644 } bpp = dst_format->byte_count; -@@ -4099,9 +4099,9 @@ error: +@@ -4129,9 +4129,9 @@ error: FIXME(" Unsupported flags %#x.\n", flags); release: