c# Vulkan VK_LAYER_KHRONOS_验证的位类型错误

qv7cva1a  于 2023-03-21  发布在  C#
关注(0)|答案(1)|浏览(332)

问题:

大家好!我正在两个64位Windows系统之间开发一个Vulkan项目,在两个系统上使用相同的MinGW/GCC构建系统。我用C编写程序来挑战自己,到目前为止一切顺利。当我在System 1上运行程序时,验证层按预期工作。**请注意:在禁用验证层的情况下,程序在两个系统上都能正常工作。**在System 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_PRESENTVK_ERROR_EXTENSION_NOT_PRESENT。question是我遇到问题的验证层,所讨论的扩展名是VK_EXT_debug_utils,它依赖于验证层的工作。

我尝试过的:

  • 检查Vulkan维护工具是否存在潜在维修(无)。
  • 检查Vulkan配置器和所有系统环境变量(所有路径正确)。
  • 重新安装Vulkan SDK;这似乎没有任何作用。
  • 重新安装MinGW,因为我没有主意了。

我需要解决的问题:

  • 此错误是什么意思?我无法联机找到文档;也许我找得还不够仔细。
  • 我还没有尝试过哪些潜在的解决方案?

谢谢你的帮助!

s2j5cfk0

s2j5cfk01#

溶液:

我的MinGW版本是32位版本。我安装了MinGW-64,并在创建项目时在GCC的选项中指定了-m64。这也显示了一些验证性能警告,我没有在System 1上得到这些警告。我还发现了一些对free()的错误调用,这些调用在我的32位构建中没有引起任何问题。奇怪的是,但我很高兴我都解决了。

相关问题