Commit graph

209217 commits

Author SHA1 Message Date
Maíra Canal
a06e1e81e0 broadcom/ci: remove synchronization-related flakes and skips
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
After commit "vulkan: don't destroy vk_sync_timeline if a point is
still pending", dEQP-VK.synchronization*.timeline_semaphore.* is
no longer hurting other tests.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35921>
2025-07-24 18:49:12 -03:00
Maíra Canal
ab3aaad957 vulkan: don't destroy vk_sync_timeline if a point is still pending
Currently, vk_sync_timeline_wait() may report idle while we still have
time points outstanding in vk_queue. This race between vk_sync_timeline
and vk_queue is problematic as vk_queue_submit_cleanup() can end-up
trying to unref a timeline point that was already destroyed in
vk_sync_timeline_finish(), leading to an use-after-free.

Address this race-condition by introducing a reference counter to the
timeline. Each timeline point takes a reference to the timeline when
it's checked out and drops the reference when it's freed. Now, the
timeline is only destroyed when all the references had been dropped.

To guarantee that all references will be dropped and the timeline will
be destroyed, vk_sync_timeline_finish() waits for all pending points
to be checked out.

This commit fixes several Mesa CI flakes in v3dv related to timeline
semaphores.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12648
Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35921>
2025-07-24 18:49:02 -03:00
Faith Ekstrand
088a979e79 vulkan: Hold a reference to pending vk_sync_timeline_points
Previously, we had a sort of double reference count with refcount being
used to track how many waits were holding a reference and pending being
used to track whether or not it was in the pending list. This meant
that the unref operation actually had to look at both refcount and
pending in order to determine if it could free the time point. This is
way too confusing. Instead, we should just always take a reference
while we're pending.

This also simplifies the over-all interface because there's no longer a
difference between free and release. `struct vk_sync_timeline_point` is
now just a reference-counted API.

Reviewed-by: Maíra Canal <mcanal@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35921>
2025-07-24 18:49:02 -03:00
Faith Ekstrand
54eb41588c vulkan: Rename a bunch of vk_sync_timeline helpers
Whenever we assume the timeline state is locked, we use _locked, pass in
the timeline state explicitly, and rename it so it's clearly an action
which the timeline does on the point.  This makes it far more clear who
owns a reference to what and where.

Reviewed-by: Maíra Canal <mcanal@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35921>
2025-07-24 18:49:02 -03:00
Maíra Canal
d73b9a7229 vulkan: create a wrapper struct for vk_sync_timeline
The lifetime of `struct vk_sync_timeline` is tied to the lifetime of
`vk_fence` or `vk_semaphore` objects. To better manage this lifecycle,
create a wrapper struct `vk_sync_timeline_state` that contains the
timeline state and is dynamically allocated when the timeline is
initialized. This separation allows the timeline state to persist
independently of the sync object lifecycle.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35921>
2025-07-24 18:48:19 -03:00
Gurchetan Singh
2f5e37f72e mesa: define peripheral support for src/util/rust
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This creates a concept of "peripheral" for Rust crates housed in
Mesa, and "unofficially" uploaded to crates.io by subcommunities
of Mesa.  This is modeled on LLVM's peripheral versus core
support concept:

https://llvm.org/docs/SupportPolicy.html

This allows use of the mesa3d_util crate without vendoring it.
This is a desire of the crosvm maintainers (crrev.com/c/6594760).

This also formally defines CODEOWNERS to be the projected uploaders
of the mesa3d_util crate.  Everyone of course is encouraged to make
changes, but that just gives us a heads-up to update the downstream
imports of mesa3d_util.

The Cargo.toml file is not added here, since Meson is the only
officially supported build system of the Mesa3D project.

Reviewed-by: Marcin Radomski <dextero@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36276>
2025-07-24 20:51:36 +00:00
Gurchetan Singh
8d899622b6 gfxstream: correct Android API level check
The header says:

