Vulkan VK_LAYER_KHRONOS_validation 是错误的位类型

问题描述 投票:0回答:1

问题:

您好!我正在两个 64 位 Windows 系统之间开发一个 Vulkan 项目,在两个系统上使用相同的 MinGW/GCC 构建系统。我正在用C语言编写程序来挑战自己,到目前为止进展顺利。当我在系统 1 上运行我的程序时,验证层按预期工作。 请注意:该程序在禁用验证层的两个系统上都运行良好。 在系统 2 上,这是我运行程序时的控制台输出:

INFO: 3 Vulkan extension(s) required by GLFW:
        VK_KHR_surface
        VK_KHR_win32_surface
        VK_EXT_debug_utils
        All GLFW-required Vulkan extensions are supported!
INFO: 1 Vulkan validation layer(s) required:
        VK_LAYER_KHRONOS_validation
        Required Vulkan validation layers are supported!
ERROR: loader_get_json: Failed to open JSON file E:\Epic Games\Launcher\Portal\Extras\Overlay\EOSOverlayVkLayer-Win32.json
ERROR: loader_get_json: Failed to open JSON file E:\Epic Games\Launcher\Portal\Extras\Overlay\EOSOverlayVkLayer-Win64.json
WARNING: Layer VK_LAYER_OBS_HOOK uses API version 1.2 which is older than the application specified API version of 1.3. May cause issues.
WARNING: Layer VK_LAYER_OBS_HOOK uses API version 1.2 which is older than the application specified API version of 1.3. May cause issues.
ERROR: Requested layer "VK_LAYER_KHRONOS_validation" was wrong bit-type!
ERROR: Vulkan instance creation failed with result code -6!
ERROR: Vulkan debug messenger creation failed with result code -7!
Assertion failed: instance != VK_NULL_HANDLE, file C:\Users\Kade\Documents\westy\src\lib\glfw-3.3.2\src\vulkan.c, line 305

我得出的结论是前两个

loader_get_json
错误不是问题的根源(参见this GitHub ticket)。

我没有使用

VK_LAYER_OBS_HOOK
层,所以这个问题(可能)在这一点上与我无关。

最后 3 个错误困扰着我。 “

Requested layer "VK_LAYER_KHRONOS_validation" was wrong bit-type!
”是否表示我在这个特定的验证层和我的构建系统之间存在 32/64 位不匹配,或者其他什么?如果这是错误,我不太确定如何解决该问题。实例和调试信使错误代码分别转换为
VK_ERROR_LAYER_NOT_PRESENT
VK_ERROR_EXTENSION_NOT_PRESENT
。有问题的层是我遇到问题的验证层,有问题的扩展是
VK_EXT_debug_utils
,这取决于验证层的工作。

我尝试过的:

  • 检查 Vulkan Maintenance Tool 是否有可能进行维修(无)。
  • 检查 Vulkan 配置器和所有系统环境变量(所有路径正确)。
  • 重新安装 Vulkan SDK;这似乎什么也没做。
  • 重新安装 MinGW,因为我没有想法。

我需要解决的问题:

  • 这个错误是什么意思?我无法在网上找到文档;可能是我看的不够仔细
  • 有哪些我还没有尝试过的潜在解决方案?

感谢您的帮助!

c windows mingw vulkan validation-layers
1个回答
0
投票

解决方案:

我的 MinGW 版本是 32 位版本。我安装了MinGW-64,在做工程的时候在GCC的选项里指定了

-m64
。这也揭示了一些我在系统 1 上没有得到的验证性能警告。我还发现了一些对
free()
的错误调用,这些调用在我的 32 位构建中没有引起任何问题。奇怪,但我很高兴我一切顺利。

© www.soinside.com 2019 - 2024. All rights reserved.