[PATCH v3 2/2] vkd3d: Test ClearUnorderedAccessView with placed resources.

Hans-Kristian Arntzen post at arntzen-software.no
Wed Oct 23 05:09:07 CDT 2019


Catches certain implementation issues which committed resources do not.

Signed-off-by: Hans-Kristian Arntzen <post at arntzen-software.no>
---
 tests/d3d12.c | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/tests/d3d12.c b/tests/d3d12.c
index 9fe47c6..f079728 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -4630,6 +4630,10 @@ static void test_clear_unordered_access_view(void)
     UINT clear_value[4];
     unsigned int i, j;
     D3D12_BOX box;
+    HRESULT hr;
+    D3D12_HEAP_DESC heap_desc;
+    D3D12_RESOURCE_DESC resource_desc;
+    ID3D12Heap *heap;
 
 #define BUFFER_SIZE (1024 * 1024)
     static const struct
@@ -4686,12 +4690,34 @@ static void test_clear_unordered_access_view(void)
     cpu_heap = create_cpu_descriptor_heap(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, 2);
     gpu_heap = create_gpu_descriptor_heap(device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, 2);
 
+    heap_desc.SizeInBytes = 2 * BUFFER_SIZE;
+    heap_desc.Flags = D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS;
+    heap_desc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
+    memset(&heap_desc.Properties, 0, sizeof(heap_desc.Properties));
+    heap_desc.Properties.Type = D3D12_HEAP_TYPE_DEFAULT;
+    hr = ID3D12Device_CreateHeap(device, &heap_desc, &IID_ID3D12Heap, (void **)&heap);
+    ok(hr == S_OK, "Failed to create heap, hr %#x.\n", hr);
+
     for (i = 0; i < ARRAY_SIZE(tests); ++i)
     {
         vkd3d_test_set_context("Test %u", i);
 
-        buffer = create_default_buffer(device, BUFFER_SIZE,
-                D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
+        resource_desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
+        resource_desc.Alignment = 0;
+        resource_desc.Width = BUFFER_SIZE;
+        resource_desc.Height = 1;
+        resource_desc.DepthOrArraySize = 1;
+        resource_desc.MipLevels = 1;
+        resource_desc.Format = DXGI_FORMAT_UNKNOWN;
+        resource_desc.SampleDesc.Count = 1;
+        resource_desc.SampleDesc.Quality = 0;
+        resource_desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
+        resource_desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
+
+        hr = ID3D12Device_CreatePlacedResource(device, heap, BUFFER_SIZE,
+                &resource_desc, D3D12_RESOURCE_STATE_UNORDERED_ACCESS, NULL,
+                &IID_ID3D12Resource, (void **)&buffer);
+        ok(hr == S_OK, "Failed to create resource, hr %#x.\n", hr);
 
         for (j = 0; j < ARRAY_SIZE(clear_value); ++j)
             clear_value[j] = tests[i].values[j] ? 0 : ~0u;
@@ -4747,6 +4773,7 @@ static void test_clear_unordered_access_view(void)
 
     ID3D12DescriptorHeap_Release(cpu_heap);
     ID3D12DescriptorHeap_Release(gpu_heap);
+    ID3D12Heap_Release(heap);
     destroy_test_context(&context);
 #undef BUFFER_SIZE
 }
-- 
2.23.0




More information about the wine-devel mailing list