mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-28 07:48:20 +02:00
Mali only supports perspective-correct varying interpolation in hardware, so we have to emulate noperspective with lowering in both the VS and FS. Both vulkan and opengl allow mismatched interpolation qualifiers between stages. Because we need all varyings that are noperspective in the FS to be lowered in the VS, we cannot rely on the interpolation qualifiers in the VS. Loading the set of noperspective varyings as a sysval allows the implementation to pass them as a compile-time constant when known statically, or a runtime push constant when not. Passing noperspective varyings dynamically has a performance cost with unnecessary branches and fmuls. This sysval is not hooked up yet in either panfrost or panvk, so shader compilation will fail. Signed-off-by: Benjamin Lee <benjamin.lee@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32127> |
||
|---|---|---|
| .. | ||
| bifrost | ||
| test | ||
| valhall | ||
| bi_builder.h.py | ||
| bi_helper_invocations.c | ||
| bi_layout.c | ||
| bi_liveness.c | ||
| bi_lower_divergent_indirects.c | ||
| bi_lower_swizzle.c | ||
| bi_opcodes.c.py | ||
| bi_opcodes.h.py | ||
| bi_opt_constant_fold.c | ||
| bi_opt_copy_prop.c | ||
| bi_opt_cse.c | ||
| bi_opt_dce.c | ||
| bi_opt_dual_tex.c | ||
| bi_opt_mod_props.c | ||
| bi_opt_push_ubo.c | ||
| bi_packer.c.py | ||
| bi_pressure_schedule.c | ||
| bi_print.c | ||
| bi_print_common.c | ||
| bi_print_common.h | ||
| bi_printer.c.py | ||
| bi_quirks.h | ||
| bi_ra.c | ||
| bi_test.h | ||
| bi_validate.c | ||
| bifrost.h | ||
| bifrost_compile.c | ||
| bifrost_compile.h | ||
| bifrost_isa.py | ||
| bifrost_nir.h | ||
| bifrost_nir_algebraic.py | ||
| bir.c | ||
| cmdline.c | ||
| compiler.h | ||
| gen_disasm.py | ||
| IR_pseudo.xml | ||
| meson.build | ||
| 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)