summaryrefslogtreecommitdiffstats
path: root/tools/gfx/vulkan/render-vk.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-04-29 14:19:51 -0700
committerGitHub <noreply@github.com>2021-04-29 14:19:51 -0700
commit2482271fffbe85efc1bd7efcf74a76f6ed436012 (patch)
tree707da083c8eda527b7c548d636cb884cf53c53eb /tools/gfx/vulkan/render-vk.cpp
parentad6f3070251f25cf022c231b8567d78e98061127 (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.cpp19
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);