微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vulkan:debugPrintfEXT不打印任何内容

如何解决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);

详细信息:

  • Windows 10
  • GTX 1080Ti
  • Visual Studio 2019
  • Vulkan 1.2

解决方法

您正在做的事情应该可以工作。

通过对Khronos Vulkan-Samples中的“ hello三角形”示例进行一些小的更改,使它起作用。

通过使用CMake选项-DVKB_VALIDATION_LAYERS=ON进行构建或通过在hello_triangle.cpp的顶部添加定义来强制使用Debug和Release版本的验证层。由于该项目会在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;

对顶点着色器进行相同的更改。

如果您可以在此示例中使用它,也许您将在应用程序中看到正在做的事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。