Vulkan:debugPrintfEXT 不打印任何内容

Vulkan: debugPrintfEXT doesn't print anything

我无法让 debugPrintfEXT 工作。我没有看到我错过了什么。

我采取的步骤:

代码:

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);

详情:

你正在做的应该有用。

我通过对 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;

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

如果您可以使用此示例,也许您会发现您在应用程序中所做的不同。