GPU: Forward D3D12 validation warnings to the SDL log
This commit is contained in:
parent
efb59bd0bf
commit
dc5a2ddfd0
1 changed files with 114 additions and 5 deletions
|
@ -168,6 +168,7 @@ static const IID D3D_IID_ID3D12CommandSignature = { 0xc36a797c, 0xec80, 0x4f0a,
|
||||||
static const IID D3D_IID_ID3D12PipelineState = { 0x765a30f3, 0xf624, 0x4c6f, { 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45 } };
|
static const IID D3D_IID_ID3D12PipelineState = { 0x765a30f3, 0xf624, 0x4c6f, { 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45 } };
|
||||||
static const IID D3D_IID_ID3D12Debug = { 0x344488b7, 0x6846, 0x474b, { 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0 } };
|
static const IID D3D_IID_ID3D12Debug = { 0x344488b7, 0x6846, 0x474b, { 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0 } };
|
||||||
static const IID D3D_IID_ID3D12InfoQueue = { 0x0742a90b, 0xc387, 0x483f, { 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58 } };
|
static const IID D3D_IID_ID3D12InfoQueue = { 0x0742a90b, 0xc387, 0x483f, { 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58 } };
|
||||||
|
static const IID D3D_IID_ID3D12InfoQueue1 = { 0x2852dd88, 0xb484, 0x4c0c, { 0xb6, 0xb1, 0x67, 0x16, 0x85, 0x00, 0xe6, 0x00 } };
|
||||||
|
|
||||||
// Enums
|
// Enums
|
||||||
|
|
||||||
|
@ -8167,11 +8168,6 @@ static bool D3D12_INTERNAL_TryInitializeD3D12DebugInfoQueue(D3D12Renderer *rende
|
||||||
infoQueue,
|
infoQueue,
|
||||||
&filter);
|
&filter);
|
||||||
|
|
||||||
ID3D12InfoQueue_SetBreakOnSeverity(
|
|
||||||
infoQueue,
|
|
||||||
D3D12_MESSAGE_SEVERITY_ERROR,
|
|
||||||
true);
|
|
||||||
|
|
||||||
ID3D12InfoQueue_SetBreakOnSeverity(
|
ID3D12InfoQueue_SetBreakOnSeverity(
|
||||||
infoQueue,
|
infoQueue,
|
||||||
D3D12_MESSAGE_SEVERITY_CORRUPTION,
|
D3D12_MESSAGE_SEVERITY_CORRUPTION,
|
||||||
|
@ -8181,6 +8177,118 @@ static bool D3D12_INTERNAL_TryInitializeD3D12DebugInfoQueue(D3D12Renderer *rende
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void WINAPI D3D12_INTERNAL_OnD3D12DebugInfoMsg(
|
||||||
|
D3D12_MESSAGE_CATEGORY category,
|
||||||
|
D3D12_MESSAGE_SEVERITY severity,
|
||||||
|
D3D12_MESSAGE_ID id,
|
||||||
|
LPCSTR description,
|
||||||
|
void *context)
|
||||||
|
{
|
||||||
|
char *catStr;
|
||||||
|
char *sevStr;
|
||||||
|
|
||||||
|
switch (category) {
|
||||||
|
case D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED:
|
||||||
|
catStr = "APPLICATION_DEFINED";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_MISCELLANEOUS:
|
||||||
|
catStr = "MISCELLANEOUS";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_INITIALIZATION:
|
||||||
|
catStr = "INITIALIZATION";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_CLEANUP:
|
||||||
|
catStr = "CLEANUP";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_COMPILATION:
|
||||||
|
catStr = "COMPILATION";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_STATE_CREATION:
|
||||||
|
catStr = "STATE_CREATION";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_STATE_SETTING:
|
||||||
|
catStr = "STATE_SETTING";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_STATE_GETTING:
|
||||||
|
catStr = "STATE_GETTING";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION:
|
||||||
|
catStr = "RESOURCE_MANIPULATION";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_EXECUTION:
|
||||||
|
catStr = "EXECUTION";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_CATEGORY_SHADER:
|
||||||
|
catStr = "SHADER";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
catStr = "UNKNOWN";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (severity) {
|
||||||
|
case D3D12_MESSAGE_SEVERITY_CORRUPTION:
|
||||||
|
sevStr = "CORRUPTION";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_SEVERITY_ERROR:
|
||||||
|
sevStr = "ERROR";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_SEVERITY_WARNING:
|
||||||
|
sevStr = "WARNING";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_SEVERITY_INFO:
|
||||||
|
sevStr = "INFO";
|
||||||
|
break;
|
||||||
|
case D3D12_MESSAGE_SEVERITY_MESSAGE:
|
||||||
|
sevStr = "MESSAGE";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sevStr = "UNKNOWN";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (severity <= D3D12_MESSAGE_SEVERITY_ERROR) {
|
||||||
|
SDL_LogError(
|
||||||
|
SDL_LOG_CATEGORY_GPU,
|
||||||
|
"D3D12 ERROR: %s [%s %s #%d]",
|
||||||
|
description,
|
||||||
|
catStr,
|
||||||
|
sevStr,
|
||||||
|
id);
|
||||||
|
} else {
|
||||||
|
SDL_LogWarn(
|
||||||
|
SDL_LOG_CATEGORY_GPU,
|
||||||
|
"D3D12 WARNING: %s [%s %s #%d]",
|
||||||
|
description,
|
||||||
|
catStr,
|
||||||
|
sevStr,
|
||||||
|
id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void D3D12_INTERNAL_TryInitializeD3D12DebugInfoLogger(D3D12Renderer *renderer)
|
||||||
|
{
|
||||||
|
ID3D12InfoQueue1 *infoQueue = NULL;
|
||||||
|
HRESULT res;
|
||||||
|
|
||||||
|
res = ID3D12Device_QueryInterface(
|
||||||
|
renderer->device,
|
||||||
|
D3D_GUID(D3D_IID_ID3D12InfoQueue1),
|
||||||
|
(void **)&infoQueue);
|
||||||
|
if (FAILED(res)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ID3D12InfoQueue1_RegisterMessageCallback(
|
||||||
|
infoQueue,
|
||||||
|
D3D12_INTERNAL_OnD3D12DebugInfoMsg,
|
||||||
|
D3D12_MESSAGE_CALLBACK_FLAG_NONE,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
ID3D12InfoQueue1_Release(infoQueue);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static SDL_GPUDevice *D3D12_CreateDevice(bool debugMode, bool preferLowPower, SDL_PropertiesID props)
|
static SDL_GPUDevice *D3D12_CreateDevice(bool debugMode, bool preferLowPower, SDL_PropertiesID props)
|
||||||
|
@ -8408,6 +8516,7 @@ static SDL_GPUDevice *D3D12_CreateDevice(bool debugMode, bool preferLowPower, SD
|
||||||
if (!D3D12_INTERNAL_TryInitializeD3D12DebugInfoQueue(renderer)) {
|
if (!D3D12_INTERNAL_TryInitializeD3D12DebugInfoQueue(renderer)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
D3D12_INTERNAL_TryInitializeD3D12DebugInfoLogger(renderer);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue