【问题标题】:device validation layer vulkan设备验证层 vulkan
【发布时间】:2017-12-04 14:11:09
【问题描述】:

您好,我从 vulkan API 开始,我正在尝试显示验证层。 但问题是我只能访问一个设备验证层:“VK_LAYER_NV_optimus”

{//Enumerating Device Verification Layers
    uint32_t layer_count = 0;
    vkEnumerateDeviceLayerProperties(_gpu, &layer_count, nullptr);
    std::vector<VkLayerProperties> layer_property_list(layer_count);
    vkEnumerateDeviceLayerProperties(_gpu, &layer_count, layer_property_list.data());
    std::cout << "Device Layers : \n";
    for (auto &i : layer_property_list) {
        std::cout << "  " << i.layerName << "\t\t | " << i.description << std::endl;
    }
    std::cout << std::endl;
}

在我关注的教程中,这些人有更多层,他正在使用“VK_LAYER_LUNARG_standard_validation”。

here你可以看到这家伙得到了什么。

虽然教程可能不是最新的,但我找不到与此主题相关的任何内容。

感谢您的帮助:)

【问题讨论】:

  • 尝试通过环境变量启用层。这样您就不必重新编译您的代码来启用或禁用特定层。但除此之外 - 最近我安装了最新版本的 Vulkan SDK(在 Windows 上)并且层不起作用。我不得不将丢失的条目添加到注册表中。

标签: c++ vulkan


【解决方案1】:

考虑使用vkEnumerateInstanceLayerProperties

Vulkan 前段时间弃用了设备层,本质上使所有层都成为实例层。在这种情况下,Optimus 层可能同时被注册为实例层和设备层,这是允许的,这也是当您列出设备层时它会显示的原因。

如果这样做没有帮助,则可能是安装问题导致您无法看到图层。考虑运行vulkaninfovia 来帮助解决问题。

最后,并非所有层都是验证层。枚举层时,您会发现执行其他功能的层,如您提供的屏幕截图所示。

【讨论】:

  • 值得注意的是,在更新的驱动程序上vkEnumerateDeviceLayerProperties 返回与vkCreateInstance 上启用的层完全相同的列表。 Optimus 是隐式层,因此它会被启用并显示在vkEnumerateDeviceLayerProperties
  • 我使用了vkEnumerateInstanceLayerProperties,然后我得到了几个结果,并且 VK_LAYER_LUNARG_standard_validation 也在,谢谢。所以我猜这个教程不是最新的
  • 我的错误教程说设备层已被弃用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
相关资源
最近更新 更多