[PATCH vkd3d 4/8] tests: Introduce universal create_command_queue() helper.

Józef Kucia joseph.kucia at gmail.com
Wed Apr 17 10:26:37 CDT 2019


From: Józef Kucia <jkucia at codeweavers.com>

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 tests/d3d12.c               | 123 +++++++++++++-----------------------
 tests/d3d12_invalid_usage.c |   9 +--
 tests/d3d12_test_utils.h    |  27 +++++---
 tests/vkd3d_api.c           |  23 +------
 4 files changed, 68 insertions(+), 114 deletions(-)

diff --git a/tests/d3d12.c b/tests/d3d12.c
index 0c19bf3289b8..148989b543b0 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -762,7 +762,6 @@ static ID3D12CommandSignature *create_command_signature_(unsigned int line,
 #define init_compute_test_context(context) init_compute_test_context_(__LINE__, context)
 static bool init_compute_test_context_(unsigned int line, struct test_context *context)
 {
-    D3D12_COMMAND_QUEUE_DESC command_queue_desc;
     ID3D12Device *device;
     HRESULT hr;
 
@@ -775,21 +774,16 @@ static bool init_compute_test_context_(unsigned int line, struct test_context *c
     }
     device = context->device;
 
-    command_queue_desc.Type = D3D12_COMMAND_LIST_TYPE_COMPUTE;
-    command_queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    command_queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    command_queue_desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &command_queue_desc,
-            &IID_ID3D12CommandQueue, (void **)&context->queue);
-    ok_(line)(SUCCEEDED(hr), "Failed to create command queue, hr %#x.\n", hr);
+    context->queue = create_command_queue_(line, device,
+            D3D12_COMMAND_LIST_TYPE_COMPUTE, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
 
     hr = ID3D12Device_CreateCommandAllocator(device, D3D12_COMMAND_LIST_TYPE_COMPUTE,
             &IID_ID3D12CommandAllocator, (void **)&context->allocator);
-    ok_(line)(SUCCEEDED(hr), "Failed to create command allocator, hr %#x.\n", hr);
+    ok_(line)(hr == S_OK, "Failed to create command allocator, hr %#x.\n", hr);
 
     hr = ID3D12Device_CreateCommandList(device, 0, D3D12_COMMAND_LIST_TYPE_COMPUTE,
             context->allocator, NULL, &IID_ID3D12GraphicsCommandList, (void **)&context->list);
-    ok_(line)(SUCCEEDED(hr), "Failed to create command list, hr %#x.\n", hr);
+    ok_(line)(hr == S_OK, "Failed to create command list, hr %#x.\n", hr);
 
     return true;
 }
@@ -2753,7 +2747,6 @@ static void test_object_interface(void)
 {
     D3D12_DESCRIPTOR_HEAP_DESC descriptor_heap_desc;
     D3D12_QUERY_HEAP_DESC query_heap_desc;
-    D3D12_COMMAND_QUEUE_DESC queue_desc;
     ID3D12RootSignature *root_signature;
     ULONG refcount, expected_refcount;
     ID3D12CommandAllocator *allocator;
@@ -2819,13 +2812,8 @@ static void test_object_interface(void)
         else if (IsEqualGUID(tests[i], &IID_ID3D12CommandQueue))
         {
             vkd3d_test_set_context("command queue");
-            queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-            queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-            queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-            queue_desc.NodeMask = 0;
-            hr = ID3D12Device_CreateCommandQueue(device, &queue_desc,
-                    &IID_IUnknown, (void **)&unknown);
-            ok(hr == S_OK, "Failed to create command queue, hr %#x.\n", hr);
+            unknown = (IUnknown *)create_command_queue(device,
+                    D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
         }
         else if (IsEqualGUID(tests[i], &IID_ID3D12CommandSignature))
         {
@@ -3578,7 +3566,6 @@ static void test_cpu_signal_fence(void)
 
 static void test_gpu_signal_fence(void)
 {
-    D3D12_COMMAND_QUEUE_DESC command_queue_desc;
     ID3D12CommandQueue *queue;
     HANDLE event1, event2;
     ID3D12Device *device;
@@ -3594,30 +3581,24 @@ static void test_gpu_signal_fence(void)
         return;
     }
 
-    command_queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-    command_queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    command_queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    command_queue_desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &command_queue_desc,
-            &IID_ID3D12CommandQueue, (void **)&queue);
-    ok(SUCCEEDED(hr), "Failed to create command queue, hr %#x.\n", hr);
+    queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
 
     hr = ID3D12Device_CreateFence(device, 0, D3D12_FENCE_FLAG_NONE,
             &IID_ID3D12Fence, (void **)&fence);
-    ok(SUCCEEDED(hr), "Failed to create fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to create fence, hr %#x.\n", hr);
 
     /* XXX: It seems that when a queue is idle a fence is signalled immediately
      * in D3D12. Vulkan implementations don't signal a fence immediately so
      * libvkd3d doesn't as well. In order to make this test reliable
      * wait_queue_idle() is inserted after every ID3D12CommandQueue_Signal(). */
     hr = ID3D12CommandQueue_Signal(queue, fence, 10);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     value = ID3D12Fence_GetCompletedValue(fence);
     ok(value == 10, "Got unexpected value %"PRIu64".\n", value);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     value = ID3D12Fence_GetCompletedValue(fence);
     ok(value == 0, "Got unexpected value %"PRIu64".\n", value);
@@ -3629,11 +3610,11 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12Fence_SetEventOnCompletion(fence, 5, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     hr = ID3D12CommandQueue_Signal(queue, fence, 5);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_OBJECT_0, "Got unexpected return value %#x.\n", ret);
@@ -3641,11 +3622,11 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12Fence_SetEventOnCompletion(fence, 6, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     hr = ID3D12CommandQueue_Signal(queue, fence, 7);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_OBJECT_0, "Got unexpected return value %#x.\n", ret);
@@ -3653,34 +3634,34 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 10);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     /* Attach one event to multiple values. */
     hr = ID3D12CommandQueue_Signal(queue, fence, 0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12Fence_SetEventOnCompletion(fence, 3, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     hr = ID3D12Fence_SetEventOnCompletion(fence, 5, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     hr = ID3D12Fence_SetEventOnCompletion(fence, 9, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     hr = ID3D12Fence_SetEventOnCompletion(fence, 12, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     hr = ID3D12Fence_SetEventOnCompletion(fence, 12, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     for (i = 1; i < 13; ++i)
     {
         hr = ID3D12CommandQueue_Signal(queue, fence, i);
-        ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+        ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
         wait_queue_idle(device, queue);
         if (i == 3 || i == 5 || i == 9 || i == 12)
         {
@@ -3693,7 +3674,7 @@ static void test_gpu_signal_fence(void)
 
     /* Tests with 2 events. */
     hr = ID3D12CommandQueue_Signal(queue, fence, 0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     value = ID3D12Fence_GetCompletedValue(fence);
     ok(value == 0, "Got unexpected value %"PRIu64".\n", value);
@@ -3706,12 +3687,12 @@ static void test_gpu_signal_fence(void)
     ret = wait_event(event2, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     hr = ID3D12Fence_SetEventOnCompletion(fence, 100, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     hr = ID3D12Fence_SetEventOnCompletion(fence, ~(UINT64)0, event2);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 50);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3719,7 +3700,7 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 99);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3727,7 +3708,7 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 100);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_OBJECT_0, "Got unexpected return value %#x.\n", ret);
@@ -3737,7 +3718,7 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 101);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3745,7 +3726,7 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3753,7 +3734,7 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, 100);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3761,7 +3742,7 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, ~(UINT64)0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3771,14 +3752,14 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, fence, ~(UINT64)0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     ret = wait_event(event2, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     hr = ID3D12CommandQueue_Signal(queue, fence, 0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3787,7 +3768,7 @@ static void test_gpu_signal_fence(void)
 
     /* Attach two events to the same value. */
     hr = ID3D12CommandQueue_Signal(queue, fence, 0);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
@@ -3795,15 +3776,15 @@ static void test_gpu_signal_fence(void)
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
 
     hr = ID3D12Fence_SetEventOnCompletion(fence, 1, event1);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     hr = ID3D12Fence_SetEventOnCompletion(fence, 1, event2);
-    ok(SUCCEEDED(hr), "Failed to set event on completion, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to set event on completion, hr %#x.\n", hr);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     ret = wait_event(event2, 0);
     ok(ret == WAIT_TIMEOUT, "Got unexpected return value %#x.\n", ret);
     hr = ID3D12CommandQueue_Signal(queue, fence, 3);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
     wait_queue_idle(device, queue);
     ret = wait_event(event1, 0);
     ok(ret == WAIT_OBJECT_0, "Got unexpected return value %#x.\n", ret);
@@ -3866,7 +3847,6 @@ static void fence_busy_wait_main(void *untyped_data)
 static void test_multithread_fence_wait(void)
 {
     struct multithread_fence_wait_data thread_data;
-    D3D12_COMMAND_QUEUE_DESC command_queue_desc;
     ID3D12CommandQueue *queue;
     ID3D12Device *device;
     unsigned int ret;
@@ -3880,20 +3860,14 @@ static void test_multithread_fence_wait(void)
         return;
     }
 
-    command_queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-    command_queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    command_queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    command_queue_desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &command_queue_desc,
-            &IID_ID3D12CommandQueue, (void **)&queue);
-    ok(SUCCEEDED(hr), "Failed to create command queue, hr %#x.\n", hr);
+    queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
 
     thread_data.event = create_event();
     thread_data.value = 0;
     ok(thread_data.event, "Failed to create event.\n");
     hr = ID3D12Device_CreateFence(device, thread_data.value, D3D12_FENCE_FLAG_NONE,
             &IID_ID3D12Fence, (void **)&thread_data.fence);
-    ok(SUCCEEDED(hr), "Failed to create fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to create fence, hr %#x.\n", hr);
 
     /* Signal fence on host. */
     ++thread_data.value;
@@ -3903,7 +3877,7 @@ static void test_multithread_fence_wait(void)
     ok(ret == WAIT_OBJECT_0, "Failed to wait for thread start, return value %#x.\n", ret);
 
     hr = ID3D12Fence_Signal(thread_data.fence, thread_data.value);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
 
     ok(join_thread(thread), "Failed to join thread.\n");
 
@@ -3914,7 +3888,7 @@ static void test_multithread_fence_wait(void)
     ok(ret == WAIT_OBJECT_0, "Failed to wait for thread start, return value %#x.\n", ret);
 
     hr = ID3D12Fence_Signal(thread_data.fence, thread_data.value);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
 
     ok(join_thread(thread), "Failed to join thread.\n");
 
@@ -3926,7 +3900,7 @@ static void test_multithread_fence_wait(void)
     ok(ret == WAIT_OBJECT_0, "Failed to wait for thread start, return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, thread_data.fence, thread_data.value);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
 
     ok(join_thread(thread), "Failed to join thread.\n");
 
@@ -3937,7 +3911,7 @@ static void test_multithread_fence_wait(void)
     ok(ret == WAIT_OBJECT_0, "Failed to wait for thread start, return value %#x.\n", ret);
 
     hr = ID3D12CommandQueue_Signal(queue, thread_data.fence, thread_data.value);
-    ok(SUCCEEDED(hr), "Failed to signal fence, hr %#x.\n", hr);
+    ok(hr == S_OK, "Failed to signal fence, hr %#x.\n", hr);
 
     ok(join_thread(thread), "Failed to join thread.\n");
 
@@ -5740,7 +5714,6 @@ static void test_draw_uav_only(void)
 
 static void test_texture_resource_barriers(void)
 {
-    D3D12_COMMAND_QUEUE_DESC command_queue_desc;
     ID3D12CommandAllocator *command_allocator;
     ID3D12GraphicsCommandList *command_list;
     D3D12_RESOURCE_BARRIER barriers[8];
@@ -5756,13 +5729,7 @@ static void test_texture_resource_barriers(void)
         return;
     }
 
-    command_queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-    command_queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    command_queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    command_queue_desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &command_queue_desc,
-            &IID_ID3D12CommandQueue, (void **)&queue);
-    ok(SUCCEEDED(hr), "Failed to create command queue, hr %#x.\n", hr);
+    queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
 
     hr = ID3D12Device_CreateCommandAllocator(device, D3D12_COMMAND_LIST_TYPE_DIRECT,
             &IID_ID3D12CommandAllocator, (void **)&command_allocator);
diff --git a/tests/d3d12_invalid_usage.c b/tests/d3d12_invalid_usage.c
index 69ffda64fdba..ab5deb5b1e11 100644
--- a/tests/d3d12_invalid_usage.c
+++ b/tests/d3d12_invalid_usage.c
@@ -35,7 +35,6 @@ static void recreate_command_list_(unsigned int line, ID3D12Device *device,
 static void test_invalid_texture_resource_barriers(void)
 {
     ID3D12Resource *texture, *readback_buffer, *upload_buffer;
-    D3D12_COMMAND_QUEUE_DESC command_queue_desc;
     ID3D12CommandAllocator *command_allocator;
     ID3D12GraphicsCommandList *command_list;
     ID3D12CommandQueue *queue;
@@ -49,13 +48,7 @@ static void test_invalid_texture_resource_barriers(void)
         return;
     }
 
-    command_queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-    command_queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    command_queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    command_queue_desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &command_queue_desc,
-            &IID_ID3D12CommandQueue, (void **)&queue);
-    ok(hr == S_OK, "Failed to create command queue, hr %#x.\n", hr);
+    queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
 
     hr = ID3D12Device_CreateCommandAllocator(device, D3D12_COMMAND_LIST_TYPE_DIRECT,
             &IID_ID3D12CommandAllocator, (void **)&command_allocator);
diff --git a/tests/d3d12_test_utils.h b/tests/d3d12_test_utils.h
index 6eb9ceae5576..22ab9e7fcfb4 100644
--- a/tests/d3d12_test_utils.h
+++ b/tests/d3d12_test_utils.h
@@ -214,6 +214,24 @@ static void transition_sub_resource_state(ID3D12GraphicsCommandList *list, ID3D1
     ID3D12GraphicsCommandList_ResourceBarrier(list, 1, &barrier);
 }
 
+#define create_command_queue(a, b, c) create_command_queue_(__LINE__, a, b, c)
+static inline ID3D12CommandQueue *create_command_queue_(unsigned int line, ID3D12Device *device,
+        D3D12_COMMAND_LIST_TYPE type, int priority)
+{
+    D3D12_COMMAND_QUEUE_DESC queue_desc;
+    ID3D12CommandQueue *queue;
+    HRESULT hr;
+
+    queue_desc.Type = type;
+    queue_desc.Priority = priority;
+    queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
+    queue_desc.NodeMask = 0;
+    hr = ID3D12Device_CreateCommandQueue(device, &queue_desc, &IID_ID3D12CommandQueue, (void **)&queue);
+    ok_(line)(hr == S_OK, "Failed to create command queue, hr %#x.\n", hr);
+
+    return queue;
+}
+
 static void transition_resource_state(ID3D12GraphicsCommandList *list, ID3D12Resource *resource,
         D3D12_RESOURCE_STATES state_before, D3D12_RESOURCE_STATES state_after)
 {
@@ -743,7 +761,6 @@ static void create_render_target_(unsigned int line, struct test_context *contex
 static inline bool init_test_context_(unsigned int line, struct test_context *context,
         const struct test_context_desc *desc)
 {
-    D3D12_COMMAND_QUEUE_DESC command_queue_desc;
     D3D12_DESCRIPTOR_HEAP_DESC rtv_heap_desc;
     ID3D12Device *device;
     HRESULT hr;
@@ -757,13 +774,7 @@ static inline bool init_test_context_(unsigned int line, struct test_context *co
     }
     device = context->device;
 
-    command_queue_desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-    command_queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    command_queue_desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    command_queue_desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &command_queue_desc,
-            &IID_ID3D12CommandQueue, (void **)&context->queue);
-    ok_(line)(SUCCEEDED(hr), "Failed to create command queue, hr %#x.\n", hr);
+    context->queue = create_command_queue_(line, device, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
 
     hr = ID3D12Device_CreateCommandAllocator(device, D3D12_COMMAND_LIST_TYPE_DIRECT,
             &IID_ID3D12CommandAllocator, (void **)&context->allocator);
diff --git a/tests/vkd3d_api.c b/tests/vkd3d_api.c
index 0bc481775f77..14d0914512bc 100644
--- a/tests/vkd3d_api.c
+++ b/tests/vkd3d_api.c
@@ -82,23 +82,6 @@ static ID3D12Device *create_device(void)
     return SUCCEEDED(hr) ? device : NULL;
 }
 
-static ID3D12CommandQueue *create_command_queue(ID3D12Device *device,
-        D3D12_COMMAND_LIST_TYPE type)
-{
-    D3D12_COMMAND_QUEUE_DESC desc;
-    ID3D12CommandQueue *queue;
-    HRESULT hr;
-
-    desc.Type = type;
-    desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
-    desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
-    desc.NodeMask = 0;
-    hr = ID3D12Device_CreateCommandQueue(device, &desc,
-            &IID_ID3D12CommandQueue, (void **)&queue);
-    ok(hr == S_OK, "Failed to create command queue, hr %#x.\n", hr);
-    return queue;
-}
-
 static void test_create_instance(void)
 {
     struct vkd3d_instance_create_info create_info;
@@ -699,11 +682,11 @@ static void test_vkd3d_queue(void)
     device = create_device();
     ok(device, "Failed to create device.\n");
 
-    direct_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT);
+    direct_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
     ok(direct_queue, "Failed to create direct command queue.\n");
-    compute_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COMPUTE);
+    compute_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COMPUTE, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
     ok(compute_queue, "Failed to create compute command queue.\n");
-    copy_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COPY);
+    copy_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COPY, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
     ok(copy_queue, "Failed to create copy command queue.\n");
 
     vk_queue_family = vkd3d_get_vk_queue_family_index(direct_queue);
-- 
2.21.0




More information about the wine-devel mailing list