vulkan在shader中打log
VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
在较新的vulkan版本中,添加了对debug_printf的支持,也就是说,现在可以在shader中打log了。
开启vulkan debug_printf
debug_printf在vulkan中是VALIDATION_FEATURE,也就是说可以通过和其他验证层一样的方式来开启和关闭,非常方便。
注意,vulkan中开启debug_printf需要同时开启device扩展VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME

(推荐)使用Vulkan Configurator
在最近的vulkan sdk中,新添加了名为Vulkan Configurator的工具,可以很方便的在UI界面下配置vulkan的validation layer
使用环境变量
和vulkan旧版本相兼容,debug_printf也可以通过配置环境变量开启
VK_LAYER_ENABLES=VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
通过设置环境变量VK_LAYER_ENABLES到VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT来全局开启debug_printf功能
在代码中配置
vulkan在代码中配置debug_printf会稍微复杂一些,但是可以对每个程序实现更精细的控制

shader中打log
GLSL

HLSL

GLSL中不要忘记
#extension GL_EXT_debug_printf : enable
,HLSL dxc编译器如果开启优化编译器会crash,现在如果要在hlsl打log,请先关闭优化
dxc -spirv -T vs_6_0 -E vert hlsl/shader.hlsl -Fo vert.spv -O0
最终效果
