This is only used with deferred contexts to record all commands thus far submitted to a command list object. It has no effect on immediate contexts.
Signed-off-by: Chip Davis cdavis@codeweavers.com --- dlls/d3d11/device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 7544bc86f4b..01b32002408 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2416,9 +2416,9 @@ static UINT STDMETHODCALLTYPE d3d11_immediate_context_GetContextFlags(ID3D11Devi static HRESULT STDMETHODCALLTYPE d3d11_immediate_context_FinishCommandList(ID3D11DeviceContext1 *iface, BOOL restore, ID3D11CommandList **command_list) { - FIXME("iface %p, restore %#x, command_list %p stub!\n", iface, restore, command_list); + WARN("iface %p, restore %#x, command_list %p called on immediate context.\n", iface, restore, command_list);
- return E_NOTIMPL; + return DXGI_ERROR_INVALID_CALL; }
static void STDMETHODCALLTYPE d3d11_immediate_context_CopySubresourceRegion1(ID3D11DeviceContext1 *iface,
This returns the flags that were passed to ID3D11Device::CreateDeferredContext(). It has no meaning for immediate contexts, and there are no flags defined anyway.
Signed-off-by: Chip Davis cdavis@codeweavers.com --- dlls/d3d11/device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 01b32002408..207d3869c27 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2408,7 +2408,7 @@ static D3D11_DEVICE_CONTEXT_TYPE STDMETHODCALLTYPE d3d11_immediate_context_GetTy
static UINT STDMETHODCALLTYPE d3d11_immediate_context_GetContextFlags(ID3D11DeviceContext1 *iface) { - FIXME("iface %p stub!\n", iface); + WARN("iface %p called on immediate context.\n", iface);
return 0; }
Signed-off-by: Chip Davis cdavis@codeweavers.com --- dlls/wined3d/device.c | 7 +++++++ dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 1 + 3 files changed, 9 insertions(+)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 1711014c8d2..1325b5d6036 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4834,6 +4834,13 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device) } }
+void CDECL wined3d_device_flush(struct wined3d_device *device) +{ + TRACE("device %p.\n", device); + + wined3d_cs_emit_flush(device->cs); +} + static void update_swapchain_flags(struct wined3d_texture *texture) { unsigned int flags = texture->swapchain->state.desc.flags; diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 22a9a9dd740..75c0163c258 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -53,6 +53,7 @@ @ cdecl wined3d_device_draw_primitive_instanced_indirect(ptr ptr long) @ cdecl wined3d_device_end_scene(ptr) @ cdecl wined3d_device_evict_managed_resources(ptr) +@ cdecl wined3d_device_flush(ptr) @ cdecl wined3d_device_get_available_texture_mem(ptr) @ cdecl wined3d_device_get_blend_state(ptr ptr) @ cdecl wined3d_device_get_clip_status(ptr ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index d3eb8100cd8..a53d862602d 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2333,6 +2333,7 @@ void __cdecl wined3d_device_draw_primitive_instanced_indirect(struct wined3d_dev struct wined3d_buffer *buffer, unsigned int offset); HRESULT __cdecl wined3d_device_end_scene(struct wined3d_device *device); void __cdecl wined3d_device_evict_managed_resources(struct wined3d_device *device); +void __cdecl wined3d_device_flush(struct wined3d_device *device); UINT __cdecl wined3d_device_get_available_texture_mem(const struct wined3d_device *device); struct wined3d_blend_state * __cdecl wined3d_device_get_blend_state(const struct wined3d_device *device, struct wined3d_color *blend_factor);
Signed-off-by: Chip Davis cdavis@codeweavers.com --- dlls/d3d11/device.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 207d3869c27..fe0d3a7e9ac 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -2396,7 +2396,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_ClearState(ID3D11DeviceCon
static void STDMETHODCALLTYPE d3d11_immediate_context_Flush(ID3D11DeviceContext1 *iface) { - FIXME("iface %p stub!\n", iface); + struct d3d_device *device = device_from_immediate_ID3D11DeviceContext1(iface); + + TRACE("iface %p.\n", iface); + + wined3d_device_flush(device->wined3d_device); }
static D3D11_DEVICE_CONTEXT_TYPE STDMETHODCALLTYPE d3d11_immediate_context_GetType(ID3D11DeviceContext1 *iface) @@ -5246,7 +5250,11 @@ static void STDMETHODCALLTYPE d3d10_device_ClearState(ID3D10Device1 *iface)
static void STDMETHODCALLTYPE d3d10_device_Flush(ID3D10Device1 *iface) { - FIXME("iface %p stub!\n", iface); + struct d3d_device *device = impl_from_ID3D10Device(iface); + + TRACE("iface %p.\n", iface); + + wined3d_device_flush(device->wined3d_device); }
static HRESULT STDMETHODCALLTYPE d3d10_device_CreateBuffer(ID3D10Device1 *iface,
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=71721
Your paranoid android.
=== debiant (32 bit Chinese:China report) ===
d3d11: d3d11.c:6118: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0.
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=71720
Your paranoid android.
=== debiant (32 bit WoW report) ===
Report validation errors: d3d11:d3d11 has no test summary line (early exit of the main process?) d3d11:d3d11 has unaccounted for failure messages d3d11:d3d11 has unaccounted for todo messages d3d11:d3d11 has unaccounted for skip messages d3d11:d3d11 returned success despite having failures
On Thu, 14 May 2020 at 02:30, Chip Davis cdavis@codeweavers.com wrote:
This is only used with deferred contexts to record all commands thus far submitted to a command list object. It has no effect on immediate contexts.
Signed-off-by: Chip Davis cdavis@codeweavers.com
dlls/d3d11/device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Tests, please.
On Thu, 14 May 2020 at 19:55, Henri Verbeet hverbeet@gmail.com wrote:
On Thu, 14 May 2020 at 02:30, Chip Davis cdavis@codeweavers.com wrote:
This is only used with deferred contexts to record all commands thus far submitted to a command list object. It has no effect on immediate contexts.
Signed-off-by: Chip Davis cdavis@codeweavers.com
dlls/d3d11/device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Tests, please.
Also:
Subject: [PATCH 1/4] d3d11: Immediate contexts don't support ID3D11DeviceContext::FinishCommandList().
That's not what the patch does.