tests: Check that shader-visible descriptor heaps have a valid GPU descriptor handle start.

We currently check that non-shader-visible heaps have a NULL
handle, but that doesn't seem to be guaranteed: beside WARP, also
NVIDIA drivers still return a valid pointer. And that's a pretty
useless check anyway; rather, check that shader-visible heaps
have a valid pointer, which is more interesting.
This commit is contained in:
Giovanni Mascellani
2025-04-16 23:10:48 +02:00
committed by Henri Verbeet
parent 1aa33ebc80
commit 129b3a8c4b
Notes: Henri Verbeet 2025-05-15 14:17:53 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1503

View File

@@ -2567,9 +2567,6 @@ static void test_create_descriptor_heap(void)
hr = ID3D12Device_CreateDescriptorHeap(device, &heap_desc, &IID_ID3D12DescriptorHeap, (void **)&heap);
ok(hr == S_OK, "Failed to create descriptor heap, hr %#x.\n", hr);
gpu_handle = ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(heap);
ok(!gpu_handle.ptr || broken(test_options.use_warp_device), "Got unexpected ptr %"PRIx64".\n", gpu_handle.ptr);
refcount = get_refcount(device);
ok(refcount == 2, "Got unexpected refcount %u.\n", (unsigned int)refcount);
hr = ID3D12DescriptorHeap_GetDevice(heap, &IID_ID3D12Device, (void **)&tmp_device);
@@ -2591,6 +2588,8 @@ static void test_create_descriptor_heap(void)
heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
hr = ID3D12Device_CreateDescriptorHeap(device, &heap_desc, &IID_ID3D12DescriptorHeap, (void **)&heap);
ok(hr == S_OK, "Failed to create descriptor heap, hr %#x.\n", hr);
gpu_handle = ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(heap);
ok(gpu_handle.ptr, "Got NULL descriptor handle.\n");
refcount = ID3D12DescriptorHeap_Release(heap);
ok(!refcount, "ID3D12DescriptorHeap has %u references left.\n", (unsigned int)refcount);
@@ -2598,6 +2597,8 @@ static void test_create_descriptor_heap(void)
heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
hr = ID3D12Device_CreateDescriptorHeap(device, &heap_desc, &IID_ID3D12DescriptorHeap, (void **)&heap);
ok(hr == S_OK, "Failed to create descriptor heap, hr %#x.\n", hr);
gpu_handle = ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(heap);
ok(gpu_handle.ptr, "Got NULL descriptor handle.\n");
refcount = ID3D12DescriptorHeap_Release(heap);
ok(!refcount, "ID3D12DescriptorHeap has %u references left.\n", (unsigned int)refcount);