=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d: Reset command list state in d3d12_command_list_Reset().
Alexandre Julliard
julliard at winehq.org
Wed Sep 12 16:37:56 CDT 2018
Module: vkd3d
Branch: master
Commit: f3e48a9192121e903a99ecee3308bc4bf9309614
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=f3e48a9192121e903a99ecee3308bc4bf9309614
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Wed Sep 12 15:20:00 2018 +0200
vkd3d: Reset command list state in d3d12_command_list_Reset().
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
libs/vkd3d/command.c | 61 +++++++++++++++++++++++++++-------------------------
1 file changed, 32 insertions(+), 29 deletions(-)
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c
index d5bbee9..2fc5643 100644
--- a/libs/vkd3d/command.c
+++ b/libs/vkd3d/command.c
@@ -1713,15 +1713,39 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_list_Close(ID3D12GraphicsCommandL
return S_OK;
}
+static void d3d12_command_list_reset_state(struct d3d12_command_list *list,
+ ID3D12PipelineState *initial_pipeline_state)
+{
+ ID3D12GraphicsCommandList *iface = &list->ID3D12GraphicsCommandList_iface;
+
+ memset(list->strides, 0, sizeof(list->strides));
+ list->primitive_topology = VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
+
+ memset(list->views, 0, sizeof(list->views));
+ list->fb_width = 0;
+ list->fb_height = 0;
+ list->fb_layer_count = 0;
+
+ list->current_framebuffer = VK_NULL_HANDLE;
+ list->current_pipeline = VK_NULL_HANDLE;
+ list->current_render_pass = VK_NULL_HANDLE;
+
+ memset(list->pipeline_bindings, 0, sizeof(list->pipeline_bindings));
+
+ list->state = NULL;
+
+ ID3D12GraphicsCommandList_SetPipelineState(iface, initial_pipeline_state);
+}
+
static HRESULT STDMETHODCALLTYPE d3d12_command_list_Reset(ID3D12GraphicsCommandList *iface,
- ID3D12CommandAllocator *allocator, ID3D12PipelineState *initial_state)
+ ID3D12CommandAllocator *allocator, ID3D12PipelineState *initial_pipeline_state)
{
struct d3d12_command_allocator *allocator_impl = unsafe_impl_from_ID3D12CommandAllocator(allocator);
struct d3d12_command_list *list = impl_from_ID3D12GraphicsCommandList(iface);
HRESULT hr;
- TRACE("iface %p, allocator %p, initial_state %p.\n",
- iface, allocator, initial_state);
+ TRACE("iface %p, allocator %p, initial_pipeline_state %p.\n",
+ iface, allocator, initial_pipeline_state);
if (!allocator_impl)
{
@@ -1738,12 +1762,9 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_list_Reset(ID3D12GraphicsCommandL
if (SUCCEEDED(hr = d3d12_command_allocator_allocate_command_buffer(allocator_impl, list)))
{
list->allocator = allocator_impl;
-
- ID3D12GraphicsCommandList_SetPipelineState(&list->ID3D12GraphicsCommandList_iface, initial_state);
+ d3d12_command_list_reset_state(list, initial_pipeline_state);
}
- memset(list->pipeline_bindings, 0, sizeof(list->pipeline_bindings));
-
return hr;
}
@@ -4239,30 +4260,12 @@ static HRESULT d3d12_command_list_init(struct d3d12_command_list *list, struct d
list->allocator = allocator;
- memset(list->strides, 0, sizeof(list->strides));
- list->primitive_topology = VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
-
- memset(list->views, 0, sizeof(list->views));
- list->fb_width = 0;
- list->fb_height = 0;
- list->fb_layer_count = 0;
-
- list->current_framebuffer = VK_NULL_HANDLE;
- list->current_pipeline = VK_NULL_HANDLE;
- list->current_render_pass = VK_NULL_HANDLE;
- memset(list->pipeline_bindings, 0, sizeof(list->pipeline_bindings));
-
- list->state = NULL;
-
- if (FAILED(hr = d3d12_command_allocator_allocate_command_buffer(allocator, list)))
- {
+ if (SUCCEEDED(hr = d3d12_command_allocator_allocate_command_buffer(allocator, list)))
+ d3d12_command_list_reset_state(list, initial_pipeline_state);
+ else
ID3D12Device_Release(&device->ID3D12Device_iface);
- return hr;
- }
-
- ID3D12GraphicsCommandList_SetPipelineState(&list->ID3D12GraphicsCommandList_iface, initial_pipeline_state);
- return S_OK;
+ return hr;
}
HRESULT d3d12_command_list_create(struct d3d12_device *device,
More information about the wine-cvs
mailing list