Get Adapter info and log them
This commit is contained in:
@@ -99,8 +99,6 @@ namespace Juliet
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef IDXGIINFOQUEUE_SUPPORTED
|
#ifdef IDXGIINFOQUEUE_SUPPORTED
|
||||||
void InitializeDebugLayer(NonNullPtr<D3D12Renderer> renderer)
|
void InitializeDebugLayer(NonNullPtr<D3D12Renderer> renderer)
|
||||||
{
|
{
|
||||||
@@ -127,9 +125,12 @@ namespace Juliet
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IDXGIInfoQueue_SetBreakOnSeverity(renderer->DXGIInfoQueue, DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR, TRUE);
|
IDXGIInfoQueue_SetBreakOnSeverity(renderer->DXGIInfoQueue, DXGI_DEBUG_ALL,
|
||||||
IDXGIInfoQueue_SetBreakOnSeverity(renderer->DXGIInfoQueue, DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION, TRUE);
|
DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR, TRUE);
|
||||||
IDXGIInfoQueue_SetBreakOnSeverity(renderer->DXGIInfoQueue, DXGI_DEBUG_ALL, DXGI_INFO_QUEUE_MESSAGE_SEVERITY_WARNING, TRUE);
|
IDXGIInfoQueue_SetBreakOnSeverity(renderer->DXGIInfoQueue, DXGI_DEBUG_ALL,
|
||||||
|
DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION, TRUE);
|
||||||
|
IDXGIInfoQueue_SetBreakOnSeverity(renderer->DXGIInfoQueue, DXGI_DEBUG_ALL,
|
||||||
|
DXGI_INFO_QUEUE_MESSAGE_SEVERITY_WARNING, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,7 +145,8 @@ namespace Juliet
|
|||||||
renderer->DXGIDebug = nullptr;
|
renderer->DXGIDebug = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (renderer->DXGIDebug_DLL) {
|
if (renderer->DXGIDebug_DLL)
|
||||||
|
{
|
||||||
FreeLibrary(renderer->DXGIDebug_DLL);
|
FreeLibrary(renderer->DXGIDebug_DLL);
|
||||||
renderer->DXGIDebug_DLL = nullptr;
|
renderer->DXGIDebug_DLL = nullptr;
|
||||||
}
|
}
|
||||||
@@ -208,19 +210,23 @@ namespace Juliet
|
|||||||
{
|
{
|
||||||
renderer->IsTearingSupported = false;
|
renderer->IsTearingSupported = false;
|
||||||
}
|
}
|
||||||
IDXGIFactory1_Release(factory5);
|
IDXGIFactory5_Release(factory5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If available use DXGI1.6 to fetch the good graphics card.
|
||||||
|
// 1.6 should be available on most Win10 PC if they didnt their windows update.
|
||||||
|
// Lets support not having it for now...
|
||||||
IDXGIFactory6* factory6 = nullptr;
|
IDXGIFactory6* factory6 = nullptr;
|
||||||
result = IDXGIFactory4_QueryInterface(renderer->DXGIFactory, IID_IDXGIFactory6, (void**)&factory6);
|
result = IDXGIFactory4_QueryInterface(renderer->DXGIFactory, IID_IDXGIFactory6, (void**)&factory6);
|
||||||
if (SUCCEEDED(result))
|
if (SUCCEEDED(result))
|
||||||
{
|
{
|
||||||
// TODO: Put into the config
|
// TODO: Put into the config
|
||||||
const static bool useHighPerfFirst = true;
|
static constexpr bool useLowPower = false;
|
||||||
result = IDXGIFactory6_EnumAdapterByGpuPreference(factory6, 0,
|
result = IDXGIFactory6_EnumAdapterByGpuPreference(factory6, 0,
|
||||||
useHighPerfFirst ? DXGI_GPU_PREFERENCE_MINIMUM_POWER
|
useLowPower ? DXGI_GPU_PREFERENCE_MINIMUM_POWER
|
||||||
: DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE,
|
: DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE,
|
||||||
IID_IDXGIAdapter1, (void**)&renderer->DXGIAdapter);
|
IID_IDXGIAdapter1,
|
||||||
|
reinterpret_cast<void**>(&renderer->DXGIAdapter));
|
||||||
IDXGIFactory6_Release(factory6);
|
IDXGIFactory6_Release(factory6);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -235,6 +241,31 @@ namespace Juliet
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adapter is setup, get all the relevant info in the descriptor
|
||||||
|
DXGI_ADAPTER_DESC1 adapterDesc;
|
||||||
|
result = IDXGIAdapter1_GetDesc1(renderer->DXGIAdapter, &adapterDesc);
|
||||||
|
if (FAILED(result))
|
||||||
|
{
|
||||||
|
DestroyRenderer_Internal(renderer);
|
||||||
|
Assert(false && "Could not get DXGIAdapter description");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Driver version
|
||||||
|
LARGE_INTEGER umdVersion;
|
||||||
|
result = IDXGIAdapter1_CheckInterfaceSupport(renderer->DXGIAdapter, IID_IDXGIDevice, &umdVersion);
|
||||||
|
if (FAILED(result))
|
||||||
|
{
|
||||||
|
DestroyRenderer_Internal(renderer);
|
||||||
|
Assert(false && "Could not get DXGIAdapter driver version");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Log(LogLevel::Message, LogCategory::Graphics, "D3D12 Renderer Infos:");
|
||||||
|
Log(LogLevel::Message, LogCategory::Graphics, "D3D12 Adapter: %S", adapterDesc.Description);
|
||||||
|
Log(LogLevel::Message, LogCategory::Graphics, "D3D12 Driver Version: %d.%d.%d.%d", HIWORD(umdVersion.HighPart),
|
||||||
|
LOWORD(umdVersion.HighPart), HIWORD(umdVersion.LowPart), LOWORD(umdVersion.LowPart));
|
||||||
|
|
||||||
auto device = static_cast<GraphicsDevice*>(Calloc(1, sizeof(GraphicsDevice)));
|
auto device = static_cast<GraphicsDevice*>(Calloc(1, sizeof(GraphicsDevice)));
|
||||||
device->DestroyDevice = DestroyGraphicsDevice;
|
device->DestroyDevice = DestroyGraphicsDevice;
|
||||||
device->Renderer = renderer;
|
device->Renderer = renderer;
|
||||||
|
|||||||
Reference in New Issue
Block a user