Commit graph

2488 commits

Author SHA1 Message Date
Lionel Landwerlin
b7bf4e5304 vulkan/runtime: build (address|copy)_flags for vk_buffer
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40431>
2026-03-16 11:30:46 +00:00
Lionel Landwerlin
ba2e3b1d10 vulkan/runtime: add new helper for vertex strides
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40431>
2026-03-16 11:30:46 +00:00
Faith Ekstrand
3abdee9ec7 vulkan/render_pass: Always use separate depth/stencil layouts
There are no Vulkan drivers in Mesa that don't support this feature and
it's a hard requirement for Vulkan 1.2 so there's no reason why we
shouldn't also require it for the runtime render pass code.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40154>
2026-03-16 09:16:09 +00:00
Samuel Pitoiset
7c12efb370 vulkan: add helpers for depth/stencil only layouts
Original patch from Faith Ekstrand.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40154>
2026-03-16 09:16:06 +00:00
Samuel Pitoiset
770a94e126 vulkan: add vk_image_memory_copy_layout()
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40385>
2026-03-16 08:44:08 +00:00
Samuel Pitoiset
045c1fff7d vulkan: add helpers for device address range
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40385>
2026-03-16 08:44:08 +00:00
Samuel Pitoiset
217dc750e7 vulkan: add support for vkCreateAccelerationStructure2KHR()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40385>
2026-03-16 08:44:08 +00:00
Samuel Pitoiset
730054ca47 vulkan: use vk_object_zalloc() for acceleration structs
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40385>
2026-03-16 08:44:08 +00:00
Samuel Pitoiset
e5bb3edad8 vulkan: update spec to 1.4.346
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40385>
2026-03-16 08:44:08 +00:00
Samuel Pitoiset
6d0fc30e7a vulkan: adjust MESA_VK_PIPELINE_RAY_TRACING_FLAGS with beta extensions disabled
This prevent a build failure in the next commit.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40385>
2026-03-16 08:44:07 +00:00
Francois Coulombe
4112eb2b0f vulkan/wsi/headless: add sRGB swapchain format support
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Headless surfaces when queried return that they only support RGBA UNORM
and BGRA UNORM. Adding those lines enables RGBA SRGB and BGRA SRGB
support to headless surfaces.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40275>
2026-03-15 23:15:15 +00:00
Ian Douglas Scott
6641c891fd wsi/wayland: Use wl_fixes to destroy wl_registry
cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29140>
2026-03-12 16:24:33 +00:00
Mike Blumenkrantz
72bf7ad701 vk/cmd_queue: generate CmdPushConstants2
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:18 +00:00
Mike Blumenkrantz
47e78e60e3 vk/cmd_queue: generate the rest of the descriptor functions
this special cases the pData for template updating since it's a weird
one-off case where all the data needs to be copied

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:18 +00:00
Mike Blumenkrantz
c35499e99d vk/cmd_queue: move pipeline layout refs into builder
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:18 +00:00
Mike Blumenkrantz
dbbd5360f0 vk/cmd_queue: generate CmdPushDescriptorSet
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:17 +00:00
Mike Blumenkrantz
5f8b244ce6 vk/cmd_queue: generate CmdBindDescriptorSets
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:17 +00:00
Mike Blumenkrantz
f10f9d45bc vk/cmd_queue: pass command to struct copying methods
no functional changes

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:16 +00:00
Mike Blumenkrantz
9f272af038 vk/cmd_queue: return cmd instead of error code
the error code is always the same, and this is a bit more logical

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:15 +00:00
Mike Blumenkrantz
e3be0e23f9 vk/cmd_queue: handle descriptor layout refcounting
this enables supporting pnexted VkPipelineLayoutCreateInfo from vkCmdPushDescriptorSetWithTemplate2

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:15 +00:00
Mike Blumenkrantz
0c22630ba2 vk/cmd_queue: use arrays to directly manage refcounting
this allows deleting driver_free_cb and elimination of another iteration
of each cmdbuf on reset/free

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40268>
2026-03-10 21:49:14 +00:00
Mary Guillemard
8f2eeee7ba vulkan: Do not override the shader_flags in case of no task shader
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This should be doing a or and not an assign.
This fixes issues on NVK with mesh stages on DGC.

