Commit graph

965 commits

Author SHA1 Message Date
Natalie Vock
e713527aa9 vulkan: Bump MAX_ENCODE_PASSES
RADV needs one more encode pass for a bugfix in the next commit.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39985>
2026-03-28 16:12:09 +01:00
Natalie Vock
6f80027447 vulkan: Rename {encode,update}_bind_pipeline to {encode,update}_prepare
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39985>
2026-03-28 16:12:09 +01:00
Julia Zhang
32d04bcdcd vulkan: return pQueue with matching flags
Searching device->queues only according to queueIndex and queueFamilyIndex
could cause this issue: if there are two queues A and B created with same
queueIndex and queueFamilyIndex but different flags. When user try to get
B but vk_foreach_queue loop return A when it get A and find it have the
request queueIndex and queueFamilyIndex.

So this add a check of queue flags and return the queue with matching
flags, queueIndex and queueFamilyIndex.

Signed-off-by: Julia Zhang <Julia.Zhang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40669>
2026-03-27 17:08:01 +00:00
Trigger Huang
007cfd138d vulkan/queue: pass protected submit info to driver
Pass application's protected submission info to driver

Signed-off-by: Trigger Huang <Trigger.Huang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40669>
2026-03-27 17:08:01 +00:00
Michael Cheng
7d787ba8c6 vulkan/runtime: allow drivers to enable vk_log output in release builds
In non-debug builds, __vk_log_impl() silently drops all messages due to
two compile/link-time gates: an early return when no debug callbacks are
registered, and the MESA_VK_LOG=0 guard around the mesa_log*() calls.

Add vk_instance::enable_debug_logging so drivers can opt in to log
output at runtime. When set, both gates are bypassed.

No functional change without a driver setting the flag.

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/40551>
2026-03-24 21:42:33 +00:00
Lionel Landwerlin
2160e751e3 vulkan/runtime: fix incorrect entrypoint call for CmdCopyImageToBuffer2
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: a8e49be9d9 ("vulkan/runtime: add implementation of older entrypoints using KHR_DAC")
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40587>
2026-03-24 17:47:01 +00:00
Lionel Landwerlin
1cbb8c82b7 vulkan/runtime: fix missing copy image layout
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: a8e49be9d9 ("vulkan/runtime: add implementation of older entrypoints using KHR_DAC")
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40587>
2026-03-24 17:47:01 +00:00
Yiwei Zhang
8351c6070d vulkan/anv: use vk_device_get_timestamp and drop vk_clock_gettime
vk_clock_gettime hasn't been used by other implementations ever since
venus and kk migrated over to the common implementation. It'd be better
to drop that helper (or move into anv) because it's not OS agnostic as
compare to the more comprehensive vk_device_get_timestamp.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40582>
2026-03-24 04:08:39 +00:00
anonymix007
8982056fa8 vulkan/runtime: Implement VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
This change adds win32 VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR
support to vk_device_get_timestamp. Meanwhile, vk_clock_gettime is left
untouched preparing for deprecation (anv is the only user). The latter
also only has the host clock part and doesn't handle error cases in a
robust manner.

