dzn: Use IUnknown instead of IDXGIAdapter1 as the stored adapter
WSL doesn't support DXGI, and DirectX-Headers used to build for WSL doesn't have the DXGI headers, so we need to isolate DXGI usage and only build it on Windows Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Bill Kristiansen <billkris@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>
This commit is contained in:
parent
17c0888cfe
commit
236282559e
|
@ -135,7 +135,7 @@ dzn_physical_device_destroy(struct dzn_physical_device *pdev)
|
|||
ID3D12Device1_Release(pdev->dev);
|
||||
|
||||
if (pdev->adapter)
|
||||
IDXGIAdapter1_Release(pdev->adapter);
|
||||
IUnknown_Release(pdev->adapter);
|
||||
|
||||
dzn_wsi_finish(pdev);
|
||||
vk_physical_device_finish(&pdev->vk);
|
||||
|
@ -299,7 +299,7 @@ const struct vk_pipeline_cache_object_ops *const dzn_pipeline_cache_import_ops[]
|
|||
|
||||
static VkResult
|
||||
dzn_physical_device_create(struct dzn_instance *instance,
|
||||
IDXGIAdapter1 *adapter,
|
||||
IUnknown *adapter,
|
||||
const DXGI_ADAPTER_DESC1 *adapter_desc)
|
||||
{
|
||||
struct dzn_physical_device *pdev =
|
||||
|
@ -329,7 +329,7 @@ dzn_physical_device_create(struct dzn_instance *instance,
|
|||
mtx_init(&pdev->dev_lock, mtx_plain);
|
||||
pdev->adapter_desc = *adapter_desc;
|
||||
pdev->adapter = adapter;
|
||||
IDXGIAdapter1_AddRef(adapter);
|
||||
IUnknown_AddRef(adapter);
|
||||
list_addtail(&pdev->link, &instance->physical_devices);
|
||||
|
||||
vk_warn_non_conformant_implementation("dzn");
|
||||
|
@ -998,16 +998,14 @@ dzn_GetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,
|
|||
|
||||
static VkResult
|
||||
dzn_instance_add_physical_device(struct dzn_instance *instance,
|
||||
IDXGIAdapter1 *adapter)
|
||||
IUnknown *adapter,
|
||||
const DXGI_ADAPTER_DESC1 *desc)
|
||||
{
|
||||
DXGI_ADAPTER_DESC1 desc;
|
||||
IDXGIAdapter1_GetDesc1(adapter, &desc);
|
||||
|
||||
if ((instance->debug_flags & DZN_DEBUG_WARP) &&
|
||||
!(desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE))
|
||||
!(desc->Flags & DXGI_ADAPTER_FLAG_SOFTWARE))
|
||||
return VK_SUCCESS;
|
||||
|
||||
return dzn_physical_device_create(instance, adapter, &desc);
|
||||
return dzn_physical_device_create(instance, adapter, desc);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
|
@ -1022,8 +1020,10 @@ dzn_EnumeratePhysicalDevices(VkInstance inst,
|
|||
IDXGIAdapter1 *adapter = NULL;
|
||||
VkResult result = VK_SUCCESS;
|
||||
for (UINT i = 0; SUCCEEDED(IDXGIFactory4_EnumAdapters1(factory, i, &adapter)); ++i) {
|
||||
DXGI_ADAPTER_DESC1 desc;
|
||||
IDXGIAdapter1_GetDesc1(adapter, &desc);
|
||||
result =
|
||||
dzn_instance_add_physical_device(instance, adapter);
|
||||
dzn_instance_add_physical_device(instance, (IUnknown *)adapter, &desc);
|
||||
|
||||
IDXGIAdapter1_Release(adapter);
|
||||
|
||||
|
|
|
@ -182,7 +182,7 @@ struct dzn_physical_device {
|
|||
struct vk_device_extension_table supported_extensions;
|
||||
struct vk_physical_device_dispatch_table dispatch;
|
||||
|
||||
IDXGIAdapter1 *adapter;
|
||||
IUnknown *adapter;
|
||||
DXGI_ADAPTER_DESC1 adapter_desc;
|
||||
|
||||
uint32_t queue_family_count;
|
||||
|
@ -234,7 +234,7 @@ void
|
|||
d3d12_enable_gpu_validation(void);
|
||||
|
||||
ID3D12Device2 *
|
||||
d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features);
|
||||
d3d12_create_device(IUnknown *adapter, bool experimental_features);
|
||||
|
||||
struct dzn_queue {
|
||||
struct vk_queue vk;
|
||||
|
|
|
@ -388,9 +388,9 @@ d3d12_enable_gpu_validation(void)
|
|||
}
|
||||
|
||||
ID3D12Device2 *
|
||||
d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features)
|
||||
d3d12_create_device(IUnknown *adapter, bool experimental_features)
|
||||
{
|
||||
typedef HRESULT(WINAPI *PFN_D3D12CREATEDEVICE)(IDXGIAdapter1 *, D3D_FEATURE_LEVEL, REFIID, void **);
|
||||
typedef HRESULT(WINAPI *PFN_D3D12CREATEDEVICE)(IUnknown *, D3D_FEATURE_LEVEL, REFIID, void **);
|
||||
PFN_D3D12CREATEDEVICE D3D12CreateDevice;
|
||||
|
||||
struct util_dl_library *d3d12_mod = util_dl_open(UTIL_DL_PREFIX "d3d12" UTIL_DL_EXT);
|
||||
|
|
Loading…
Reference in New Issue