Vulkan:debugPrintfEXT 不打印任何内容

它的

我不能debugPrintfEXT上班。我不明白我错过了什么。

我采取的步骤:

  • 启用实例扩展VK_EXT_debug_utils使用 Nvidia Nsight 进行验证。
  • 使用 DebugUtils 打印输出消息。打印所有消息,包括 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);

细节:

  • 视窗 10
  • GTX 1080Ti
  • 视觉工作室 2019
  • 火山1.2
卡尔舒尔茨

你在做什么应该有效。

我通过对 Khronos Vulkan-Samples 中的“hello triangle”示例进行了一些小的更改来使其工作

通过使用 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. 此要求文档尚不清楚,但很快就会修复。你已经在这样做了。

在调用之前添加以下代码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;

并对您所做的顶点着色器进行相同的更改。

如果您可以使用此示例使其工作,也许您会看到您在应用程序中所做的不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章