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);
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 =
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");
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
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);
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;
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;
}
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);