Signed-off-by: Mary Guillemard <mary@mary.zone>
Fixes: 9308e8d90d ("vulkan: Add generic graphics and compute VkPipeline implementations")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40266>
2026-03-10 20:03:56 +00:00
Connor Abbott
c7497ceed3 vulkan: Store a few more fields in vk_sampler
These will be used for subsampled images, which use immutable samplers.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39868>
2026-03-06 21:26:41 +00:00
Lucas Fryzek
4933e60bc2 vulkan/wsi: Check that xshm can be attached
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Cc: mesa-stable
Co-authored-by: Carlos Lopez <clopez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35284>
2026-03-06 01:18:53 +00:00
Konstantin Seurer
d363381d18 vulkan/cmd_queue: Don't explicitly set struct members to NULL
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
They are already initialized by the memcpy above.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39902>
2026-03-03 10:19:31 +00:00
Konstantin Seurer
f2bb6103c3 vulkan/cmd_queue: Rework copy codegen
The new code handles pNext chanis correctly.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39902>
2026-03-03 10:19:31 +00:00
osy
5f8a9f0aeb vulkan: external sync for vk_sync_binary
Venus uses vkImportSemaphoreFdKHR() with FD == -1 to signal a binary
semaphore and vkGetSemaphoreFdKHR() to wait on a binary semaphore.

Both KK and Dzn uses vk_sync_binary so supporting this special case for
import/export sync file will enable Venus host support.

Reviewed-by: Aitor Camacho <aitor@lunarg.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39067>
2026-02-24 14:23:05 +00:00
Georg Lehmann
d870d10ad9 vulkan,spirv: update headers
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40003>
2026-02-24 08:55:52 +00:00
Yiwei Zhang
715e4d1833 vulkan/wsi/drm: force prime buffer blit for WSI_DEBUG_BUFFER
This change updates wsi_drm_image_needs_buffer_blit to respect
WSI_DEBUG_BUFFER to force buffer blit similar to the cpu path. This has
been found pretty handy for debugging wsi backend related issues.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39947>
2026-02-20 05:26:57 +00:00
Samuel Pitoiset
090b67a163 vulkan/runtime: add support for ETC2 emulation with copy_memory_indirect
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39908>
2026-02-18 07:04:43 +00:00
Samuel Pitoiset
b6f292e146 vulkan/runtime: add a separate function to build ETC2 decode core shader
This will allow us to re-use it for indirect.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39908>
2026-02-18 07:04:43 +00:00
Daniel Stone
b8eb0f88d3 vulkan/wsi/wayland: Correctly map 24bpp format types
VK_FORMAT_{R8G8B8,B8G8R8}_{UNORM,SRGB} describe a 3-component, 8bpc,
24bpp, format. This is mapped to that type for Android, and implemented
as such by panvk. radv maps these to 4-component/32bpp formats, but only
support these formats for buffers rather than images. The outlier is
ANV, which relies on the 24->32bpp mapping to happen.

The Wayland WSI was mapping this to the 32bpp R8G8B8A8/B8G8R8A8 formats
instead. This would cause a failure to import the dmabuf into the
compositor on panvk, as it would send a buffer which was too small. (Or,
if it did import: garbage.)

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39552>
2026-02-17 19:25:19 +00:00
Konstantin Seurer
9a82e4ba81 vulkan/cmd_queue: Do not zero initialize vk_cmd_queue_entry
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Most of the struct will be initialized already. Make sure to initialize
everything so linear_alloc_child can be used.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39881>
2026-02-14 20:11:40 +00:00
Konstantin Seurer
be5ab80de1 vulkan/cmd_queue: Fixup stride for multi draws
Copying the draw infos packs them so the stride needs to be set to the
struct size.

cc: mesa-stable

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39881>
2026-02-14 20:11:40 +00:00
Konstantin Seurer
bf61736aa5 vulkan/cmd_queue: Remove get_array_member_copy
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39881>
2026-02-14 20:11:40 +00:00
Konstantin Seurer
d2ea8b3d14 vulkan: Remove vk_cmd_queue_entry::driver_data
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39881>
2026-02-14 20:11:39 +00:00
Konstantin Seurer
6dce207497 vulkan/cmd_queue: Use a linear allocator
This simplifies memory management a lot and should improve performance.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39859>
2026-02-13 10:29:42 +00:00
Dylan Baker
7f469f1963 vulkan/runtime: Tie vulkan log printing to debug option rather than buildtype
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This allows users of -Dbuildtype=debugoptimized, or who just set
-Ddebug=true, to get error messages. This is especially important for us
in the Intel CI, where we want these messages, but we also need to the
performance benefits of optimization.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39863>
2026-02-12 23:29:29 +00:00
Aitor Camacho
e6f118f12b wsi/metal: Expose additional color spaces if instance extension enabled
Caught through VVL test NegativeWsi.SwapchainImageFormatList. The test
would try to create a swapchain with a color space from
VK_EXT_swapchain_colorspace without enabling the extension. This is
because wsi would expose those color spaces even when the extension was
not enabled.

