Commit graph

217026 commits

Author SHA1 Message Date
Rob Clark
63243bcc3e tu: Fix TU_DRAW_STATE_VB size
vi_bindings_valid doesn't necessarily match the # of VBOs emitted,
resulting an invalid size in the CP_SET_DRAW_STATE packet.  Somehow
this didn't seem to cause problems prior to Dxx (although may
potentially have been a source of flakes, depending on what random
cmds followed in memory).  But caused hangs on Dxx.

See, for example, dEQP-VK.pipeline.fast_linked_library.vertex_input.misc.unused_binding

Fixes: 97da0a7734 ("tu: Rewrite to use common Vulkan dynamic state")
Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39254>
2026-01-14 00:06:49 +00:00
Jesse Natalie
7b82b52fd7 nir: Suppress 'potentially uninitialized local pointer variable used' warning
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Mel Henning <mhenning@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39181>
2026-01-13 23:31:28 +00:00
Valentine Burley
71171abadb venus/ci: Switch Alder Lake job to Xe KMD
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
The Android 16 Cuttlefish build comes with a new Xe minigbm backend that
we can use on the host in the android-angle-venus-anv-adl nightly job.
Also update two outdated comments.

Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39297>
2026-01-13 22:48:26 +00:00
Samuel Pitoiset
14deea2633 radv: enable SPM for GFX11.5
This adds support for performance counters with RGP on GFX11.5.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39270>
2026-01-13 22:16:40 +00:00
Samuel Pitoiset
adfb1ddebf ac/perfcounter: use GFX11 definition for GFX11.5
Pretty much everything seems similar.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39270>
2026-01-13 22:16:40 +00:00
Dave Airlie
12bceb228a gallivm: let reduce ops use llvm intrinsics
As part of coopmat, I want to make reductions faster as I need
them to implement coopmat.

The intrinsics can't be used directly as we have to take into
account the exec_mask, but it can be done by picking the
a value to insert into the disabled lanes, then calling
the LLVM intrinsic.

Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39225>
2026-01-13 21:47:55 +00:00
Dave Airlie
1e59dbf66b gallivm: swap 1d array coords before casting.
This fixes a llvm validation error seen in dEQP-VK.robustness.robustness2.push.notemplate.rgba32f.dontunroll.nonvolatile.sampled_image.no_fmt_qual.img.samples_1.1d_array.rgen

Cc: mesa-stable
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39225>
2026-01-13 21:47:55 +00:00
Eric Engestrom
7bbbd9bee2 docs: delay 26.0 branchpoint by a week
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39295>
2026-01-13 21:15:58 +00:00
Yiwei Zhang
c8144ae072 venus: vn_wsi_sync_wait to relax queue access for async present
As mentioned in earlier commit, for sem fd export on async present
thread, it occurs after internal queue submissions for all swapchains.
So we can allow queue commands while sync wait w/o violating ordering.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:14 +00:00
Yiwei Zhang
6b5a4b55fb venus: enable async presentation along with a perf option
Async presentation can be disabled via VN_PERF=no_async_present

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:13 +00:00
Yiwei Zhang
387a49d4f0 venus: vn_wsi_sync_wait to relax chain acquire for async present
For sem fd export on async present thread, it occurs after internal
queue submissions for all swapchains and before presenting to WSI
backend. We can safely unlock the chain acquire lock though we still
have to lock against chain destroy as well as chain async present on
other queues.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:13 +00:00
Yiwei Zhang
8392e82298 venus: implement async present
Brief:
1. present info is deep-copied and passed to async present thread
2. normal queue present always waits for async present to take over
3. queue access is protected by async present queue lock
4. chain access is protected by chain locks
5. no perf gain in practice since we haven't allowed parallel queue
   submit or acquire image yet

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:12 +00:00
Yiwei Zhang
84e2623300 venus: prepare to flush async queue present
This is to ensure external synchronization for queue operations.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:12 +00:00
Yiwei Zhang
f216c109be venus: add a deep copy helper for VkPresentInfoKHR
Below pNext structs are handled:
- VkDeviceGroupPresentInfoKHR
- VkPresentRegionsKHR
- VkPresentIdKHR
- VkPresentId2KHR
- VkSwapchainPresentFenceInfoKHR
- VkSwapchainPresentModeInfoKHR
- VkPresentTimingsInfoEXT

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:11 +00:00
Yiwei Zhang
48680d5505 venus: add back vn_QueuePresentKHR
Prepare to not rely on implicit fencing.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:10 +00:00
Yiwei Zhang
2c63534896 venus: add chain lock helpers for async present
The helpers will protect chain access during async present.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:09 +00:00
Yiwei Zhang
0a2525491d venus: prepare chain access for async present
During async presentation, swapchain is accessed by the async present
thread. With proper queue and chain access locks within venus driver,
we still have to rely on mesa common wsi implementation specifics for
optimal async present performance:

Below need to be protected:
- vkAcquireNextImage2KHR
- vkDestroySwapchainKHR