enum ADataSpace AHardwareBuffer_getDataSpace(const AHardwareBuffer* _Nonnull buffer)
        __INTRODUCED_IN(__ANDROID_API_V__);

which is API level 35.

Reviewed-by: Jason Macnak <jmacnak@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36338>
2025-07-24 20:30:45 +00:00
Guilherme Gallo
c25b14fa23 ci/bare-metal: Fix exit code variable
`bm-init.sh` executes `init-stage1.sh` and then an `export`, but the
latter command overwrite the exit code `$?`, so we need to put the first
exit code into a variable.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36356>
2025-07-24 19:35:25 +00:00
Yiwei Zhang
549f6cdb17 lavapipe: fix maint4 vkGetDeviceImageMemoryRequirements
Otherwise plane aspect and dedicated alloc req are missed.

Fixes: 987e8a5a0c ("lavapipe: implement vkGetDevice*MemoryRequirements")
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36335>
2025-07-24 19:19:31 +00:00
Yiwei Zhang
e309f1ad45 lavapipe: fix maint4 vkGetDeviceBufferMemoryRequirements
Otherwise dedicated alloc req is missed.

Fixes: 987e8a5a0c ("lavapipe: implement vkGetDevice*MemoryRequirements")
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36335>
2025-07-24 19:19:31 +00:00
Yiwei Zhang
16e3293c31 lavapipe: fix a leak on a lvp_image_create exit path
This traces back to c688f8f8c5, but the
shape of the fix would be different if against that. So we do the
optimal for the current code flow and only port to stable.

Cc: mesa-stable
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36335>
2025-07-24 19:19:31 +00:00
Yiwei Zhang
eca43eb02e lavapipe: improve image memory binding
Add lvp_image_bind helper so that bind status is robustly handled
outside the core bind, which simplifies the exit paths. Meanwhile, the
spec doesn't require to proceed binding of image internal planes if a
prior plane binding has failed. So this change further simplifies the
non-disjoint image binding result handling.

Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36335>
2025-07-24 19:19:31 +00:00
Yiwei Zhang
74f53a9293 lavapipe: ensure to use zero memoryOffset for wsi image alias binding
Per spec of VkBindImageMemorySwapchainInfoKHR:

> If swapchain is not NULL, the swapchain and imageIndex are used to
  determine the memory that the image is bound to, instead of memory and
  memoryOffset.

Meanwhile, common wsi is doing dedicated allocation for swapchain image
memory, so it's required to use zero memoryOffset by the spec. Then here
we can safely set to zero memoryOffset before passing to the actual
binding call.

In practice, when the struct is initialized with proper sType and memory
being VK_NULL_HANDLE, the memoryOffset is most likely left being zero
initialized. Not a critical must fix but still a bug.

Fixes: ace49d9e52 ("lavapipe: adopt wsi_common_get_memory")
Reviewed-by: Lucas Fryzek <lfryzek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36335>
2025-07-24 19:19:30 +00:00
Marek Olšák
d9cb26fdf9 nir: handle store_buffer_amd in nir_intrinsic_writes_external_memory
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:38 +00:00
Marek Olšák
a15c1e1896 nir: silence a warning in nir_opt_shrink_vectors
gcc assumes the array is a string, so it treats it as having 15 elements
instead of 16.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:38 +00:00
Marek Olšák
b35e8a38e7 nir/opt_move_to_top: check can_reorder & can_speculate
No effect now, but may be needed in the future.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:38 +00:00
Marek Olšák
6a85761c4c nir/divergence_analysis: simplify nir_vertex_divergence_analysis
by reusing nir_divergence_analysis_impl.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:38 +00:00
Marek Olšák
09e607c385 nir: add access to load_smem_amd (for ACCESS_CAN_SPECULATE)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:38 +00:00
Marek Olšák
688a639117 nir: add nir_tex_instr::can_speculate
Set to true everywhere except:
- spirv_to_nir used by Vulkan
- bindless handles in GLSL
- some internal shaders and driver-specific code

