Commit graph

223173 commits

Author SHA1 Message Date
Samuel Pitoiset
fc7da599fa util: add a separate file for ANV drirc
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41731>
2026-05-28 11:24:42 +00:00
Samuel Pitoiset
85ac866f5e util: add a separate file for turnip drirc
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41731>
2026-05-28 11:24:42 +00:00
Samuel Pitoiset
aba4094636 util: add a separate file for RadeonSI drirc
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41731>
2026-05-28 11:24:41 +00:00
Samuel Pitoiset
c8da45dd99 util: add a separate file for Zink drirc
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41731>
2026-05-28 11:24:41 +00:00
Samuel Pitoiset
a33f1dfd2c util: share the DOCTYPE for all driconf files
We can just pass it to xmllint.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41731>
2026-05-28 11:24:41 +00:00
Pavel Ondračka
d3f9543f2a r300: drop more dead ntr code
This includes some remnants from the regaloc, stale ntr_compile fields,
stale comments, unused helpers and one virgl if workaround.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:08 +00:00
Pavel Ondračka
bc89b448c9 r300: use RC registers directly in nir_to_rc
Remove the temporary ntr_src/ntr_dst representation by translating NIR
sources and destinations straight to backend rc_src_register and
rc_dst_register values.

Keep the NIR translator instruction state in backend rc_sub_instruction
form as well, so this path no longer has to stage ureg-shaped registers
before emitting backend instructions.

The only slightly ugly part is saturate, since in the backend its not a
dst parameter, but it rather belongs to the instruction.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:08 +00:00
Pavel Ondračka
2b417a0183 r300: get rid of the precise modifier
Nothing in the backed actually uses this

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:07 +00:00
Pavel Ondračka
1cbe2e0d07 r300: get rid of ntr_emit_load_output
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:07 +00:00
Pavel Ondračka
565fe8b58e r300: get rid of ureg_src_undef in ntr
Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:06 +00:00
Pavel Ondračka
d3ca1c6e5d r300: get rid of ureg_program in ntr
Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:06 +00:00
Pavel Ondračka
c0f4b711e5 r300: stop using ureg_dst_undef in ntr
Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:06 +00:00
Pavel Ondračka
d4a52c27ea r300: get rid of user_src and ureg_dst
Just use the backend src/dst structs directly

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:06 +00:00
Pavel Ondračka
a9a2256dc5 r300: drop ureg_DECL_address
ureg_DECL_address just allocates the next sequential TGSI_FILE_ADDRESS
index and returns a ureg_dst.  Also backend's dataflow analysis only
ever marks RC_FILE_ADDRESS[0].x as used (see radeon_dataflow.c and
radeon_optimize.c), so any extra address registers were ignored anyway.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:05 +00:00
Pavel Ondračka
57c2b0634f r300: drop dead tg4_offsets and query_levels paths in ntr
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:05 +00:00
Pavel Ondračka
ec920d947c r300: drop ureg_DECL_vs_input in ntr
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:05 +00:00
Pavel Ondračka
e3136a8eba r300: drop ureg_DECL_temporary in ntr
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:04 +00:00
Pavel Ondračka
303cea1217 r300: drop ureg shader properties in ntr
Unused by the backend.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:04 +00:00
Pavel Ondračka
44bd7c63a8 r300: use backend texture targets directly in ntr
Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:04 +00:00
Pavel Ondračka
ff9247b781 r300: lower sysvals to varyings
Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:03 +00:00
Pavel Ondračka
1306c80016 r300: stop declaring samplers with ureg in ntr
The backend doesn't need/use this.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:03 +00:00
Pavel Ondračka
335234f4aa r300: use NIR varying locations directly in ntr
Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:03 +00:00
Pavel Ondračka
94fa3bcb8c r300: allocate FS outputs from NIR locations
Stop using tgsi_get_gl_frag_result_semantic for fragment outputs. The
direct RC path only needs stable output register indices plus the
OutputColor/OutputDepth mappings, so use NIR gl_frag_result locations
instead.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:02 +00:00
Pavel Ondračka
1a479bff02 r300: drop the TGSI opcode middle step from ntr
Store rc_opcode directly in struct ntr_insn, populate it with
RC_OPCODE_* values throughout (the few mismatched names get
explicit ntr_OP wrappers: KILL -> KILP, KILL_IF -> KIL), and use
rc_get_opcode_info instead of tgsi_get_opcode_info when walking
the list to emit RC instructions.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:02 +00:00
Pavel Ondračka
bbd9b31eef r300: emit RC instructions directly from nir_to_rc
Instead of going through the ureg / TGSI tokens / r300_tgsi_to_rc
parsing round-trip, walk the ntr_insn list and rc_constants_add /
rc_insert_new_instruction the result straight into the
radeon_compiler that the caller passes in. Translation reuses the
rc_translate_* helpers extracted in the previous commit.