Below are safe:
- vkGetSwapchainImagesKHR
- vkWaitForPresentKHR
- vkWaitForPresent2KHR
- vkReleaseSwapchainImagesKHR
- VkSwapchainPresentFenceInfoKHR::pFences

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:08 +00:00
Yiwei Zhang
ca18b73669 venus: track swapchains
Will be used internally to ensure synchronized host access of swapchain
object.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:08 +00:00
Yiwei Zhang
fdb2a8f88f venus: add vn_wsi_sync_wait to handle implicit sync workaround
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:07 +00:00
Yiwei Zhang
37b95dc8d6 venus: vn_GetFenceFdKHR no need to block wait
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:07 +00:00
Yiwei Zhang
6b3686f49b venus: refactor to avoid nesting vn_QueueSubmit entrypoint
Prepare to wait for async queue present. This helps avoid redundant WSI
flushes.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:06 +00:00
Yiwei Zhang
391f11671a venus: remove TP in vn_ResetDescriptorPool
This call can be verbose for some workloads.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:06 +00:00
Yiwei Zhang
c8c6ee1dd7 venus: respect VK_SUBOPTIMAL_KHR returned from wsi image acquire
When suboptimal is returned, the fence payload is missed to be installed
unexpectedly. Instead, we can directly return errors from sync import.
With this change, dEQP-VK.wsi.xcb.maintenance1.release_images.* can pass
robustly now.

Fixes: a312bb4285 ("venus: refactor wsi acquire to use semaphore and fence SYNC_FD import")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39283>
2026-01-13 19:47:05 +00:00
John Anthony
50682ec22c pan: Use correct architecture name for v12+
The official name for the architecture after Valhall is 'Arm 5th
Gen'. In code we can use 'FIFTHGEN' or 'fifthgen', while in
documentation and printed output we should use 'Arm 5th Gen' or '5th
Gen'.

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39267>
2026-01-13 13:28:34 +01:00
Boris Brezillon
f9745d59f0 panvk: Fix the deviceID reported by the driver
Report the -rXpY info in the deviceID.

Reviewed-by: John Anthony <john.anthony@arm.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39267>
2026-01-13 13:28:27 +01:00
John Anthony
6dff2220fa panvk: Add shader core count to deviceName
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39267>
2026-01-13 13:28:24 +01:00
John Anthony
945172f77e panfrost: Add shader core count to RENDERER string
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39267>
2026-01-13 13:28:15 +01:00
Lars-Ivar Hesselberg Simonsen
4db7958edc pan/bi: Change texel buffer limits
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Increase texel buffer size limit and lower uniform texel buffer alignment limit.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
a21ee564e2 pan/bi: Make texel buffers use Attribute Buffers
Texel buffers are currently described by a TextureDescriptor, which
leads to restrictive limits on size and alignment. These limits can be
avoided by using AttributeDescriptors + AttributeBufferDescriptors
instead.

This requires us to access texel buffers using attributes rather than
textures, which involves setting up AttributeDescriptors and
AttributeBufferDescriptors in their respective allocations, rather than
the previous TextureDescriptors in the texture allocation.

This is already done for images, so we simply place the texel buffer
attributes after the images and ensure the indexing if offset correctly.

Accessing a texel buffer thus becomes:
1. Get the buffer address and ConversionDescriptor with LEA_ATTR[_IMM]
2. Use LD_CVT to get the value

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
396ad57630 panvk/bi: Add texel buffer branch to meta_desc_copy
Once we move texel buffers to use Attribute Buffers, we'll encode them
as MALI_ATTRIBUTE_TYPE_1D. This means we can store the actual Attribute
Descriptor in what is usually the space for an
ATTRIBUTE_BUFFER_CONTINUATION_3D.

This is good, as we'll need to use the offset functionality of the
Attribute Descriptor to allow lowering
uniformTexelBufferOffsetAlignmentBytes.

This commit therefore creates a path for setting up the Attribute
Descriptor and Attribute Buffer Descriptor for texel buffers in
meta_desc_copy.

Note that this path will not be taken yet, as no images use
MALI_ATTRIBUTE_TYPE_1D.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
51fe0506f8 pan/bi: Add lowering pass for texel buffer indices
As we'll need to pack texel buffer attributes after image attributes in
panfrost and after vertex attributes in panvk, this adds a lowering pass
to achieve that.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
40e2c66824 pan/bi: Add texel buf lowering support for Bifrost
This allows for lowering of texel buffer accesses for Bifrost GPUs. Note
that it is not enabled yet.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
ce3e13774a nir: Add channels to pan texel_buf intrinsics
Rather than loading a single 64bit channel with
load_texel_buf_index_address_pan, load three channels of 32bit each. The
last channel is required by the next commit.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
46b44cf941 glsl/nir: Add texture_buffers to shader info
While analyzing glsl shaders, keep a bitmask of texture buffers. This
information is needed by panfrost.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
cdaf6b5d5e panfrost/bi: Fix potential out-of-bounds writes
panfrost_emit_image_attribs is only called when the context's image
state is dirtied and uses the context's image_mask to write attributes
and attribute buffers.

However, it uses the shader's attribute_count (which in this context is
the last bit of the shader's images_used) to calculate the size of the
buffers.

