Commit e35307f8 authored by Roman Sedaikin's avatar Roman Sedaikin

Updated approach to finding adapters when using DirectX.

parent de680f76
......@@ -226,6 +226,21 @@ HRESULT D3DCompile(
return toJavaPointer(renderTarget);
}
bool isBlacklisted(IDXGIAdapter1* hardwareAdapter)
{
DXGI_ADAPTER_DESC1 desc;
hardwareAdapter->GetDesc1(&desc);
std::wstring currentAdapterName(desc.Description);
for (std::wstring name : adapterBlacklist) {
if (currentAdapterName == name)
{
fwprintf(stderr, L"Graphics card: %s is blacklisted.\n", name.c_str());
return true;
}
}
return false;
}
bool defineHardwareAdapter(IDXGIFactory4 *pFactory, IDXGIAdapter1 **ppAdapter)
{
*ppAdapter = nullptr;
......@@ -238,6 +253,10 @@ HRESULT D3DCompile(
}
if (SUCCEEDED(D3D12CreateDevice(pAdapter, D3D_FEATURE_LEVEL_11_0, _uuidof(ID3D12Device), nullptr)))
{
if (isBlacklisted(pAdapter))
{
continue;
}
*ppAdapter = pAdapter;
return true;
}
......@@ -246,21 +265,6 @@ HRESULT D3DCompile(
return false;
}
bool isBlacklisted(IDXGIAdapter1* hardwareAdapter)
{
DXGI_ADAPTER_DESC1 desc;
hardwareAdapter->GetDesc1(&desc);
std::wstring currentAdapterName(desc.Description);
for (std::wstring name : adapterBlacklist) {
if (currentAdapterName == name)
{
fwprintf(stderr, L"Graphics card: %s is blacklisted.\n", name.c_str());
return true;
}
}
return false;
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_redrawer_Direct3DRedrawer_createDirectXDevice(
JNIEnv *env, jobject redrawer, jlong windowHandle)
{
......@@ -274,10 +278,6 @@ HRESULT D3DCompile(
{
return 0;
}
if (isBlacklisted(hardwareAdapter.get()))
{
return 0;
}
gr_cp<ID3D12Device> device;
if (!SUCCEEDED(D3D12CreateDevice(hardwareAdapter.get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&device))))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment