KhronosGroup / Vulkan-ValidationLayers

Vulkan Validation Layers (VVL)
https://vulkan.lunarg.com/doc/sdk/latest/linux/khronos_validation_layer.html
Other
727 stars 396 forks source link

VUID-VkSwapchainCreateInfoKHR-presentMode-01281 #8204

Closed water-chika closed 6 days ago

water-chika commented 1 week ago

Describe the situation in which you encountered the missing validation Issue description: When I try to run an app that will create a swapchain with immediate present mode. But on Wayland, it may does not support immediate present mode. Then it will crash because it will try to access a NULL pointer.

Valid Usage IDs requested Please include the valid usage IDs for the checks you are requesting: VUID-VkSwapchainCreateInfoKHR-presentMode-01281

Additional Context

spencer-lunarg commented 1 week ago

We are already checking for VUID-VkSwapchainCreateInfoKHR-presentMode-01281 but curious what is happening. Will try to run some tests locally with Wayland and VK_PRESENT_MODE_IMMEDIATE_KHR to see if I can reproduce

spencer-lunarg commented 1 week ago

ok, so this is a bug, we have this check, but it was accidentally moved behind a if VK_EXT_swapchain_maintenance1 check, will get some tests in and fix this

spencer-lunarg commented 1 week ago

trying to write tests, just want to point out that Wayland can support VK_PRESENT_MODE_IMMEDIATE_KHR, looking at the mesa source code it is

if (display.tearing_control_manager)
    present_modes[present_modes_count++] = VK_PRESENT_MODE_IMMEDIATE_KHR;

which depends on if your compositor supports https://wayland.app/protocols/tearing-control-v1

spencer-lunarg commented 6 days ago

@water-chika thanks again for raising this

The new layer are being built and can be grabbed from https://github.com/KhronosGroup/Vulkan-ValidationLayers/actions/runs/9713251358 when done

also this will now be fixed in the new SDK release