In case more images are bound than the currently bound shader uses, this
would lead to out-of-bounds writes.

This change updates the allocation to use the last bit in the context's
image_mask for size calculations.

It also removes an unused parameter from emit_image_bufs and updates a
parameter name in emit_image_attribs to be more descriptive and match
the documentation.

Fixes: dc85f65e05 ("panfrost: emit shader image attribute descriptors")
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Lars-Ivar Hesselberg Simonsen
f55606dd6c pan/v9+: Remove unnecessary nir_u2u32 from load_tex_size
nir_u2u32 is presumably a leftover from when the texture size was loaded
from a 16 bit field, but should no longer be necessary now that we're
loading 32 bits

Also renames the "bytes" variable to "size" to align with the descriptor
we're reading.

Fixes: 4573110e4e ("pan/v9+: Make texel buffers use BufferDescriptor")
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38490>
2026-01-13 10:00:58 +01:00
Konstantin Seurer
58a35647e1 radv: Fix crash if proceed comes before initialize
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
"initialize" can be NULL if the rq_proceed was visited before
rq_initialize.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14626
cc: mesa-stable

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39251>
2026-01-12 22:34:32 +00:00
Natalie Vock
473cf6046a aco/spill_preserved: Preserve linear VGPRs even if they aren't p_spill operands
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Natalie Vock
1ef2691221 aco/spill: Fix preserved reload operand update
p_logical_end is actually after p_reload_preserved, so this didn't do
anything.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Natalie Vock
548062f10e aco/insert_waitcnt: Don't determine linearity by reg number
VGPRs can be linear too, and RT function calls will add VMEM
instructions acting on linear VGPRs. Using the linear VGPR in a block
with only linear preds will cause the pass to incorrectly skip inserting
s_waitcnt.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Natalie Vock
7c12603933 aco/lower_to_hw_instr: Preserve linearity of lowered linear VGPRs
So subsequent passes like waitcnt insertion can know these are linear.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Natalie Vock
0d93e8ce54 aco: Don't insert p_reload_preserved in loops
This can't work.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Natalie Vock
c816f699b2 aco/spill_preserved: Only reload linear VGPRs at end
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Natalie Vock
897c95c37e aco: Include arbitrarily fixed registers in max_reg_demand
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39157>
2026-01-12 21:46:50 +00:00
Pohsiang (John) Hsu
2eb3b397bf mediafoundation: rename VideoEncodeReconstructedPicture to VideoEncodeD3D12ReconstructedPicture
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Reviewed-by: Yubo Xie <yuboxie@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39273>
2026-01-12 21:31:12 +00:00
Pohsiang (John) Hsu
5a476e232c mediafoundation: add logging
Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39273>
2026-01-12 21:31:12 +00:00
Pohsiang (John) Hsu
a84f93be0c d3d12: add missing updating of pMetadata
Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39273>
2026-01-12 21:31:11 +00:00
Ian Romanick
884cf1d39e mesa: Fix segfaults in _mesa_delete_program and _mesa_reference_program_
`_mesa_delete_program` and `_mesa_reference_program_` both use fields
in `sh` without determining whether `sh` or `arb` is valid. Herein
lies the problem. I cannot see any reliable way to determine which is
valid without knowing what call path you are in.

There are two possible methods, but neither seems particularly
reliable. We could check whether `shader_program` is `NULL`, or we
could check whether `Parameters` (only used for ARB assembly shaders)
is `NULL`.

Instead of doing that, I chose to add a new field that captures the
`is_arb_asm` parameter already passed to `_mesa_init_gl_program`. This
seemed the most reliable. It is possible that more
`assert(!prog->is_arb_asm)` and `assert(prog->is_arb_asm)` should be
sprinkled throughout the code base.

I don't know how this has not already been a problem. Starting with
492a176cbb ("util: increase SHA1_DIGEST_LENGTH to 32
(BLAKE3_KEY_LEN)"), I observed segfaults in
`_mesa_uniform_detach_all_driver_storage` while freeing ARB assembly
shaders. Those shaders should never hit this path.

Not all assembly shaders hit this path. In fact, **nothing** in the
open shader-db encounters this problem. This is presumably why
pre-merge CI didn't catch this problem. In my closed shader-db,
shaders from the following applications hit this:

 - rocketbirds-hardboiled-chicken
 - shadowrun-returns
 - windward
 - ziggurat

I believe it was just blind luck that most of the time the fields of
`sh::data` that were access through this path, `sh::BindlessSamplers`,
and `sh::BindlessImages` happened to line up with fields of `arb` that
contained `NULL`. Changing the size of the hash key changed that luck.

Fixes: ca16c271fa ("mesa: make struct in gl_program a union and remove FIXME")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39243>
2026-01-12 20:47:07 +00:00
Lionel Landwerlin
0a3f3fd193 brw: drop unused color_outputs_valid key
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39264>
2026-01-12 20:21:48 +00:00
Lionel Landwerlin
c3bd1a1688 brw: handle layer_id only through system value
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39259>
2026-01-12 19:53:36 +00:00