From bda14ae9987de5089afc8c562d3bfad8a5df1145 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Fri, 1 Jul 2022 19:54:52 +0200 Subject: [PATCH] dzn: Try to get a ID3D12Device10 object Will be needed to support format casting. Reviewed-by: Jesse Natalie Part-of: --- src/microsoft/vulkan/dzn_device.c | 13 +++++++++++++ src/microsoft/vulkan/dzn_private.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/microsoft/vulkan/dzn_device.c b/src/microsoft/vulkan/dzn_device.c index 5566948b0a2..ddff2638b6d 100644 --- a/src/microsoft/vulkan/dzn_device.c +++ b/src/microsoft/vulkan/dzn_device.c @@ -144,6 +144,9 @@ dzn_physical_device_destroy(struct dzn_physical_device *pdev) if (pdev->dev) ID3D12Device1_Release(pdev->dev); + if (pdev->dev10) + ID3D12Device1_Release(pdev->dev10); + if (pdev->adapter) IUnknown_Release(pdev->adapter); @@ -692,6 +695,8 @@ dzn_physical_device_get_d3d12_dev(struct dzn_physical_device *pdev) instance->factory, !instance->dxil_validator); + if (FAILED(ID3D12Device1_QueryInterface(pdev->dev, &IID_ID3D12Device10, (void **)&pdev->dev10))) + pdev->dev10 = NULL; dzn_physical_device_cache_caps(pdev); dzn_physical_device_init_memory(pdev); dzn_physical_device_init_uuids(pdev); @@ -2110,6 +2115,9 @@ dzn_device_destroy(struct dzn_device *device, const VkAllocationCallbacks *pAllo if (device->dev) ID3D12Device1_Release(device->dev); + if (device->dev10) + ID3D12Device1_Release(device->dev10); + vk_device_finish(&device->vk); vk_free2(&instance->vk.alloc, pAllocator, device); } @@ -2189,6 +2197,11 @@ dzn_device_create(struct dzn_physical_device *pdev, ID3D12Device1_AddRef(device->dev); + if (pdev->dev10) { + device->dev10 = pdev->dev10; + ID3D12Device1_AddRef(device->dev10); + } + ID3D12InfoQueue *info_queue; if (SUCCEEDED(ID3D12Device1_QueryInterface(device->dev, &IID_ID3D12InfoQueue, diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h index d4a2fe0fc10..4c5047c3b17 100644 --- a/src/microsoft/vulkan/dzn_private.h +++ b/src/microsoft/vulkan/dzn_private.h @@ -201,6 +201,7 @@ struct dzn_physical_device { mtx_t dev_lock; ID3D12Device2 *dev; + ID3D12Device10 *dev10; D3D_FEATURE_LEVEL feature_level; D3D_SHADER_MODEL shader_model; D3D12_FEATURE_DATA_ARCHITECTURE1 architecture; @@ -254,6 +255,7 @@ struct dzn_device { struct vk_device_dispatch_table cmd_dispatch; ID3D12Device2 *dev; + ID3D12Device10 *dev10; ID3D12DeviceConfiguration *dev_config; struct dzn_meta_indirect_draw indirect_draws[DZN_NUM_INDIRECT_DRAW_TYPES];