diff options
| author | Yong He <yonghe@outlook.com> | 2021-04-29 14:19:51 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-29 14:19:51 -0700 |
| commit | 2482271fffbe85efc1bd7efcf74a76f6ed436012 (patch) | |
| tree | 707da083c8eda527b7c548d636cb884cf53c53eb /tools/gfx/vulkan/render-vk.cpp | |
| parent | ad6f3070251f25cf022c231b8567d78e98061127 (diff) | |
`gfx` DebugCallback and debug layer. (#1822)
* `gfx` DebugCallback and debug layer.
Diffstat (limited to 'tools/gfx/vulkan/render-vk.cpp')
| -rw-r--r-- | tools/gfx/vulkan/render-vk.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tools/gfx/vulkan/render-vk.cpp b/tools/gfx/vulkan/render-vk.cpp index 55d0f2ee6..b3f99ff59 100644 --- a/tools/gfx/vulkan/render-vk.cpp +++ b/tools/gfx/vulkan/render-vk.cpp @@ -3983,11 +3983,19 @@ VKDevice::~VKDevice() VkBool32 VKDevice::handleDebugMessage(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg) { + DebugMessageType msgType = DebugMessageType::Info; + char const* severity = "message"; if (flags & VK_DEBUG_REPORT_WARNING_BIT_EXT) + { severity = "warning"; + msgType = DebugMessageType::Warning; + } if (flags & VK_DEBUG_REPORT_ERROR_BIT_EXT) + { severity = "error"; + msgType = DebugMessageType::Error; + } // pMsg can be really big (it can be assembler dump for example) // Use a dynamic buffer to store @@ -4004,11 +4012,7 @@ VkBool32 VKDevice::handleDebugMessage(VkDebugReportFlagsEXT flags, VkDebugReport msgCode, pMsg); - fprintf(stderr, "%s", buffer); - fflush(stderr); -#ifdef _WIN32 - OutputDebugStringA(buffer); -#endif + getDebugCallback()->handleMessage(msgType, DebugMessageSource::Driver, buffer); return VK_FALSE; } @@ -5512,7 +5516,10 @@ Result VKDevice::createProgram(const IShaderProgram::Desc& desc, IShaderProgram* (SlangInt)i, 0, kernelCode.writeRef(), diagnostics.writeRef()); if (diagnostics) { - // TODO: report compile error. + getDebugCallback()->handleMessage( + compileResult == SLANG_OK ? DebugMessageType::Warning : DebugMessageType::Error, + DebugMessageSource::Slang, + (char*)diagnostics->getBufferPointer()); } SLANG_RETURN_ON_FAIL(compileResult); shaderProgram->m_codeBlobs.add(kernelCode); |
