Vulkan:debugPrintfEXT 不打印任何内容
Vulkan: debugPrintfEXT doesn't print anything
我无法让 debugPrintfEXT
工作。我没有看到我错过了什么。
我采取的步骤:
- 启用实例扩展
VK_EXT_debug_utils
;使用 Nvidia Nsight 验证。
- 使用DebugUtils print 输出消息。打印所有消息,包括 DEBUG 和 INFO。
- 已将
#extension GL_EXT_debug_printf : enable
添加到顶点着色器。
- 在顶点着色器中使用
debugPrintfEXT("Foo")
。
- 运行 来自 Vulkan Configurator 的代码,启用了打印层。
- 在实例中启用验证功能。
代码:
vk::InstanceCreateInfo createInfo;
std::vector valFeaturesEnabled = {vk::ValidationFeatureEnableEXT::eDebugPrintf};
vk::ValidationFeaturesEXT valFeatures;
valFeatures.enabledValidationFeatureCount = (uint32_t) valFeaturesEnabled.size();
valFeatures.pEnabledValidationFeatures = valFeaturesEnabled.data();
createInfo.setPNext(&valFeatures);
详情:
- Windows 10
- GTX 1080Ti
- Visual Studio 2019
- 凡尔康 1.2
你正在做的应该有用。
我通过对 Khronos 中的“hello triangle”示例进行一些小改动,让它开始工作 Vulkan-Samples。
通过使用 CMake 选项 -DVKB_VALIDATION_LAYERS=ON
构建或在 hello_triangle.cpp
的顶部添加定义,强制对调试和发布构建使用验证层。由于该项目在 Debug 构建中激活验证层,如果您坚持使用 Debug 构建,则可以跳过此步骤。
#define VKB_VALIDATION_LAYERS
将 VK_DEBUG_REPORT_INFORMATION_BIT_EXT
标志添加到 debug_report_create_info.flags
。此要求的 documentation 尚不清楚,但很快就会修复。你已经在这样做了。
在调用 vkCreateInstance
之前添加以下代码。它与您粘贴的代码基本相同。
VkValidationFeatureEnableEXT enabled[] = {VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT};
VkValidationFeaturesEXT features{VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT};
features.disabledValidationFeatureCount = 0;
features.enabledValidationFeatureCount = 1;
features.pDisabledValidationFeatures = nullptr;
features.pEnabledValidationFeatures = enabled;
features.pNext = instance_info.pNext;
instance_info.pNext = &features;
并对顶点着色器进行与您所做的相同的更改。
如果您可以使用此示例,也许您会发现您在应用程序中所做的不同。
我无法让 debugPrintfEXT
工作。我没有看到我错过了什么。
我采取的步骤:
- 启用实例扩展
VK_EXT_debug_utils
;使用 Nvidia Nsight 验证。 - 使用DebugUtils print 输出消息。打印所有消息,包括 DEBUG 和 INFO。
- 已将
#extension GL_EXT_debug_printf : enable
添加到顶点着色器。 - 在顶点着色器中使用
debugPrintfEXT("Foo")
。 - 运行 来自 Vulkan Configurator 的代码,启用了打印层。
- 在实例中启用验证功能。
代码:
vk::InstanceCreateInfo createInfo;
std::vector valFeaturesEnabled = {vk::ValidationFeatureEnableEXT::eDebugPrintf};
vk::ValidationFeaturesEXT valFeatures;
valFeatures.enabledValidationFeatureCount = (uint32_t) valFeaturesEnabled.size();
valFeatures.pEnabledValidationFeatures = valFeaturesEnabled.data();
createInfo.setPNext(&valFeatures);
详情:
- Windows 10
- GTX 1080Ti
- Visual Studio 2019
- 凡尔康 1.2
你正在做的应该有用。
我通过对 Khronos 中的“hello triangle”示例进行一些小改动,让它开始工作 Vulkan-Samples。
通过使用 CMake 选项 -DVKB_VALIDATION_LAYERS=ON
构建或在 hello_triangle.cpp
的顶部添加定义,强制对调试和发布构建使用验证层。由于该项目在 Debug 构建中激活验证层,如果您坚持使用 Debug 构建,则可以跳过此步骤。
#define VKB_VALIDATION_LAYERS
将 VK_DEBUG_REPORT_INFORMATION_BIT_EXT
标志添加到 debug_report_create_info.flags
。此要求的 documentation 尚不清楚,但很快就会修复。你已经在这样做了。
在调用 vkCreateInstance
之前添加以下代码。它与您粘贴的代码基本相同。
VkValidationFeatureEnableEXT enabled[] = {VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT};
VkValidationFeaturesEXT features{VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT};
features.disabledValidationFeatureCount = 0;
features.enabledValidationFeatureCount = 1;
features.pDisabledValidationFeatures = nullptr;
features.pEnabledValidationFeatures = enabled;
features.pNext = instance_info.pNext;
instance_info.pNext = &features;
并对顶点着色器进行与您所做的相同的更改。
如果您可以使用此示例,也许您会发现您在应用程序中所做的不同。