Acked-by: Job Noorman <job@noorman.info>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:38 +00:00
Marek Olšák
b4afe848a1 nir: add nir_instr_can_speculate helper (for LICM)
Acked-by: Job Noorman <job@noorman.info>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36099>
2025-07-24 18:41:37 +00:00
Mary Guillemard
800a861431 pan/bi: Fuse FCMP/ICMP on Valhall
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
We have a lot of pattern like this on Valhall:

FCMP_OR.f32.lt.m1 r28, ^r28, r27, 0x0
FCMP_OR.f32.lt.m1 r29, r27, r25, 0x0
LSHIFT_AND.i32 r28, ^r28, 0x0.b00, ^r29

That can be simplified into:

FCMP_OR.f32.lt.m1 r29, r27, r25, 0x0
FCMP_AND.f32.lt.m1 r28, ^r28, r27, ^r29

This pass merge those specific cases while setting the appropriate
logical variant of the CMP instruction.

We do not try to merge the srcs that do not originate from a matching CMP
instruction with matching result type as the logical operation is
performed before the result type transformation.

Now this is enough to optimise a lot of common cases anyway so it is
still a win.

Results on fossils/sascha-willems:

Totals:
Instrs: 42157 -> 42059 (-0.23%)
CodeSize: 582784 -> 581760 (-0.18%)
Estimated normalized SFU cycles: 159.9375 -> 153.75 (-3.87%)

Totals from 13 (2.07% of 627) affected shaders:
Instrs: 3490 -> 3392 (-2.81%)
CodeSize: 29696 -> 28672 (-3.45%)
Estimated normalized SFU cycles: 15.8125 -> 9.625 (-39.13%)

Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Reviewed-by: Olivia Lee <olivia.lee@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36327>
2025-07-24 18:23:07 +00:00
Paolo Bonzini
2e4a8e98bd docs: document naming convention for Rust subprojects
Place the convention so that distro packagers know that they can
rely on it, and not following it is a bug.

This is the same convention that Meson uses for Cargo subprojects,
but Mesa is not using them as they are experimental and not really
usable yet.

Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36284>
2025-07-24 17:52:34 +00:00
Paolo Bonzini
8ea232a9ae meson: rename Rust subprojects to NAME-SEMVER-rs
Use the convention for Rust subprojects that was adopted by Meson 1.5.0
and newer.

Distros would prefer to avoid vendored crate sources, and instead use
local sources from e.g. /usr/share/cargo/registry.  While Meson does not
support a local registry, it can be emulated with MESON_PACKAGE_CACHE_DIR.

However, because the distro might not be using the exact version of the
package, but only one that has the same semver, packagers need to add
some hacks to rewrite the wrap files.  For example, in Fedora:

    export MESON_PACKAGE_CACHE_DIR="%{cargo_registry}/"
    # So... Meson can't actually find them without tweaks
    %define inst_crate_nameversion() %(basename %{cargo_registry}/%{1}-*)
    %define rewrite_wrap_file() sed -e "/source.*/d" -e "s/%{1}-.*/%{inst_crate_nameversion %{1}}/" -i subprojects/%{1}.wrap
    %rewrite_wrap_file proc-macro2
    %rewrite_wrap_file quote
    %rewrite_wrap_file syn
    %rewrite_wrap_file unicode-ident
    %rewrite_wrap_file paste

Having a common convention for the name of Rust wraps makes it possible
to perform this transformation with a script without listing
the wraps one by one, and to share the script across multiple packages
(which will be useful when QEMU starts using Rust in a similar way to Mesa).