v2 (zzyiwei):
- vk_device_get_timestamp updates
- use DETECT_OS_WINDOWS
- add commit messages

Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40582>
2026-03-24 04:08:39 +00:00
Samuel Pitoiset
0658e5e141 vulkan: fix memory leak in vkQueueBeginDebugUtilsLabelEXT()
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Caught by ASAN with VKCTS.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40572>
2026-03-23 22:41:49 +00:00
Marek Olšák
fa5175023b Final rename of sha1 names to blake3
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:28 +00:00
Marek Olšák
ae9ea27e0d Rename *_sha1 names to *_blake3
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:28 +00:00
Marek Olšák
353fe94c0e Rename SHA1 words to BLAKE3
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:28 +00:00
Marek Olšák
102d41799b Rename more sha and sha1 names to blake3
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:28 +00:00
Marek Olšák
d4831aaf5f Rename sha1_* and sha_* names to blake3_*
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:28 +00:00
Marek Olšák
c0ac992a2a Remove mesa-sha1.h
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:27 +00:00
Marek Olšák
53c64973e8 Inline _mesa_sha1_compute/format, remove the other unused ones
_mesa_sha1_format has a few remaining uses, so it's moved to build_id.c,
which is its last user.

Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:27 +00:00
Marek Olšák
699f9d7066 Inline _mesa_sha1_init/update/final functions
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:27 +00:00
Marek Olšák
a965ada6ee Inline mesa_sha1, SHA1_CTX
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:27 +00:00
Marek Olšák
110632f702 Inline SHA1_DIGEST_LENGTH
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40383>
2026-03-23 07:03:27 +00:00
Samuel Pitoiset
59883a5cb6 vulkan: stop passing vk_device to vk_set_subgroup_size()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40481>
2026-03-19 19:23:54 +00:00
Lionel Landwerlin
173a4c6170 vulkan/runtime: break view mask from renderpass information
The runtime builds a final pipeline state with pointers to structures
coming from the associated pipelines libraries.

So far it has considered that the viewMask was part of a structure
together with the rest of the renderpass information. This information
can be specified in pre-raster, fragment & color-output state groups
and it was assumed would be consistent for all 3. And the runtime
currently takes the pointer to the structure from the last pipeline
library (color output).

Some coming spec/cts will clarify that the viewMask only needs to be
specified for pre-raster & fragment groups, making the value in the
color-output group untrustworthy.

This change creates a new state structure to hold the viewMask on its
own so it is only gather on pre-raster & fragment groups.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> (radv)
Reviewed-by: Aitor Camacho <aitor@lunarg.com> (kosmickrisp)
Reviewed-by: Connor Abbott <cwabbott0@gmail.com> (turnip)
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> (v3dv)
Reviewed-by: Frank Binns <frank.binns@imgtec.com> (powervr)
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com> (panvk)
Royaled-yes-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> (lavapipe)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39940>
2026-03-17 20:13:35 +00:00
Erik Faye-Lund
e32f7ac381 vulkan: use common ycbcr code
There's a few things going on here:

1. Vulkan makes the YCbCr model and YCbCr range completely orthogonal.
   This means that we need to be able to handle an identity transform
   while still doing range-remapping, so we apply the range mapping and
   color-transform separately, and let the optimizer clean things up.
   This is similar to what we did before, but it means it's a bit harder
   to get completely optimal code out of this.

2. Vulkan defines that the YCbCr inputs come in a bit of an unusual
   order; Cr, Y, Cb. This means we need to reorder things a bit when
   applying the YCbCr range and multiplying the YCbCr color-model
   matrix. This makes the code a little bit confusing to read at times.

3. Because the alpha-channel is passed through this function, we need to
   expand the matrix to 4x3. This is similar to what we've already been
   doing, but also a bit unusual. In the future, we might want to keep
   the alpha-channel out of this code-path, and just work on a vec3
   here.

I suspect that all of these can be solved by rearranging the code a bit.
But I've left that as an excercize for later to make sure we get this
right first, with as few modifications as possible. Some people might
disagree with this approach, but let's see.

Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40175>
2026-03-17 15:00:54 +00:00
Yiwei Zhang
bd916d9de9 vulkan/android: add new helpers for aliased ANB support (spec v8+)
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40384>
2026-03-16 21:09:42 +00:00
Samuel Pitoiset
d6fe5ee8a6 vulkan: do not pass vk_instance for debug report messages
RADV wants to abstract the compiler from any instance/device/pdev
objects.

The previous NULL check for instance seems to be useless.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40379>
2026-03-16 11:55:45 +00:00
Lionel Landwerlin
a8e49be9d9 vulkan/runtime: add implementation of older entrypoints using KHR_DAC
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
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
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
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
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
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
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
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
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
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
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