Alyssa Rosenzweig
2fca9dcedf
asahi/clc: promote bindless textures
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35949 >
2025-07-10 14:55:18 -04:00
Alyssa Rosenzweig
ee26938faf
nir,agx: switch to bindless_image_agx intrinsic
...
this is more explicit than vec2's and hence has fewer footguns. in particular
it's easier to handle with preambles in a sane way.
modelled on what ir3 does.
there's probably room for more clean up but for now this unblocks what I want to
do.
stats don't seem concerning.
Totals from 692 (1.29% of 53701) affected shaders:
MaxWaves: 441920 -> 442112 (+0.04%)
Instrs: 1588748 -> 1589304 (+0.03%); split: -0.05%, +0.08%
CodeSize: 11487976 -> 11491620 (+0.03%); split: -0.04%, +0.07%
ALU: 1234867 -> 1235407 (+0.04%); split: -0.06%, +0.10%
FSCIB: 1234707 -> 1235249 (+0.04%); split: -0.06%, +0.10%
IC: 380514 -> 380518 (+0.00%)
GPRs: 117292 -> 117332 (+0.03%); split: -0.08%, +0.11%
Preamble instrs: 314064 -> 313948 (-0.04%); split: -0.05%, +0.01%
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35949 >
2025-07-10 14:55:17 -04:00
Alyssa Rosenzweig
67237b6f1b
treewide: use nir_break_if
...
Via Coccinelle patch:
@@
expression builder, condition;
@@
-nir_push_if(builder, condition);
-{
-nir_jump(builder, nir_jump_break);
-}
-nir_pop_if(builder, NULL);
+nir_break_if(builder, condition);
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Mel Henning <mhenning@darkrefraction.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35794 >
2025-06-30 14:51:24 -04:00
Alyssa Rosenzweig
7fd7b18b38
nir: rename AGX geom/tess intrinsics
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
to the new common code name.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35802 >
2025-06-30 16:24:10 +00:00
Alyssa Rosenzweig
1f7fe678e7
asahi,hk: significantly rework GS
...
get rid of the rasterizer discard variants, by pushing XFB into the hardware VS
and letting everything cascade down from there. that then means hardware VS runs
for all streams, which means we get dynamic rasterization stream selection.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35802 >
2025-06-30 16:24:07 +00:00
Alyssa Rosenzweig
1c4eb71cbc
libagx: port pre-GS to CL
...
in prep for changing the compile flow for it.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:49 +00:00
Alyssa Rosenzweig
dff1230879
agx/nir_lower_gs: remove random idiv const call
...
should be fixed in the agx backend now
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:49 +00:00
Alyssa Rosenzweig
73659b4f67
agx/nir_lower_gs: CLify more XFB code
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:48 +00:00
Alyssa Rosenzweig
10554ccad2
agx/nir_lower_gs: rework XFB prim calculation
...
significant instr count reduction for many outputs in a buffer.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:48 +00:00
Alyssa Rosenzweig
2544259030
asahi,hk,libagx: drop null checks
...
instead require scratch addresses be passed.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:45 +00:00
Alyssa Rosenzweig
fa21722f1c
asahi: use zero/scratch page for null textures
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:44 +00:00
Alyssa Rosenzweig
db2891ec5f
hk,asahi: move scratch BO to common
...
gl needs this too.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35797 >
2025-06-27 15:31:44 +00:00
Alyssa Rosenzweig
776f07517f
hk: optimize load_global_bounded
...
Totals from 5967 (11.24% of 53090) affected shaders:
MaxWaves: 5044864 -> 5126720 (+1.62%); split: +1.95%, -0.32%
Instrs: 6911845 -> 6227557 (-9.90%); split: -9.96%, +0.06%
CodeSize: 46353592 -> 45359410 (-2.14%); split: -4.41%, +2.27%
Spills: 18002 -> 7046 (-60.86%); split: -63.22%, +2.36%
Fills: 15833 -> 8074 (-49.01%); split: -54.59%, +5.58%
Scratch: 52160 -> 23324 (-55.28%); split: -58.32%, +3.04%
ALU: 4235569 -> 4602546 (+8.66%); split: -1.79%, +10.45%
FSCIB: 4235364 -> 4602341 (+8.66%); split: -1.79%, +10.45%
IC: 1261552 -> 1253110 (-0.67%); split: -4.33%, +3.66%
GPRs: 664060 -> 640627 (-3.53%); split: -4.69%, +1.16%
Uniforms: 1568288 -> 1505664 (-3.99%); split: -10.88%, +6.89%
Loops: 4669 -> 4670 (+0.02%)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35720 >
2025-06-26 16:41:54 +00:00
Alyssa Rosenzweig
43a47266c8
hk: merge adjacent CDM control streams
...
this reduces submission overhead in the kernel/firmware.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35662 >
2025-06-20 21:38:12 +00:00
Alyssa Rosenzweig
cdb4463b52
asahi,hk: fix ts allocation for more shader types
...
3c5c3d7819 ("hk: fix texture state count"), part 2.
Backport-to: 25.1
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35662 >
2025-06-20 21:38:10 +00:00
Alyssa Rosenzweig
53bbd850f5
asahi: use #defines for uniforms
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35658 >
2025-06-20 18:46:14 +00:00
Alyssa Rosenzweig
c3b449ff98
asahi: use #defines for prologs/epilogs
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35658 >
2025-06-20 18:46:14 +00:00
Alyssa Rosenzweig
c4b3f8cf74
agx: add headers for uniform abi
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35658 >
2025-06-20 18:46:14 +00:00
Christian Gmeiner
f261370995
asahi/lib: Don't use deprecated NIR_PASS_V macro
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35479 >
2025-06-11 21:43:01 +00:00
Alyssa Rosenzweig
65a5ff67e9
agx: add XML-based disassembler
...
autogenerate a disassembler from the XML. also add a simple pure Python
reference disassembler, since autogenerated C code can be annoying to work with
in various contexts (we might drop this down the line, TBD if it's useful to
port over the current non-Mesa consumers of dougallj/applegpu). both
disassemblers produce identical output, unit tested via Meson.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35189 >
2025-06-05 18:57:42 +00:00
Alyssa Rosenzweig
794b6a14bb
asahi: clang-format
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35169 >
2025-05-27 13:23:12 +00:00
Alessandro Astone
33e0330baf
asahi: Do not require fopencookie on Android
...
The android build lies when setting _GNU_SOURCE, presumably to have access to
other functions that Android's libc actually implements.
However, fopencookie is not one of those.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35137 >
2025-05-26 13:45:50 +00:00
Sasha Finkelstein
2f4f9f0b98
hk: Implement VK_EXT_map_memory_placed
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13008
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34789 >
2025-05-06 18:41:08 +00:00
Alyssa Rosenzweig
a49403f4ac
agx/nir_lower_tess: use nir_lower_default_point_size
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34762 >
2025-05-06 17:07:00 +00:00
Alyssa Rosenzweig
d53a3a081b
agx/nir_lower_gs: use nir_lower_default_point_size
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34762 >
2025-05-06 17:07:00 +00:00
Alyssa Rosenzweig
3eb7575679
asahi: do not use "Null" layout
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This is the most serious bug we've had in a long time due to a fundamental
misunderstanding of the hardware (due to incomplete reverse-engineering). It
caught me off guard.
The texture descriptor has "mode" bits which configure two aspects of how the
address pointer is interpreted:
* whether it is indirected, pointing to a secondary page table for sparse
* whether it writes texture access counters (for Metal's idea of sparse).
...Neither of these is a "null texture" mode.
So why did I see Apple's blob using a non-normal mode for null textures, and why
did I copy those settings?
1. Because the hardware texture access counters provide a cheap way to detect
null texture accesses after the fact, which I think their GPU debug tools
use. I'm not sure why release builds of the driver do/did that, but whatever.
2. Because I assumed Cupertino knew best and I didn't bother looking too close.
We can't use them here (without doing extra memory allocations), since then
the GPU will increment access counters. And since our null texture address used
to just be a pointer in the command buffer, that mean the GPU will trash
whatever memory happened to be 0x400 bytes after the start of the null texture
descriptor. The symptom being random faults.
This bug was caught when trying to use the zero-page instead, which raised a
permission fault when the GPU tried to write counts. Then I remembered the
sparse mechanism and had a bit of a eureka moment. Immediately followed by an
"oh, f#$&" moment as I realized how many random bugs could potentially be root
caused to this.
The fix is two-fold:
1. Use normal layout instead.
2. Set the address to the zero-page (which is a fixed VA) and detect null
textures by checking the address, instead of the mode.
The latter is a good idea anyway, but both parts needs to be done atomically to
maintain bisectability.
Backport-to: 25.1
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34703 >
2025-04-24 19:05:07 +00:00
Alyssa Rosenzweig
cb52aa58d6
agx/nir_lower_gs: bound static topologies
...
don't bloat up shader info.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
9b1d771747
agx/nir_lower_gs: compact static topologies
...
use 8-bit index buffer instead of 32-bit to significantly decrease the size of
serialized geometry shaders (agx_gs_info is not dynamic).
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
5640266eb3
agx/nir_lower_gs: rework gs rast shape handling
...
rather than a bunch of subtle booleans telling the driver how to invoke the GS
rast shader, collect everything into a common enum, and provide (CL safe)
helpers to do the appropriate calculations rather than duplicating across
GL/VK/indirects.
this fixes suboptimal handling of instancing with list topologies.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
2a0314250b
agx/nir_lower_gs: don't use nir_def_rewrite_uses
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
3670f95e12
agx/nir_lower_gs: avoid redundant sr read's
...
saves 2 SR reads in a SW VS
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
8b0dca384f
agx/nir_lower_gs: fix type confusion
...
Fixes: b9b6828fda ("agx/nir_lower_gs: optimize static topologies")
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
d548259b2f
agx: plumb vertex_id_zero_base
...
to accelerate SW VS.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Alyssa Rosenzweig
6f265ab83f
asahi: clang-format
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34661 >
2025-04-23 16:20:59 +00:00
Ella Stanforth
b38c4e8982
nir/alpha_to_coverage: Add an intrinsic for better dithering
...
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33942 >
2025-04-23 09:03:41 +00:00
Ella Stanforth
d3aedbfe9d
asahi/lib: Move alpha_to_one and alpha_to_coverage lowering to common code.
...
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33942 >
2025-04-23 09:03:41 +00:00
Alyssa Rosenzweig
63a2831967
agx/nir_lower_tess: drop dead todo
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
41960652e1
agx/nir_lower_tess: drop pointless helpers
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
2a065fc446
agx/nir_lower_gs: use common nir_verts_in_output_prim
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
ea209c98fc
agx/nir_lower_gs: drop silly fwd decl
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
ba9f86df51
agx/nir_lower_gs: privatize lower_output_to_var_state
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
d42a92fd93
agx/nir_lower_gs: clean up more state->info
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
470f226ed8
agx/nir_lower_gs: remove silly comment
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
1017095c5a
agx/nir_lower_gs: clean up state/info duplication
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
164fc8a158
agx/nir_lower_gs: clean comment
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
b9b6828fda
agx/nir_lower_gs: optimize static topologies
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34638 >
2025-04-22 12:47:54 +00:00
Alyssa Rosenzweig
88bdc27342
asahi: let booleans be your guide
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34585 >
2025-04-17 17:54:06 +00:00
Alyssa Rosenzweig
551355d4e5
asahi,hk: factor out zls_control pack helper
...
makes both drivers a lot more readable, but especially gl
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34585 >
2025-04-17 17:54:06 +00:00
Alyssa Rosenzweig
454a90eaa8
asahi: plumb ZLS tiling bits
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34585 >
2025-04-17 17:54:06 +00:00
Alyssa Rosenzweig
8f57b5187f
ail: support twiddled
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34585 >
2025-04-17 17:54:05 +00:00