libretro / libretro/RetroArch

[Vulkan] Validation errors encoutered with a few cores

Open
#15,950 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Description

Here's a collection of some Vulkan validation errors I've encountered:

  • With PPSSPP, SwanStation and Flycast, just by launching a game:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-VkSamplerCreateInfo-addressModeU-01079 ] Object 0: handle = 0x1f1426633b0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x1aa95c2b | vkCreateSampler(): addressModeU is set to VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE but the VK_KHR_sampler_mirror_clamp_to_edge extension or samplerMirrorClampToEdge feature has not been enabled. The Vulkan spec states: If samplerMirrorClampToEdge is not enabled, and if the VK_KHR_sampler_mirror_clamp_to_edge extension is not enabled, addressModeU, addressModeV and addressModeW must not be VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-VkSamplerCreateInfo-addressModeU-01079)

  • Fast forwarding with Beetle PSX HW:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-vkQueueSubmit-pWaitSemaphores-00069 ] Object 0: handle = 0xf878780000001de1, type = VK_OBJECT_TYPE_SEMAPHORE; Object 1: handle = 0x1f14253bce0, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xef858864 | vkQueueSubmit(): pSubmits[0].pWaitSemaphores[0] Queue VkQueue 0x1f14253bce0[] is waiting on semaphore (VkSemaphore 0xf878780000001de1[]) that has no way to be signaled. The Vulkan spec states: All elements of the pWaitSemaphores member of all elements of pSubmits must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkQueueSubmit-pWaitSemaphores-00069)

  • Fast forwarding with PPSSPP:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ UNASSIGNED-Threading-MultipleThreads ] Object 0: handle = 0x1f142501920, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0x141cb623 | THREADING ERROR : vkQueueSubmit(): object of type VkQueue is simultaneously used in thread 32848 and thread 24980

  • Switching fullscreen<->windowed with PPSSPP (RA crashes):

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-vkResetCommandPool-device-parameter ] Object 0: handle = 0x2218c0889f0, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xe5d64275 | Invalid VkDevice 0x221950b0b40[]. The Vulkan spec states: device must be a valid VkDevice handle (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkResetCommandPool-device-parameter)

  • Non-stop with Flycast:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-vkUpdateDescriptorSets-None-03047 ] Object 0: handle = 0x50cf9000000065d, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID = 0x35d7ea98 | vkUpdateDescriptorSets() pDescriptorWrites[0] failed write update validation for VkDescriptorSet 0x50cf9000000065d[] with error: Cannot call vkUpdateDescriptorSets() to perform write update on VkDescriptorSet 0x50cf9000000065d[] allocated with VkDescriptorSetLayout 0x88693900000000c0[] that is in use by a command buffer. The Vulkan spec states: Descriptor bindings updated by this command which were created without the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT or VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT bits set must not be used by any command that was recorded to a command buffer which is in the pending state (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkUpdateDescriptorSets-None-03047)

  • Huge spam on launch with PCSX ReARMed with frame duping enabled and Mupen64Plus-Next with Angrylion:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-VkWriteDescriptorSet-descriptorType-04150 ] Object 0: handle = 0x91a42100000006c1, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID = 0xf72a82b8 | vkUpdateDescriptorSets() pDescriptorWrites[0] failed write update validation for VkDescriptorSet 0x91a42100000006c1[] with error: Write update to VkDescriptorSet 0x91a42100000006c1[] allocated with VkDescriptorSetLayout 0xc331a400000006bd[] binding #2 failed with error message: Attempted write update to combined image sampler descriptor failed due to: Descriptor update with descriptorType VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER is being updated with invalid imageLayout VK_IMAGE_LAYOUT_UNDEFINED for image VkImage 0xc30e3100000006d1[RetroArch image (462)] in imageView VkImageView 0xeae97200000006d2[]. Allowed layouts are: VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL. The Vulkan spec states: If descriptorType is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER the imageLayout member of each element of pImageInfo must be a member of the list given in Combined Image Sampler (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-VkWriteDescriptorSet-descriptorType-04150)

  • Appearing only once during the spam mentioned above with PCSX ReARMed with frame duping enabled and Mupen64Plus-Next with Angrylion:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-vkDestroyImageView-imageView-01026 ] Object 0: handle = 0x20e61aa23e0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x63ac21f0 | Cannot call vkDestroyImageView on VkImageView 0x51819500000005f5[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to imageView must have completed execution (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyImageView-imageView-01026)

  • Once on launch with ParaLLEl with parallel plugin:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-vkBindBufferMemory-memory-02727 ] Object 0: handle = 0x9c8eeb00000000dc, type = VK_OBJECT_TYPE_BUFFER; Object 1: handle = 0x18ea4a00000000dd, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x8fa29e0d | vkBindBufferMemory(): The VkDeviceMemory (VkDeviceMemory 0x18ea4a00000000dd[]) was created with an import operation with handleType of VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT which is not set in the VkBuffer (VkBuffer 0x9c8eeb00000000dc[]) VkExternalMemoryBufferCreateInfo::handleType (Unhandled VkExternalMemoryHandleTypeFlagBits) The Vulkan spec states: If memory was allocated by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes when buffer was created (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkBindBufferMemory-memory-02727)

  • Once on launch with Dolphin:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ VUID-vkCreateDevice-ppEnabledExtensionNames-01387 ] Object 0: handle = 0x23f85e22e60, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x12537a2c | Missing extension required by the device extension VK_EXT_full_screen_exclusive: VK_KHR_get_surface_capabilities2. The Vulkan spec states: All required device extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames list must also be present in that list (https://vulkan.lunarg.com/doc/view/1.3.236.0/windows/1.3-extensions/vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387)

then this 2 times:

[ERROR] [Vulkan]: Validation Error: Validation Error: [ UNASSIGNED-GeneralParameterError-ExtensionNotEnabled ] Object 0: handle = 0x23f85e22e60, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xe92b452d | Attempted to call vkGetPhysicalDeviceSurfaceCapabilities2KHR() but its required extension VK_KHR_get_surface_capabilities2 has not been enabled

Version/Commit
  • RetroArch: 1.16.0 / 64bcbbc
Environment information
  • OS: Windows 10

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file or test is named. Start by reproducing the listed Vulkan validation errors on RetroArch 1.16.0 at commit 64bcbbc on Windows 10, then trace the affected core and frontend paths around the reported Vulkan calls. Done means the individual validation errors are isolated to their responsible paths and each has a verified resolution.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
computer-graphics
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.