Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com
On 11/12/21 20:44, Nikolay Sivov wrote:
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com
tests/d3d12_test_utils.h | 3 +++ tests/shader_runner_d3d12.c | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/tests/d3d12_test_utils.h b/tests/d3d12_test_utils.h index 5d900f8..1f54e10 100644 --- a/tests/d3d12_test_utils.h +++ b/tests/d3d12_test_utils.h @@ -956,6 +956,7 @@ struct test_context ID3D12CommandQueue *queue; ID3D12CommandAllocator *allocator; ID3D12GraphicsCommandList *list;
ID3D12PipelineState *pso;
D3D12_RESOURCE_DESC render_target_desc; ID3D12Resource *render_target;
@@ -1092,6 +1093,8 @@ static inline void destroy_test_context_(unsigned int line, struct test_context ID3D12CommandAllocator_Release(context->allocator); ID3D12CommandQueue_Release(context->queue); ID3D12GraphicsCommandList_Release(context->list);
if (context->pso)
ID3D12PipelineState_Release(context->pso); refcount = ID3D12Device_Release(context->device); ok_(line)(!refcount, "ID3D12Device has %u references left.\n", (unsigned int)refcount);
diff --git a/tests/shader_runner_d3d12.c b/tests/shader_runner_d3d12.c index d404895..283a264 100644 --- a/tests/shader_runner_d3d12.c +++ b/tests/shader_runner_d3d12.c @@ -341,7 +341,6 @@ static void parse_test_directive(struct shader_context *context, const char *lin D3D12_STATIC_SAMPLER_DESC static_samplers[1]; static const float clear_color[4]; unsigned int uniform_index;
ID3D12PipelineState *pso; HRESULT hr; size_t i;
@@ -419,9 +418,11 @@ static void parse_test_directive(struct shader_context *context, const char *lin hr = create_root_signature(context->c.device, &root_signature_desc, &context->c.root_signature); ok(hr == S_OK, "Failed to create root signature, hr %#x.\n", hr);
pso = create_pipeline_state(context->c.device, context->c.root_signature,
if (context->c.pso)
ID3D12PipelineState_Release(context->c.pso);
context->c.pso = create_pipeline_state(context->c.device, context->c.root_signature, context->c.render_target_desc.Format, NULL, &ps, NULL);
if (!pso)
if (!context->c.pso) return; ID3D12GraphicsCommandList_SetGraphicsRootSignature(command_list, context->c.root_signature);
@@ -437,9 +438,8 @@ static void parse_test_directive(struct shader_context *context, const char *lin ID3D12GraphicsCommandList_RSSetViewports(command_list, 1, &context->c.viewport); ID3D12GraphicsCommandList_IASetPrimitiveTopology(command_list, D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); ID3D12GraphicsCommandList_ClearRenderTargetView(command_list, context->c.rtv, clear_color, 0, NULL);
ID3D12GraphicsCommandList_SetPipelineState(command_list, pso);
ID3D12GraphicsCommandList_SetPipelineState(command_list, context->c.pso); ID3D12GraphicsCommandList_DrawInstanced(command_list, 3, 1, 0, 0);
ID3D12PipelineState_Release(pso); transition_resource_state(command_list, context->c.render_target, D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_COPY_SOURCE); }