For an example of such a script, see
https://lore.kernel.org/r/20250722083507.678542-1-pbonzini@redhat.com/.

Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36284>
2025-07-24 17:52:34 +00:00
Georg Lehmann
2fb53f01f1 lima: replace NIR_PASS_V with NIR_PASS(_, ...)
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36308>
2025-07-24 17:19:56 +00:00
Georg Lehmann
a076d3f3ac lima: fix metadata in lima_nir_split_loads
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36308>
2025-07-24 17:19:56 +00:00
Georg Lehmann
b8d48ffcac lima: rework lima_nir_duplicate_load_consts
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36308>
2025-07-24 17:19:56 +00:00
Georg Lehmann
9a56484247 lima: rework lima_nir_duplicate_intrinsic
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36308>
2025-07-24 17:19:56 +00:00
Georg Lehmann
5f48b4a053 lima: rework lima_nir_duplicate_modifiers
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36308>
2025-07-24 17:19:55 +00:00
Luc Ma
bfb855b0c8 dri: use XCB_PRESENT_EVENT_* enum instead of macros for consistency
In the dri3_handle_present_event() function, it uses an event enum
and two macros. So I suggest to change these all to use enums for
consistency.

Signed-off-by: Luc Ma <luc@sietium.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30461>
2025-07-24 16:14:19 +00:00
Vitaliy Triang3l Kuzmin
8f9db117cf .gitignore: Add KDevelop *.kdev4
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Filters out mesa.kdev4 and the .kdev4 directory.

Signed-off-by: Vitaliy Triang3l Kuzmin <triang3l@yandex.ru>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35951>
2025-07-24 16:12:10 +00:00
Aaron Ruby
49ec8bc982 gfxstream: Add init+tracking for the host-equivalent queue_family
information

This information (otherwise invisible to the guest) may be used in the
future in some other guest-only functionality

Reviewed-by: Gurchetan Singh <gurchetansingh@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36330>
2025-07-24 15:58:30 +00:00
Aaron Ruby
89ccc8ba2b gfxstream: Pre-fetch the VkQueue objects from the host
.. and refactor vk_queue initialization entirely to store the queue
information at device-creation time.

Reviewed-by: Gurchetan Singh <gurchetansingh@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36330>
2025-07-24 15:58:30 +00:00
Aaron Ruby
b1f6b76f85 gfxstream: Remove on_vkGetDeviceQueue* impls entirely
The VkQueue_info::device field is not actually needed anywhere.

Reviewed-by: Gurchetan Singh <gurchetansingh@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36330>
2025-07-24 15:58:30 +00:00
Aaron Ruby
4a30c6fd70 gfxstream: Use the Mesa common tss_* TLS helper functions
... in GfxstreamConnectionManager, to acquire the threadLocalInstance
of the connectionManager. Using thread_local attribute storage to store
some CPP primitives (i.e. unique_ptr) can cause issues on some
platforms.

Better to do all TLS as explicit as possible, using the available
utilities from common src/util. Don't need to wrap it in
a std::unique_ptr either, as the instance is just managed by the
destructor in the TLS interface.

