=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: tests: Add basic test for NULL descriptors.

Alexandre Julliard julliard at winehq.org
Tue Jan 9 13:38:51 CST 2018


Module: vkd3d
Branch: master
Commit: 1c74a30e9f095d32872928fd1e1e67446cc41196
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=1c74a30e9f095d32872928fd1e1e67446cc41196

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Tue Jan  9 13:13:07 2018 +0100

tests: Add basic test for NULL descriptors.

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>

---

 tests/d3d12.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/tests/d3d12.c b/tests/d3d12.c
index 963ecff..c9e6336 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -11558,6 +11558,75 @@ static void test_descriptors_visibility(void)
     destroy_test_context(&context);
 }
 
+static void test_null_descriptors(void)
+{
+    D3D12_UNORDERED_ACCESS_VIEW_DESC uav_desc;
+    D3D12_CONSTANT_BUFFER_VIEW_DESC cbv_desc;
+    D3D12_SHADER_RESOURCE_VIEW_DESC srv_desc;
+    D3D12_DESCRIPTOR_HEAP_DESC heap_desc;
+    struct test_context_desc desc;
+    struct test_context context;
+    ID3D12DescriptorHeap *heap;
+    ID3D12Device *device;
+    HRESULT hr;
+
+    memset(&desc, 0, sizeof(desc));
+    desc.no_root_signature = true;
+    if (!init_test_context(&context, &desc))
+        return;
+    device = context.device;
+
+    heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
+    heap_desc.NumDescriptors = 16;
+    heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
+    heap_desc.NodeMask = 0;
+    hr = ID3D12Device_CreateDescriptorHeap(device, &heap_desc,
+            &IID_ID3D12DescriptorHeap, (void **)&heap);
+    ok(SUCCEEDED(hr), "Failed to create descriptor heap, hr %#x.\n", hr);
+
+    cbv_desc.BufferLocation = 0;
+    cbv_desc.SizeInBytes = 0;
+    ID3D12Device_CreateConstantBufferView(device, &cbv_desc,
+            get_cpu_descriptor_handle(&context, heap, 0));
+
+    memset(&srv_desc, 0, sizeof(srv_desc));
+    srv_desc.Format = DXGI_FORMAT_R32_TYPELESS;
+    srv_desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+    srv_desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+    srv_desc.Buffer.FirstElement = 0;
+    srv_desc.Buffer.NumElements = 1;
+    srv_desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
+    ID3D12Device_CreateShaderResourceView(device, NULL, &srv_desc,
+            get_cpu_descriptor_handle(&context, heap, 1));
+
+    memset(&srv_desc, 0, sizeof(srv_desc));
+    srv_desc.Format = DXGI_FORMAT_R32_FLOAT;
+    srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
+    srv_desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+    srv_desc.Texture2D.MipLevels = 1;
+    ID3D12Device_CreateShaderResourceView(device, NULL, &srv_desc,
+            get_cpu_descriptor_handle(&context, heap, 2));
+
+    memset(&uav_desc, 0, sizeof(uav_desc));
+    uav_desc.Format = DXGI_FORMAT_R32_UINT;
+    uav_desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+    uav_desc.Buffer.FirstElement = 0;
+    uav_desc.Buffer.NumElements = 1;
+    ID3D12Device_CreateUnorderedAccessView(device, NULL, NULL, &uav_desc,
+            get_cpu_descriptor_handle(&context, heap, 3));
+
+    memset(&uav_desc, 0, sizeof(uav_desc));
+    uav_desc.Format = DXGI_FORMAT_R32_UINT;
+    uav_desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
+    uav_desc.Texture2D.MipSlice = 0;
+    uav_desc.Texture2D.PlaneSlice = 0;
+    ID3D12Device_CreateUnorderedAccessView(device, NULL, NULL, &uav_desc,
+            get_cpu_descriptor_handle(&context, heap, 3));
+
+    ID3D12DescriptorHeap_Release(heap);
+    destroy_test_context(&context);
+}
+
 #define check_copyable_footprints(a, b, c, d, e, f, g) \
         check_copyable_footprints_(__LINE__, a, b, c, d, e, f, g)
 static void check_copyable_footprints_(unsigned int line, const D3D12_RESOURCE_DESC *desc,
@@ -16952,6 +17021,7 @@ START_TEST(d3d12)
     run_test(test_update_compute_descriptor_tables);
     run_test(test_copy_descriptors);
     run_test(test_descriptors_visibility);
+    run_test(test_null_descriptors);
     run_test(test_get_copyable_footprints);
     run_test(test_depth_stencil_sampling);
     run_test(test_depth_load);




More information about the wine-cvs mailing list