mesa/src/panfrost/compiler
Olivia Lee 8e4c6990a1 panvk: implement non uniform indexing except for input attachments
We need to lower everything on bifrost, and everything except nonuniform
texture offsets on valhall. With texture offsets, the hardware supports
nonuniform offsets passed in a staging register, but does not support
passing nonuniform offsets as src1 in the narrow layout. We need to make
sure we check for this if we implement narrow offsetms later.

Input attachments are skipped in this commit because they need
additional changes.

Signed-off-by: Olivia Lee <olivia.lee@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35408>
2025-06-13 19:02:19 +00:00
..
bifrost panfrost: define bi_swizzle alias values 2025-04-10 10:15:46 -07:00
test bi: Rewrite dead code elimination 2024-08-20 10:03:30 +02:00
valhall pan/va: allow using both FAU and small constants in the same instruction 2025-05-28 22:21:46 +00:00
bi_builder.h.py panfrost: bi_builder.h.py: stop generating unneeded parentheses 2025-05-22 14:39:32 +00:00
bi_helper_invocations.c panfrost: Add BI_OPCODE_WMASK to bi_instr_uses_helpers 2025-02-28 08:55:32 +00:00
bi_layout.c
bi_liveness.c
bi_lower_divergent_indirects.c pan,nir: introduce load_attribute_pan 2024-12-18 08:33:16 +00:00
bi_lower_swizzle.c panfrost/va: valhall-specific swizzle lowering 2025-04-10 10:15:46 -07:00
bi_opcodes.c.py pan/bi: ignore ftz mode when scheduling int instructions 2025-04-10 16:21:09 +00:00
bi_opcodes.h.py pan/bi: ignore ftz mode when scheduling int instructions 2025-04-10 16:21:09 +00:00
bi_opt_constant_fold.c panfrost: fix shift overflow in bi_fold_constant 2024-01-26 09:40:48 +00:00
bi_opt_copy_prop.c panfrost: use an accessor function to read from bi_opcode_props 2025-02-20 23:33:00 +00:00
bi_opt_cse.c panfrost: use an accessor function to read from bi_opcode_props 2025-02-20 23:33:00 +00:00
bi_opt_dce.c panfrost: use an accessor function to read from bi_opcode_props 2025-02-20 23:33:00 +00:00
bi_opt_dual_tex.c
bi_opt_mod_props.c panfrost: use an accessor function to read from bi_opcode_props 2025-02-20 23:33:00 +00:00
bi_opt_push_ubo.c pan: Use a consistent pan_ prefix across src/panfrost/* 2025-05-21 14:58:20 +02:00
bi_packer.c.py panfrost: split pseudo instructions from Bifrost and Valhall 2024-08-20 12:18:19 +00:00
bi_pressure_schedule.c pan/bi: rework memory barriers 2025-06-13 12:05:02 +02:00
bi_print.c panfrost: Reformat using the new style 2023-05-29 21:06:12 +00:00
bi_print_common.c
bi_print_common.h
bi_printer.c.py panfrost: add bi_swizzle values for unused swizzles 2025-04-10 10:15:46 -07:00
bi_quirks.h
bi_ra.c pan/bi: bump iter_count to 2000 2025-01-22 23:19:18 +00:00
bi_swizzles.c.py panfrost: use bifrost instruction table for bi_lower_swizzle 2025-04-10 10:15:46 -07:00
bi_swizzles.h panfrost: use bifrost instruction table for bi_lower_swizzle 2025-04-10 10:15:46 -07:00
bi_test.h pan: Use a consistent pan_ prefix across src/panfrost/* 2025-05-21 14:58:20 +02:00
bi_validate.c
bifrost.h pan/bi: Expose the packed TextureOperationDescriptor in bifrost_texture_operation 2024-11-05 11:20:21 +00:00
bifrost_compile.c panvk: implement non uniform indexing except for input attachments 2025-06-13 19:02:19 +00:00
bifrost_compile.h panvk: add support for {s,u}dot_4x8_{sat} 2025-05-22 14:39:32 +00:00
bifrost_isa.py panfrost: Update bifrost_isa.py to support saturate for valhall 2025-05-22 14:39:32 +00:00
bifrost_nir.h pan/bi: Lower removed instructions in algebraic on v11+ 2025-02-19 20:13:19 +00:00
bifrost_nir_algebraic.py pan/bi: Lower ffract in bifrost_nir_algebraic on v11+ 2025-05-15 07:12:44 +00:00
bir.c pan/bi: rework memory barriers 2025-06-13 12:05:02 +02:00
cmdline.c
compiler.h pan/bi: rework memory barriers 2025-06-13 12:05:02 +02:00
gen_disasm.py bi: Move bi_disasm definitions to their own header 2024-06-17 07:31:50 +00:00
IR_pseudo.xml pan/bi: rework memory barriers 2025-06-13 12:05:02 +02:00
meson.build panfrost: use cpp_args instead of c_args for C++ files 2025-05-19 16:34:26 +00:00
nodearray.h
Notes.txt
README.md

Bifrost compiler

Register file

Defined partially in software, partially in hardware.

Blend shaders

R0 - R3: input (color #0) R4 - R7: input (color #1) R8 - R15: general purpose R48: return address

Fragment

Anything live during BLEND must respect blend shader registers.

R0 - R3: preloaded (message #0) R4 - R7: preloaded (message #1) R57 - R63: preloaded (various)

R0 - R15: general purpose (full threads) R48 - R63: general purpose (full threads)

R32 - R47: general purpose (half threads, or v6)