Commit graph

217571 commits

Author SHA1 Message Date
Lionel Landwerlin
12be2a580c nir/compiler_options: add nir_load_pixel_coord
And use it for nir_printf_fmt_at_px().

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/38996>
2026-01-21 16:00:50 +00:00
Lucas Stach
063d480a62 etnaviv: simplify constant dirty bit handling during state emission
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
We don't need to take ETNA_DIRTY_SHADER into consideration for pure
updates of the constant states. When the shader is dirty constants
and code will be uploaded together and the update path will be skipped.

The uniform cache in the context has been removed in ee1ed59458
("etnaviv: prep for UBOs"), so the comment referencing this cache
is confusing and can go as well.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39422>
2026-01-21 15:42:45 +00:00
Lucas Stach
bfd7a8d8d3 etnaviv: check all necessary dirty bits when marking constbufs during draw
Constant buffers may be changed without the shader changing.
Check the correct dirty bits when marking constant buffers
as read during the draw to ensure proper synchronization.

Fixes: a40a6e551e ("etnaviv: draw: only mark resources as read/written when the state changed")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39422>
2026-01-21 15:42:45 +00:00
Christian Gmeiner
1de924c870 pvr/ci: Update CI expectations
Catching up with the latest development.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39432>
2026-01-21 15:10:49 +00:00
Christian Gmeiner
720ee2b9eb pvr/ci: Increase timeout to prevent job failures
Jobs have been timing out, requiring 2-6 additional minutes beyond the
previous 30-minute limit. Increase the overall timeout from 30 to 45
minutes, with an additional 5-minute buffer for GitLab (50m total) to
provide margin for variance.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39432>
2026-01-21 15:10:49 +00:00
Dylan Baker
00aa3bdb1d docs/releasing: Use the GitLab CI as the test procedure
The GitLab CI is much more useful than trying to hand test.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39011>
2026-01-21 15:03:47 +00:00
Dylan Baker
a5dce21782 docs/releasing: Add a section to update the website
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39011>
2026-01-21 15:03:47 +00:00
Dylan Baker
79b9c8c5dd docs/releasing: Use a pull request instead of push for relnotes
There's not reason to push them directly to the main branch, just let
marge merge them.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39011>
2026-01-21 15:03:46 +00:00
Dylan Baker
868e0ecae8 docs/releasing: fix which commit is cherry-picked
Because `X.Y~1` should be the version bump commit, while `~2` should be
the generation of the release notes.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39011>
2026-01-21 15:03:46 +00:00
Daniel Schürmann
89b9fcb5e7 nir/opt_load_store_vectorize: delay aliasing test in try_vectorize_shared2()
Checking for aliasing can be very expensive.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38659>
2026-01-21 14:20:06 +00:00
Daniel Schürmann
598928d7e7 nir/loop_analyze: determine whether all control flow gets eliminated upon loop unrolling
Totals from 17 (0.02% of 79839) affected shaders: (Navi48)

MaxWaves: 241 -> 243 (+0.83%); split: +5.81%, -4.98%
Instrs: 44198 -> 43786 (-0.93%); split: -8.19%, +7.26%
CodeSize: 230284 -> 226900 (-1.47%); split: -10.55%, +9.08%
VGPRs: 2152 -> 2524 (+17.29%); split: -3.90%, +21.19%
Scratch: 718848 -> 0 (-inf%)
Latency: 128977 -> 145720 (+12.98%); split: -2.12%, +15.10%
InvThroughput: 206804 -> 254250 (+22.94%); split: -0.32%, +23.27%
VClause: 1296 -> 1309 (+1.00%); split: -28.09%, +29.09%
SClause: 835 -> 833 (-0.24%)
Copies: 6284 -> 3630 (-42.23%); split: -44.51%, +2.28%
Branches: 1003 -> 961 (-4.19%)
PreSGPRs: 1003 -> 996 (-0.70%); split: -1.20%, +0.50%
PreVGPRs: 1510 -> 2130 (+41.06%)
VALU: 23577 -> 24309 (+3.10%); split: -6.26%, +9.37%
SALU: 5875 -> 5688 (-3.18%); split: -6.26%, +3.08%
VMEM: 3679 -> 3001 (-18.43%); split: -33.27%, +14.84%
SMEM: 1632 -> 1631 (-0.06%)
VOPD: 23 -> 24 (+4.35%)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38659>
2026-01-21 14:20:06 +00:00
Daniel Schürmann
4997d8fb1b nir/loop_analyze: determine for all ALU whether it can be constant-folded
Totals from 16 (0.02% of 79839) affected shaders: (Navi48)