Changes touching the surrounding code:

- nir_to_rc returns void and takes a struct radeon_compiler *.
- ntr_compile tracks immediates and UBO size in its own
  util_dynarray instead of relying on ureg_DECL_immediate /
  ureg_DECL_constant2D's bookkeeping.
- ntr_output_decl tracks the FS output color/depth indices so
  nir_to_rc can populate compiler->OutputColor[] /
  compiler->OutputDepth at the end - find_output_registers is gone.
- r300_translate_{fragment,vertex}_shader drop the tgsi_scan_shader
  + r300_tgsi_to_rc + ttr.error dance and switch to checking
  compiler.Base.Error.
- write_all (gl_FragColor vs gl_FragData[0]) now comes from a NIR
  walk in r300_translate_fragment_shader rather than reading the
  TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS property.
- r300_tgsi_to_rc.{c,h} are deleted, meson.build updated, and the
  obsolete header includes go away in r300_fs.c / r300_vs.c.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:02 +00:00
Pavel Ondračka
e5a893c3aa r300: extract TGSI->RC translation helpers into nir_to_rc.h
Pull translate_opcode, translate_register_file, translate_saturate
and the texture-target switch out of r300_tgsi_to_rc into
nir_to_rc.h as static inline rc_translate_* helpers. r300_tgsi_to_rc
now uses them and this is preparation for direct RC emission from
nir_to_rc.c

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:02 +00:00
Pavel Ondračka
ebf2ab9d59 r300: move r300_transform_*_trig_input out of nir_to_rc
This was moved from r300_optimize_nir previously because we that was
called in finalize_nir and thus could be called more than once. This is
not the case anymore. Also drop the stale nine optimization.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:01 +00:00
Pavel Ondračka
267b6e4bef r300: emit one full vec4 immediate per NIR load_const
Stop relying on ureg_DECL_immediate's "expand" path to fill earlier
TGSI immediates' unused components with values from later load_const
instructions and depend on later backed pass to do it.

Mostly a wash on shader-db: sub-0.1% regressions on inst/cycles/
consts on RV530/RV370/RV410, with one LOST shader on RV370
(trine/fp-17.shader_test FS).

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:01 +00:00
Pavel Ondračka
d8d7e2057f r300: build the dummy fragment shader directly as NIR
Drop the TGSI ureg roundtrip in r300_dummy_fragment_shader and
construct the (0, 0, 0, 1) FS straight via nir_builder, matching
the rest of the compile pipeline that already runs on NIR.

Assisted-by: Codex (GPT-5.5)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:01 +00:00
Pavel Ondračka
3740d12ba0 r300: fix use-after-free of remap_table in rc_remove_unused_constants
When externals were not remapped, free(s->remap_table) ran before
rc_constants_print. Print the constants first, then free.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:01 +00:00
Pavel Ondračka
d68b7e48da r300: move compiler init earlier and to a helper
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:01 +00:00
Pavel Ondračka
cb7449effb r300: collect input/output info directly from NIR
The NIR IO intrinsics already carry the locations and register bases
used for the generated declarations, so fill r300_shader_semantics while
emitting the NIR loads and stores.

This removes the FS input semantic scan and lets the VS output setup use
the same NIR-derived information. Track the total number of used
inputs/outputs as well.

