2016-10-03 1 views
-1

파이프 라인을 만들려고 할 때 문제가 발생했지만 Vulkan에 익숙해지기 위해 작은 Vulkan 테스트 응용 프로그램을 작성했습니다. 검증 층에서 잘못된 쉐이더 모듈 개체 0x8이 잘못된 쉐이더 모듈 개체 0 * 9Vulkan : 유효하지 않은 셰이더 모듈 개체

그리고 다음 프로그램 충돌 :

vkCreateGraphicsPipeline 다음과 같은 오류가 발생하는 유효성 검사 레이어가 발생합니다. 버텍스 쉐이더 및 프래그먼트 셰이더 용 VkShaderModule을 생성하고 glslangvalidator -V를 사용하여 vkCreateShaderModule이 불평하지 않은 SPIR-V 모듈로 변환했습니다.

내가 놓칠만한 것이 있습니까? 그 예들은 내가하는 것과 똑같은 일을하는 것처럼 보입니다. VK_LAYER_LUNARG_object_tracker 검증 계층에 의해 검출 된

+0

당신이 실제로 문제를 일으키는 코드를 우리에게 알려주지 않았다. –

+0

아래 투표는 매우 부적절합니다. 이 경우 코드는 관련이 없습니다. 셰이더 모듈을 만들고 파이프 라인에 지정하는 방법이 하나뿐이기 때문입니다. 또한 Vulkan API의 자세한 표시로 인해 실용적이지 않습니다. 오류 메시지 자체는 매우 모호하지만 매우 구체적인 원인이있을 수 있으며 의심 할 여지없이 다른 사람들이 이전에 발생하여 정확히 어떤 시나리오에서 발생했는지 알아야합니다. – atlan

+0

사실이라면 기본적으로 유효성 검사 레이어가 어떤 식 으로든 손상되었다고 가정합니다. 그리고 사람들이 그래픽 파이프 라인을 전혀 만들 수 없다면 아무도 유효성 검사 레이어를 사용할 수 없게됩니다. 물론 사람들은 유효성 검사 레이어를 사용하기 때문에 쉐이더 모듈로부터 그래픽 파이프 라인을 생성하는 일반적인 문제는있을 수 없습니다. 그러므로 다른 이유로 의심되는 이유가 없으면 코드가 잘못되었다고 생각해야합니다. 따라서 우리는 여러분의 코드가 실제로 무엇을하는지 볼 필요가 있습니다. –

답변

0

오류 메시지와 무효 VULKAN 오브젝트 핸들 층 충돌 동작 점 (예컨대 unsuccessfuly vkCreate* D 또는 사용 전에 vkDestroy ED 개체).

유효성 검사 레이어가 모두 활성화되어 있고 규정 된 순서대로 작동하지 않으면 충돌이 발생하지 않아야합니다. 이는 VK_LAYER_LUNARG_standard_validation 메타 레이어만을 사용하여 보장 할 수 있습니다.

좋은 유효성 검사기와 마찬가지로 오류 메시지는 조급 한 사람이 완전히 읽을 수 없습니다.
표준 유효성 검사 레이어는 GitHub/KhronosGroup/Vulkan-LoaderAndValidationLayers/layers에 오픈 소스이므로 의심스러운 경우 지정된 메시지 텍스트를 검색 할 수 있습니다. 일반적으로 core_validation.cpp에 있지만 귀하의 경우에는 object_tracker.cpp이됩니다. (메시지가 "잘못된 % s 개체 0x %"와 같이 printf 형식 일 것입니다. 검색하기가 더 어려워집니다).

관련 문제