Android is not a supported platform for DXVK. Please report this to whoever maintains whatever Winlator version you're using.
@K0bin
I believe there's a legitimate hidden issue here (outside of the regression within Winlator), specifically with this commit: https://github.com/doitsujin/dxvk/commit/3e9246081853fd1d1adb5ebce86ea0b392f9202c
The semantic of handling failed vkCreateDevice in dxvk::DxvkAdapter::createDevice was changed from throwing an exception (which downstream code still expects) to silently returning a nullptr (which downstream does not expect and does not check):
E.g. in the past, an error would've been thrown: https://github.com/doitsujin/dxvk/blob/4f47cb21032926b1f136035e696dc286ebd3cdc7/src/dxvk/dxvk_adapter.cpp#L569
if (vr != VK_SUCCESS)
throw DxvkError("DxvkAdapter: Failed to create device");
Now, a nullptr device is returned: https://github.com/doitsujin/dxvk/blob/10c9ef05e08ca28af18366c7f163bf838828300c/src/dxvk/dxvk_adapter.cpp#L228
if (vr) {
Logger::err(str::format("Failed to create Vulkan device: ", vr));
return nullptr;
}
However, it's still being called with the expectation that it throws instead of returning a nullptr, e.g.: https://github.com/doitsujin/dxvk/blob/4f47cb21032926b1f136035e696dc286ebd3cdc7/src/d3d11/d3d11_main.cpp#L103
try {
// ...
Com<D3D11DXGIDevice> device = new D3D11DXGIDevice(
pAdapter, nullptr, nullptr,
dxvkInstance, dxvkAdapter, dxvkDevice, <-- is now nullable
devFeatureLevel, Flags);
// ...
} catch (const DxvkError& e) {
Logger::err("D3D11InternalCreateDevice: Failed to create D3D11 device");
return E_FAIL;
}
The D3D11DXGIDevice constructor then triggers:
D3D11DXGIDevice::D3D11DXGIDevice(
IDXGIAdapter* pAdapter,
ID3D12Device* pD3D12Device,
ID3D12CommandQueue* pD3D12Queue,
Rc<DxvkInstance> pDxvkInstance,
Rc<DxvkAdapter> pDxvkAdapter,
Rc<DxvkDevice> pDxvkDevice,
D3D_FEATURE_LEVEL FeatureLevel,
UINT FeatureFlags)
: m_dxgiAdapter (pAdapter),
// ...
m_dxvkDevice (pDxvkDevice), <-- now nullable
m_d3d11Device (this, FeatureLevel, FeatureFlags),
// ...
The m_d3d11Device construction calls:
D3D11Device::D3D11Device(
D3D11DXGIDevice* pContainer,
D3D_FEATURE_LEVEL FeatureLevel,
UINT FeatureFlags)
: m_container (pContainer),
// ...
m_dxvkDevice (pContainer->GetDXVKDevice()), <-- now nullable
m_dxvkAdapter (m_dxvkDevice->adapter()), <-- segfaults if dxvkDevice is null
// ...
Should DxvkAdapter::createDevice keep throwing an exception?
Nothing extracted yet.
So basically this is the latest working DXVK master build on Winlator Glibc
https://github.com/doitsujin/dxvk/actions/runs/15419848402
Every master after this one doesn't work with the DirectX 9 test I tried and Fallout New Vegas
https://github.com/doitsujin/dxvk/actions/runs/15420006650
System information