Fixes: fd045ac99c ("wsi/metal: add support for color spaces")

Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Signed-off-by: Aitor Camacho <aitor@lunarg.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39797>
2026-02-12 19:24:45 +00:00
Yuxuan Shui
8deba07452 vulkan/wsi/x11: Make sure error is returned if create_swapchain fails
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
After successful initialization of images, `result` is `VK_SUCCESS`. But
there are still a few failure paths, in which cases
x11_surface_create_swapchain will return `VK_SUCCESS` but not actually
allocate a swapchain.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37800>
2026-02-05 19:15:19 +00:00
Michel Dänzer
55d0fb12cd vulkan/wsi/x11: Don't use modifiers when ignoring SUBOPTIMAL
Without SUBOPTIMAL, we'd generally end up picking a modifier which isn't
scanout capable, so direct scanout wasn't possible.

This allows direct scanout to work e.g. in Talos Principle.

v2:
* Also bail from wsi_x11_swapchain_query_dri3_modifiers_changed.
  (Hans-Kristian Arntzen)
* Use use_modifiers helper function.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39679>
2026-02-05 08:11:42 +00:00
Michel Dänzer
431aabe79a vulkan/wsi/x11: Guard XCB_PRESENT_OPTION_SUBOPTIMAL by ignore_suboptimal
When ignore_suboptimal is true, we'll ignore
XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY anyway, so no point asking for
it.

Suggested by Hans-Kristian Arntzen.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39679>
2026-02-05 08:11:42 +00:00
Konstantin Seurer
60c1e4e3e6 vulkan: Make sure no NaNs end up in the BVH
Fixes: 2032268 ("vulkan: Avoid NAN in the IR BVH")
Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39640>
2026-02-03 20:00:15 +00:00
Alyssa Rosenzweig
0718a2e74c util: allow string shader "statistics"
This is useful for Intel reporting scheduling strategy.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39633>
2026-02-02 23:30:24 +00:00
Mauro Rossi
1e2cbd2c29 vulkan/runtime: Fix gnu-empty-initializer error in vk_pipeline.c
Fixes the following building error happening with clang:

FAILED: src/vulkan/runtime/libvulkan_runtime.a.p/vk_pipeline.c.o
...
../src/vulkan/runtime/vk_pipeline.c:3689:41: error: use of GNU empty initializer extension [-Werror,-Wgnu-empty-initializer]
         struct vk_shader *shaders[3] = {};
                                        ^
1 error generated.

Fixes: 51966cc4 ("vulkan: add vk_shader_ops::replay_at vfunc stub")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39642>
2026-02-02 13:10:57 +01:00
Konstantin Seurer
529c83a134 vulkan: Limit the number of LBVH invocations
Fixes: 0817551 ("vulkan: Handle inactive primitives with LBVH builds")
Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39569>
2026-01-30 18:16:21 +00:00
Osama Abdelkader
0423488955 vulkan/wsi: Fix realloc error handling in wsi_get_modifiers_for_format
Replace assert() with proper error checking for realloc() failure.
If realloc fails, free any existing modifiers, clean up resources,
and return NULL instead of potentially crashing or leaking memory.

Fixes a potential memory leak when memory allocation fails.

Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39215>
2026-01-29 23:15:37 +00:00
Mel Henning
94fdc54f07 vulkan/wsi: Call wl_display_roundtrip on our queue
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Fixes: a8272bf0f1 ("vulkan/wsi/wayland: use roundtrip instead of flush on swapchain free")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14746
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39598>
2026-01-29 10:10:58 +00:00
Michael Cheng
51966cc452 vulkan: add vk_shader_ops::replay_at vfunc stub
Add a new vfunction to support shader capture/replay, needed for RT
pipeline capture/replay.

Signed-off-by: Michael Cheng <michael.cheng@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33022>
2026-01-29 08:46:50 +00:00
Lionel Landwerlin
5758f3f5ea vulkan/pipeline: don't consider capture-replay flag for shader hashing
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Michael Cheng <michael.cheng@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33022>
2026-01-29 08:46:49 +00:00