Reviewed-by: Gurchetan Singh <gurchetansingh@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36302>
2025-07-24 15:44:42 +00:00
Valentine Burley
5d55b7e50c radeonsi/ci: Remove Fluster flakes, document failures
Tighten the expectations.

Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36316>
2025-07-24 15:04:38 +00:00
Valentine Burley
93a45abcf4 radeonsi/ci: Convert Fluster job to deqp-runner suite
Drop the custom fluster-runner.sh script and add a deqp-runner suite for
the `radeonsi-raven-vaapi-fluster` job.

Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36316>
2025-07-24 15:04:38 +00:00
Roland Scheidegger
5385624c6d llvmpipe: Fix array mismatch when accessing shader images
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
The compiled image function is derived from the image view, which is
supposed to match what is declared in the shader, however we did fixups
for array targets that only had one layer, since pipe_shader_image
actually doesn't have a target (derived from the resource instead).
But this is not correct at least for vulkan, since then the layer
coord is completely ignored, so we never got OOB behavior wrt the
layer coord.
Use single_layer_view field in pipe_shader_image to denote non-array
targets (the GL state tracker uses this in a similar way already,
although llvmpipe ignored it).

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Brian Paul <brian.paul@broadcom.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36304>
2025-07-24 12:46:05 +00:00
Roland Scheidegger
5291eb9cd2 llvmpipe: minor cleanup
Remove duplicate assignment, better llvm module names

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Brian Paul <brian.paul@broadcom.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36304>
2025-07-24 12:46:05 +00:00
Mike Blumenkrantz
2e2f4e073d ci: add venus-lavapipe flake
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36347>
2025-07-24 12:20:35 +00:00
Valentine Burley
b3cbaf4ee7 zink/ci: Enable more VVL on ANV
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Enable VVL on ADL, as well as GLES on TGL, and drop some old filters.

Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36222>
2025-07-24 11:59:44 +00:00
Jose Maria Casanova Crespo
dac5624ad4 v3d: glMemoryBarriers only flush jobs with tmu_dirty_rcl
As we are already updating tmu_dirty_rcl based on the the
shader usage of tmu writes at v3d_emit_gl_shader_state we
can avoid setting it everytime we have a SSBO or image
attached.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36343>
2025-07-24 11:29:11 +00:00
Samuel Pitoiset
e64b0eda56 radv: remove dead ES emit code on GFX12
This is never reached because VS as ES means it's merged into GS as NGG.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36293>
2025-07-24 11:03:27 +00:00
Samuel Pitoiset
081c7ec7b1 radv: emit PGM_HI_PS in the gfx preamble on GFX12
It never changes.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36293>
2025-07-24 11:03:27 +00:00
Hans-Kristian Arntzen
30c2e7871f anti-lag: Submit timestamps early in a frame.
Allows detecting if the queue ends up going idle due to
a cross-queue dependency. Since we're only considering delays from
specific queues, we would not be able to detect low-latency situations
arising from the start of a frame happening on async queues.

Until we observe real work happening for a queue in a frame context,
submit timestamps ahead of any other waits.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34242>
2025-07-24 09:50:08 +00:00
Hans-Kristian Arntzen
81bb109a3b anti-lag: Only consider timestamps from queues which have presented.
Avoids stray submissions to compute queues to nullify the delay.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34242>
2025-07-24 09:50:07 +00:00
Daniel Schürmann
722ffe9a73 vulkan: implement VK_AMD_anti_lag as implicit vulkan layer
VkLayer_MESA_anti_lag is a lightweight implicit layer which provides
an open-source implementation of the VK_AMD_anti_lag vulkan extension.

The algorithm used by this layer is very simplistic and only aims to
minimize the delay between calls to vkQueueSubmit or vkQueueSubmit2
and the begin of the execution of the submission.

In order to build VkLayer_MESA_anti_lag, pass -Dlayers=anti-lag to meson.
It is possible to either install the layer or to use

 VK_ADD_IMPLICIT_LAYER_PATH=<buildpath>/share/vulkan/implicit_layer.d/

for testing purposes.
(Keep in mind that you have to adjust the library_path in the json file in that case.)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34242>
2025-07-24 09:50:07 +00:00
Daniel Schürmann
699ae0aad9 util/time: add os_time_nanosleep_until() function
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34242>
2025-07-24 09:50:07 +00:00
Christian Gmeiner
00d905c4b2 etnaviv: Fix negative LOD value encoding in texture descriptors
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Replace incorrect MIN2 clamping with proper 5.8 signed fixed point
encoding. The hardware expects LOD values in 5.8 format with a range
of -16.0 to +15.99609375. Clamp input values to this valid range
before conversion to handle overflow correctly.

Passes dEQP-GLES3.functional.texture.mipmap.*.max_lod.* on GC7000.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36303>
2025-07-24 09:35:06 +00:00
Pavel Ondračka
6fc78f38ae r300/ci: add one recent flake
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36332>
2025-07-24 09:21:05 +00:00
Pavel Ondračka
5928eba9eb r300/ci: check gles2 extensions
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36332>
2025-07-24 09:21:05 +00:00