我已经写了一个小的Vulkan测试应用来熟悉自己的Vulkan,尽管我在尝试创建管道时遇到了一个问题。
vkCreateGraphicsPipeline导致验证层产生以下错误:无效的着色器模块对象0x8无效的着色器模块对象0x9
然后程序在验证层崩溃。我已经为顶点着色器和片段着色器创建了VkShaderModule,并使用glslangvalidator -V将它们转换为vkCreateShaderModule没有抱怨的SPIR-V模块。
有什么我可能遗漏的吗?这些例子看起来和我做事情的方式完全一样
发布于 2016-10-04 03:29:37
错误消息和层崩溃行为指向由VK_LAYER_LUNARG_object_tracker验证层检测到的无效Vulkan对象句柄(例如,使用前对象不成功的vkCreate*d或vkDestroyed )。
如果验证层都被启用并按规定的顺序运行,那么它们可能不会崩溃。这可以通过仅使用VK_LAYER_LUNARG_standard_validation元层来确保。
就像在任何好的验证器中一样,错误消息对于弱小的人类来说是完全不可读的。
标准验证层在GitHub/KhronosGroup/Vulkan-LoaderAndValidationLayers/layers中是开源的,因此如果有疑问,可以在其中搜索给定的消息文本。通常是在core_validation.cpp中,但在您的例子中应该是object_tracker.cpp。(消息将采用printf格式,例如“无效的%s对象0x%”使其更难搜索)。
https://stackoverflow.com/questions/39823449
复制相似问题