Also stop depending on tgsi_info for the external constants.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:00 +00:00
Pavel Ondračka
3c295e513c r300: always convert to NIR and move ntr later
Always convert TGSI shaders to NIR up-front in r300_create_{fs,vs}_state
so the rest of the compile pipeline only ever has to deal with NIR. The
TGSI->RC translation in r300_translate_{fragment,vertex}_shader now
always goes through nir_to_rc.

This requires shifting r300_blitter_draw_rectangle's sprite_coord_enable
bit from 0 to 9. The blitter's GENERIC[0] FS input now lands at
fs_inputs->generic[9] after the +9 shift in ntr_fixup_varying_slots, so
the rasterizer's sprite_coord_enable check needs the matching bit.

The draw path still needs TGSI, so we convert it back explicitly for
now. The deTGSIzation of draw paths will come later.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:00 +00:00
Pavel Ondračka
2546882763 r300: stop dumping TGSI
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:07:00 +00:00
Pavel Ondračka
37e48ea736 r300: remove the redundant control flow checks
This is checked at the NIR level now so we have either failed linking or
went for a dummy shader.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:06:59 +00:00
Pavel Ondračka
90f2f4d626 r300: remove extra newline for compiler errors
This is now propagated to the linker which also adds one.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41577>
2026-05-28 11:06:59 +00:00
Valentine Burley
2d56ccbfe0 venus/ci: Widen the ANV skips
These could still cause hangs:
https://gitlab.freedesktop.org/mesa/mesa/-/jobs/100936550
https://gitlab.freedesktop.org/mesa/mesa/-/jobs/100935415

Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41516>
2026-05-28 10:17:25 +00:00
Mike Blumenkrantz
9b7b28d7d5 vk/cmd_queue: simplify gross struct duplication
+lavapipe fixups from konstantin

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41516>
2026-05-28 10:17:25 +00:00
Erik Faye-Lund
5b40c77137 pan/genxml: use consistent attribute order
We usually do size followed by start, not the other way around. Fix up a
few cases of inverting this.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:42 +00:00
Erik Faye-Lund
fdb79c7793 pan/genxml: remove some pointless comments
We don't usually document the details about the various fields here.
Let's drop these, as the comments don't exits in future docs either,
making it a bit easier to diff them.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:42 +00:00
Erik Faye-Lund
27a12f2406 pan/genxml: make field consistent
The distinction between 8 and 4 bit here is kinda meaningless, because
the extra bits are zero regardless. This matches what the spec says, and
is also consistent with the other XML definitions we have. So let's make
it consistent so we can more easily diff the XML files to see what
changed.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:42 +00:00
Erik Faye-Lund
577bba5a13 pan/genxml: clean up whitespace
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:42 +00:00
Erik Faye-Lund
5e6dd71658 pan/genxml: consistently set default
Most of the XML files does this, so let's do the same here. This
shouldn't matter in practice, as we always set the field anyway.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:41 +00:00
Erik Faye-Lund
38621ed598 pan/genxml: consistently use hex for uint immediates
We're inconsistent about what we're using here, let's use hex unless we
have a good reason not to...

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:41 +00:00
Erik Faye-Lund
45846ef531 pan/genxml: correct casing of names/types
This makes things more consistent, but shouldn't make a practical
difference apart from reducing needless diffs.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:41 +00:00
Erik Faye-Lund
836c4cc9e7 pan/genxml: keep enum ordering from v10
This just makes it easier to diff the XML files with the V10 version. It
should be purely cosmetical.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:41 +00:00
Erik Faye-Lund
0a6c2c3233 pan/genxml: remove needless defaults
We don't specify these for V10, and the default is the zero-value
anyway. Let's drop them to simplify things and reduce needless diffs.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:41 +00:00
Erik Faye-Lund
af24a09e57 pan/genxml: consistently use uint for chunk indexes
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:40 +00:00
Erik Faye-Lund
5b0775376c pan/genxml: consistently use uint for signal slot
This reduces needless diffs between the XML files.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:40 +00:00
Erik Faye-Lund
f2a7943d84 pan/genxml: consistently use hex for masks
We do this for all masks from V12 and later, but not always in earlier
gens. Let's fix this up to both produce cleaner dumps, as well as reduce
needless diffs between the files.

Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41721>
2026-05-28 09:51:40 +00:00