MaxWaves: 512 -> 464 (-9.38%)
Instrs: 11821 -> 17205 (+45.55%)
CodeSize: 60536 -> 86644 (+43.13%)
VGPRs: 732 -> 804 (+9.84%)
Latency: 68411 -> 39349 (-42.48%)
InvThroughput: 14217 -> 9306 (-34.54%)
VClause: 223 -> 302 (+35.43%)
SClause: 262 -> 317 (+20.99%)
Copies: 961 -> 696 (-27.58%); split: -39.23%, +11.65%
Branches: 182 -> 158 (-13.19%); split: -29.67%, +16.48%
PreSGPRs: 1210 -> 945 (-21.90%); split: -29.42%, +7.52%
PreVGPRs: 647 -> 633 (-2.16%)
VALU: 5112 -> 10857 (+112.38%)
SALU: 3215 -> 2335 (-27.37%); split: -30.67%, +3.30%
VMEM: 228 -> 349 (+53.07%)
SMEM: 567 -> 549 (-3.17%); split: -3.70%, +0.53%
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38659>
2026-01-21 14:20:06 +00:00
Mario Kleiner
1d6f85a207 util/driconf: Disable EGL RGB[A]16 unorm configs on panfrost for now
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Currently panfrost has some bug at least on Midgard T-860, which causes
an assertion failure with these 16 bpc displayable framebuffer configs:

".../drivers/panfrost/pan_fb_preload.c:341: pan_preload_get_blend_shaders:
Assertion `b->work_reg_count <= 4' failed."

See discussion in:

https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588

Disable these rgb16 configs on panfrost by default for now,
as suggested by Eric Smith.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Suggested-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Mario Kleiner
203d20c90a ci/deqp: Pull in a fix for EGL render tests for rgba16 and rgb16 unorm
Needed, so dEQP can deal with 16 bpc unorm surface formats, and doesn't
generate wrong reference images with its rasterizer, leading to false
positive failures in image comparison driver vs. reference rasterizer.

As proposed by Valentine Burley, thanks!

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Suggested-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Mario Kleiner
82e12d3d83 egl/surfaceless,device: Support RGB[A]16_UNORM formats for pbuffers.
Use the EGL_EXT_config_select_group extension to put these 16 bpc
unorm formats into a lower priority config select group 1, so they
don't get preferably chosen by default by eglChooseConfig(), but must
be explicitely requested by client applications which really need the
high color precision of these 64 bpp formats and are happy to pay the
potential performance impact.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Mario Kleiner
171f484eb0 egl/drm: Support RGB[A]16_UNORM formats for display.
Use the EGL_EXT_config_select_group extension to put these 16 bpc
unorm formats into a lower priority config select group 1, so they
don't get preferably chosen by default by eglChooseConfig(), but must
be explicitely requested by client applications which really need the
high color precision of these 64 bpp formats and are happy to pay the
potential performance impact.

Tested to work with the GBM backend directly on a VT by running kmscube
as drm master on a AMD Polaris gpu. drm_info reports proper formats for
the DRM framebuffers.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Mario Kleiner
cf9ab823eb egl/wayland: Support RGB[A]16_UNORM formats for display.
This allows clients to send high color precision wl_buffers
to servers which support the format.

Use the EGL_EXT_config_select_group extension to put these 16 bpc
unorm formats into a lower priority config select group 1, so they
don't get preferably chosen by default by eglChooseConfig(), but must
be explicitely requested by client applications which really need the
high color precision of these 64 bpp formats and are happy to pay the
potential performance impact.

Successfully tested with KDE Kwin 6.4, and the GNOME Mutter 50
development branch, which has been enhanced to support these
formats, also for direct scanout, and with Weston 13, which is
also able to directly scan out to a 16 bpc framebuffer on suitable
AMD gpu's.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Mario Kleiner
f2aaa9ce00 dri,gallium: Add support for RGB[A]16_UNORM display formats.
These are useful for displaying very high color precision images with
more than 10 bpc color depth, and also more precision than what fp16
can do on a standard dynamic range (SDR) display, where fp16 for values
in the unorm 0.0 - 1.0 range is about equivalent to at most ~11 bpc
linear color depth. This is especially useful for and aimed at scientific
applications, e.g., neuroscience and other bio-medical research cases.

At least current generation AMD gpu's released during the last 10 years
and supported by amdgpu-kms + atomic modesetting do allow for scanout of
such 16 bpc framebuffers and of up to 12 bpc output to suitable HDMI or
DisplayPort high precision displays.

We gate the format behind a new driconf option 'allow_rgb16_configs',
which defaults to true, but allows to disable the formats if any issues
should arise.

Most regular applications won't need the high display precision of
these new 16 bpc 64 bpp formats which have higher memory and bandwidth
requirements, and therefore a potential undesired performance impact
for regular apps. Followup per-platform enablement commits will use
the EGL_EXT_config_select_group extension to put these 16 bpc unorm
formats into a lower priority config select group 1, so they don't get
preferably chosen by default by eglChooseConfig(), but must be explicitely
requested by client applications which really need the high color
precision of these 64 bpp formats and are happy to pay the potential
performance impact. Thanks to Adam Jackson for pointing me to the
EGL_EXT_config_select_group extension.

If the format would be put into the default config select group 0, a
simple EGL eglChooseConfig() call would end up choosing these formats,
which is not what such regular apps would want.

Tested to not cause any change on native X11/EGL and X11/GLX, which only
supports at most 30 bpc / 32 bpp formats.

Followup commits will enable these formats for the EGL/Wayland backend,
and on the EGL/DRM backend.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Mario Kleiner
1fe73481ba util/format: Add util_format_is_unorm16()
Detects 16 bpc unorm formats. Used by following RGB[A]16
UNORM display enablement commits.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38588>
2026-01-21 12:29:03 +00:00
Rhys Perry
2c9775b339 aco: reduce memory usage of live_var_analysis
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39408>
2026-01-21 12:03:43 +00:00
Rhys Perry
874255e899 aco: use size_t for monotonic_buffer_resource
Necessary for really big shaders.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14650
Backport-to: 25.3
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39408>
2026-01-21 12:03:42 +00:00
Kitlith
18d3b7d623 hk: override can_present_on_device
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Drivers for non-PCI based GPUs are expected to override this function.
This enables successful usage of VK_EXT_acquire_drm_display.

Signed-off-by: Kitlith <kitlith@kitl.pw>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39414>
2026-01-21 10:48:07 +00:00
Olivia Lee
6eadcaa851 panvk: advertise VK_EXT_primitives_generated_query on v10+
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: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38547>
2026-01-21 09:03:34 +00:00
Olivia Lee
ab1a467331 panvk/csf: implement VK_EXT_primitives_generated_query primitive restart
The index buffer unrolling logic was based on asahi's implementation in
libagx/geometry.cl.

Signed-off-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38547>
2026-01-21 09:03:34 +00:00
Faith Ekstrand
a0a232220f panvk: Map ro_sink_address_poly to an OOB address
Mali hardware handles a bunch of OOB conditions by using addresses with
the top bit set.  When the top bit is set, any load/store from a shader
will treat the address as OOB and read zero and discard writes.  We can
use this to implement ro_sink_address_poly.

Signed-off-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38547>
2026-01-21 09:03:34 +00:00
Olivia Lee
1ee08415cd panvk/csf: implement dynamic precomp dispatch size
To count primitives generated when primitive restart is enabled, we need
to dispatch a precomp shader with dimensions that depend on the indirect
draw count. For this, we need some kind of precomp dispatch mechanism
where the dimensions are determined at execution time. The standard
shape for this would be an "indirect precomp" dispatch which reads
dimensions from memory, but in this case that would be a little awkward
because the draw count is min(*draw_count_buffer, max_draw_count). So to
implement that with a typical indirect dispatch mechanism, we would need
to read the buffer, compare it with the max draw count, and then write
it back to scratch memory, just to read it again. To simplify this, I
went for a precomp dispatch mechanism where it just reading the
dimensions from the JOB_SIZE registers set by the caller, which can use
whatever CS code it wants to calculate them.

Signed-off-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38547>
2026-01-21 09:03:34 +00:00
Olivia Lee
1bdd640d83 panvk/csf: implement VK_EXT_primitives_generated_query except primitive restart
Primitive restart requires scanning the index buffer to determine how
many primitives are present, and will be handled in a later commit.

Signed-off-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38547>
2026-01-21 09:03:33 +00:00
Olivia Lee
8f5d9f6fd7 poly: add messages to static_assert calls
static_assert required a message argument until C23. Adding it fixes
the debian-clang CI jobs.

Signed-off-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38547>
2026-01-21 09:03:33 +00:00
Erico Nunes
ca1d59d813 ci: lima farm maintenance
Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39388>
2026-01-21 08:27:01 +00:00
Daivik Bhatia
92fc9719bb v3dv: improve barrier handling for secondary command buffers
Use v3dv_job_apply_barrier_state to consume pending barriers when
executing secondary command buffers. This ensures we only serialize
against relevant stages, addressing FIXME.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39278>
2026-01-21 07:37:49 +00:00
Samuel Pitoiset
de64c7238a ac/nir: fix computing cube derivatives when the major axis is negative
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This corresponds to the face 1.0, 3.0 or 5.0.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39303>
2026-01-21 07:12:34 +00:00
Qiang Yu
4708eb85d7 radv: fix primitive restart gpu hang for pre gfx10
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
PAL always set WD_SWITCH_ON_EOP for pre gfx10 when primitive
restart is enabled to prevent gpu hang.

It only happens when specific index stream with primitive
restart. Since we don't know what's the exact problem,
just follow PAL to disable 4x primitive rate when primitive
restart is enabled.

GFX10+ does not use this function.

Cc: mesa-stable
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39292>
2026-01-21 02:38:26 +00:00
Qiang Yu
7d73ea20ec radeonsi: fix primitive restart gpu hang for pre gfx10
PAL always set WD_SWITCH_ON_EOP for pre gfx10 when primitve
restart is enabled to prevent gpu hang.

It only happens when specific index stream with primitive
restart. Since we don't know what's the exact problem,
just follow PAL to disable 4x primitive rate when primitive
restart is enabled.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14629
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39292>
2026-01-21 02:38:25 +00:00
Arzaq Naufail Khan
dc702671d9 anv: eliminate dead code
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39400>
2026-01-21 01:21:55 +00:00
Thong Thai
c4f05bdf60 frontends/va: include picture_*.c based on selected codec
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Only add the appropriate picture_{h264,h264_enc,vc1,...}.c file when the
corresponding codec is enabled via the -Dvideo-codecs flag.

Add stub functions to va_private.h, so that the code in decode.c and
encode.c remains untouched.

Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39354>
2026-01-20 22:42:08 +00:00
Thong Thai
f4959c16c8 meson: add mpeg12dec as a video-codec
Add mpeg12dec as a selectable video-codec and add a corresponding check
to vl_codec_supported.

Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39354>
2026-01-20 22:42:08 +00:00
Thong Thai
f9c1ba8c17 meson: add jpeg as a video-codec
Add jpeg as a selectable video-codec and add a corresponding check to
vl_codec_supported.

Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39354>
2026-01-20 22:42:08 +00:00
Sagar Ghuge
8e85607130 anv/rt: Drop atomic operations on opacity flags
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Each node has their own opacity bits, so we don't need to track these
opacity flags at header level.

This commit also fixes the instance flag. Instance flag is 8bit wide,
but we were always using 4 lower bits.

Cc: mesa-stable
Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Felix DeGrood <felix.j.degrood@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39053>
2026-01-20 22:20:28 +00:00
Sagar Ghuge
61691034ac anv/rt: Don't always set disableOpacityCull bit
Setting this bit always might hurt performance. It might forces
traversal to treat all leafs always valid.

Cc: mesa-stable
Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Felix DeGrood <felix.j.degrood@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39053>
2026-01-20 22:20:28 +00:00
Natalie Vock
e8f1dc687c aco: Use parameter assignment hints for any-hit shaders
Query the signature of the traversal function stored in the any-hit
shader and make the parameter locations between the two match up, to
remove unnecessary movs inside the traversal loop.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:55 +00:00
Natalie Vock
a32709674a aco: Add parameter assignment hints
Parameter assignment hints allow to influence parameter register
assignment logic with user-specified affinities. If there is an affinity
declared for a parameter, the assignment logic will try to match the
registers a parameter and its affinity are assigned.

It also allows to hint that certain registers are not suitable for
assigning parameters to and should be avoided.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:55 +00:00
Natalie Vock
2d6ecf303a aco: Add and use nir_abi_to_aco helper
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:55 +00:00
Natalie Vock
30f6eacfad radv/rt: Call ahit/isec shaders
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:55 +00:00
Natalie Vock
a03e9287c3 radv/rt: Compile ahit/isec shaders to asm
We can express any-hit/intersection shaders as functions, too.
Any-hit/Intersection shaders need the usual parameters like launch
IDs/descriptor data/ray properties, origin, direction/etc., but also
some special parameters related to traversal state. Any-hit/intersection
shaders need to return whether the hit was accepted and/or traversal
should be terminated, as well as the intersection T value (for
intersection shaders). Both any-hit and intersection shaders also need
to be passed hit attributes via parameters. Closest-Hit shaders need
those too, but we pass them out-of-band via LDS. LDS is used for the
traversal stack when any-hit/intersection shaders, so we need to pass
them via parameters.

Hit attributes are similar to ray payloads in the sense that they're
dynamically sized depending on how much space the application uses.
However, unlike ray payloads, hit attribute sizes have a strict upper
bound of 8 dwords. To make managing parameters easier, we put all hit
attributes in a single vector parameter with 0-8 components. This
prevents having a function with two sets of arbitrary numbers of
parameters.

This commit sets up ahit/isec function signatures and implements
lowering for ahit/isec-specific intrinsics in the context of these
functions. Subsequent commits will merely have to call into these
functions to execute a separate-compiled any-hit/intersection shader.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:55 +00:00
Natalie Vock
e74e0983a7 radv/rt: Fix terminate_ray handling for intersection shaders
terminate_ray should only return from any-hit shaders, it should not
skip the intersection shader. If we insert a nir_jump_return when
processing the already-inlined any-hit shader, the intersection shader
will be skipped.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:54 +00:00
Natalie Vock
646d3b9645 radv/nir: Make nir_lower_intersection_shader public
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:54 +00:00
Natalie Vock
1fb005b487 radv/nir: Add and use radv_nir_return_param_from_type helper
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:54 +00:00
Natalie Vock
bde7bebc01 radv/rt: Don't consider non-internal INTERSECTION shaders as the traversal shader
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:54 +00:00
Natalie Vock
b52adac42c aco: Tweak ABI register param limits
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:54 +00:00
Natalie Vock
7a2f050daa aco: Put boolean parameters inside SGPRs
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39314>
2026-01-20 21:49:54 +00:00