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( ...@@ -226,6 +226,21 @@ HRESULT D3DCompile(
return toJavaPointer(renderTarget); 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) bool defineHardwareAdapter(IDXGIFactory4 *pFactory, IDXGIAdapter1 **ppAdapter)
{ {
*ppAdapter = nullptr; *ppAdapter = nullptr;
...@@ -238,6 +253,10 @@ HRESULT D3DCompile( ...@@ -238,6 +253,10 @@ HRESULT D3DCompile(
} }
if (SUCCEEDED(D3D12CreateDevice(pAdapter, D3D_FEATURE_LEVEL_11_0, _uuidof(ID3D12Device), nullptr))) if (SUCCEEDED(D3D12CreateDevice(pAdapter, D3D_FEATURE_LEVEL_11_0, _uuidof(ID3D12Device), nullptr)))
{ {
if (isBlacklisted(pAdapter))
{
continue;
}
*ppAdapter = pAdapter; *ppAdapter = pAdapter;
return true; return true;
} }
...@@ -246,21 +265,6 @@ HRESULT D3DCompile( ...@@ -246,21 +265,6 @@ HRESULT D3DCompile(
return false; 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( JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_redrawer_Direct3DRedrawer_createDirectXDevice(
JNIEnv *env, jobject redrawer, jlong windowHandle) JNIEnv *env, jobject redrawer, jlong windowHandle)
{ {
...@@ -274,10 +278,6 @@ HRESULT D3DCompile( ...@@ -274,10 +278,6 @@ HRESULT D3DCompile(
{ {
return 0; return 0;
} }
if (isBlacklisted(hardwareAdapter.get()))
{
return 0;
}
gr_cp<ID3D12Device> device; gr_cp<ID3D12Device> device;
if (!SUCCEEDED(D3D12CreateDevice(hardwareAdapter.get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&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