diff --git a/patches/d3d11-Deferred_Context/0045-d3d11-Implement-ID3D11Device2-GetImmediateContext1.patch b/patches/d3d11-Deferred_Context/0045-d3d11-Implement-ID3D11Device2-GetImmediateContext1.patch new file mode 100644 index 00000000..8e4e807a --- /dev/null +++ b/patches/d3d11-Deferred_Context/0045-d3d11-Implement-ID3D11Device2-GetImmediateContext1.patch @@ -0,0 +1,44 @@ +From 2537d783b525e7ec2239b87b17916d15e0130add Mon Sep 17 00:00:00 2001 +From: Alistair Leslie-Hughes +Date: Mon, 1 Jun 2020 16:34:54 +1000 +Subject: [PATCH] d3d11: Implement ID3D11Device2 GetImmediateContext1 + +Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=41636 +--- + dlls/d3d11/device.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c +index a649be2f8ea..28100c2f9db 100644 +--- a/dlls/d3d11/device.c ++++ b/dlls/d3d11/device.c +@@ -7174,9 +7174,24 @@ static void STDMETHODCALLTYPE d3d11_device_GetImmediateContext1(ID3D11Device2 *i + static HRESULT STDMETHODCALLTYPE d3d11_device_CreateDeferredContext1(ID3D11Device2 *iface, UINT flags, + ID3D11DeviceContext1 **context) + { +- FIXME("iface %p, flags %#x, context %p stub!\n", iface, flags, context); ++ struct d3d11_deferred_context *object; + +- return E_NOTIMPL; ++ TRACE("iface %p, flags %#x, context %p.\n", iface, flags, context); ++ ++ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)))) ++ return E_OUTOFMEMORY; ++ ++ object->ID3D11DeviceContext1_iface.lpVtbl = &d3d11_deferred_context_vtbl; ++ object->device = (ID3D11Device *)iface; ++ object->refcount = 1; ++ ++ list_init(&object->commands); ++ ++ ID3D11Device2_AddRef(iface); ++ wined3d_private_store_init(&object->private_store); ++ ++ return ID3D11DeviceContext1_QueryInterface(&object->ID3D11DeviceContext1_iface, ++ &IID_ID3D11DeviceContext, (void**)context); + } + + static HRESULT STDMETHODCALLTYPE d3d11_device_CreateBlendState1(ID3D11Device2 *iface, +-- +2.26.2 + diff --git a/patches/d3d11-Deferred_Context/definition b/patches/d3d11-Deferred_Context/definition index 296746db..39bf4e71 100644 --- a/patches/d3d11-Deferred_Context/definition +++ b/patches/d3d11-Deferred_Context/definition @@ -1,5 +1,6 @@ Fixes: [42191] Add semi-stub for D3D11 deferred context implementation Fixes: [43743] No 3D graphics in Wolcen: Lords of Mayhem Fixes: [44089] Correcly align the mapinfo buffer. +Fixes: [41636] d3d11: Implement ID3D11Device2 GetImmediateContext1 #This is pretty dumb. Depends: nvapi-Stub_DLL diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index e9802599..0688e05f 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -2275,6 +2275,7 @@ fi # | * [#42191] Add semi-stub for D3D11 deferred context implementation # | * [#43743] No 3D graphics in Wolcen: Lords of Mayhem # | * [#44089] Correcly align the mapinfo buffer. +# | * [#41636] d3d11: Implement ID3D11Device2 GetImmediateContext1 # | # | Modified files: # | * dlls/d3d11/device.c, dlls/d3d11/tests/d3d11.c, dlls/wined3d/buffer.c, dlls/wined3d/resource.c, dlls/wined3d/texture.c, @@ -2325,6 +2326,7 @@ if test "$enable_d3d11_Deferred_Context" -eq 1; then patch_apply d3d11-Deferred_Context/0042-d3d11-Correctly-align-map-info-buffer.patch patch_apply d3d11-Deferred_Context/0043-d3d11-tests-Add-a-basic-test-for-drawing-with-deferr.patch patch_apply d3d11-Deferred_Context/0044-d3d11-Support-ID3D11DeviceContext1-for-deferred-cont.patch + patch_apply d3d11-Deferred_Context/0045-d3d11-Implement-ID3D11Device2-GetImmediateContext1.patch ( printf '%s\n' '+ { "Kimmo Myllyvirta", "d3d11: Add stub deferred rendering context.", 1 },'; printf '%s\n' '+ { "Michael Müller", "wined3d: Add wined3d_resource_map_info function.", 1 },'; @@ -2370,6 +2372,7 @@ if test "$enable_d3d11_Deferred_Context" -eq 1; then printf '%s\n' '+ { "Kimmo Myllyvirta", "d3d11: Correctly align map info buffer.", 1 },'; printf '%s\n' '+ { "Paul Gofman", "d3d11/tests: Add a basic test for drawing with deferred context.", 1 },'; printf '%s\n' '+ { "Alistair Leslie-Hughes", "d3d11: Support ID3D11DeviceContext1 for deferred contexts.", 1 },'; + printf '%s\n' '+ { "Alistair Leslie-Hughes", "d3d11: Implement ID3D11Device2 GetImmediateContext1.", 1 },'; ) >> "$patchlist" fi