mesa/src/nouveau/codegen
Joan Bruguera 6014a642ae nv50/ir/nir: ignore sampler for TXF/TXQ ops.
Recently, a regression was reported where videos in Firefox had shifted/
glitched colors on certain Kepler hardware. This was bisected to
bf02bffe15, however, the issue already
existed but didn't hit users until TGSI was switched to NIR as default.

The issue was traced to a YUV-to-RGB fragment shader used by Firefox,
which uses three samplers for the Y/U/V components. The Y component was
handled correctly, but the U/V components were bogus, causing the issue.

After analysis, it appears the TXF/TXQ ops. should only handle the texture
(r) but not the sampler (s), see 63b850403c
and 346ce0b988.
Similarly, handleTXQ/handleTXF on nv50_ir_from_tgsi always sets s=0.
Only Kepler was affected because other hardware ignores s at codegen.

Always set s=0 on NIR for TXF/TXQ, to keep TGSI behavior and fix the
regression.

Thanks: Karol Herbst and M Henning for help diagnosing the issue.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7416
Cc: mesa-stable
Suggested-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19453>
2022-11-02 12:29:34 +00:00
..
lib nouveau: const cleanup 2022-09-16 14:23:47 +00:00
meson.build nouveau: Drop C++03 compat code 2022-07-05 13:23:12 +00:00
nv50_ir.cpp
nv50_ir.h nouveau: Drop C++03 compat code 2022-07-05 13:23:12 +00:00
nv50_ir_bb.cpp
nv50_ir_build_util.cpp nv50/ir: Avoid generating splits of splits 2022-08-23 18:29:44 +00:00
nv50_ir_build_util.h
nv50_ir_driver.h nouveau/nv50: disable GLSL IR loop unrolling 2022-06-04 16:11:49 +00:00
nv50_ir_emit_gk110.cpp
nv50_ir_emit_gm107.cpp
nv50_ir_emit_gv100.cpp
nv50_ir_emit_gv100.h
nv50_ir_emit_nv50.cpp
nv50_ir_emit_nvc0.cpp
nv50_ir_from_common.cpp
nv50_ir_from_common.h
nv50_ir_from_nir.cpp nv50/ir/nir: ignore sampler for TXF/TXQ ops. 2022-11-02 12:29:34 +00:00
nv50_ir_from_tgsi.cpp gallium: Rename MUL_ZERO_WINS to LEGACY_MATH_RULES. 2022-06-10 03:26:32 +00:00
nv50_ir_graph.cpp
nv50_ir_graph.h
nv50_ir_inlines.h nv50/ir: add isUnsignedIntType() and isIntType() helpers 2022-09-09 17:32:13 +02:00
nv50_ir_lowering_gm107.cpp
nv50_ir_lowering_gm107.h
nv50_ir_lowering_gv100.cpp
nv50_ir_lowering_gv100.h
nv50_ir_lowering_helper.cpp nv50/ir: handle U8/U16 integers converting to U64 2022-09-09 17:32:30 +02:00
nv50_ir_lowering_helper.h
nv50_ir_lowering_nv50.cpp
nv50_ir_lowering_nvc0.cpp nouveau/codegen: Support bindless texture queries 2022-11-01 15:29:24 +00:00
nv50_ir_lowering_nvc0.h nouveau: Drop C++03 compat code 2022-07-05 13:23:12 +00:00
nv50_ir_peephole.cpp nv50/ir: fix OP_UNION resolving when used for vector values 2022-09-08 11:35:35 +00:00
nv50_ir_print.cpp nouveau: Fix compiler warnings about silly address checks in ir_print. 2022-09-13 18:39:07 +00:00
nv50_ir_ra.cpp nv50/ra: Fix the offset computation for compounds 2022-08-23 18:29:44 +00:00
nv50_ir_sched_gm107.h
nv50_ir_serialize.cpp
nv50_ir_ssa.cpp
nv50_ir_target.cpp
nv50_ir_target.h
nv50_ir_target_gm107.cpp
nv50_ir_target_gm107.h
nv50_ir_target_gv100.cpp
nv50_ir_target_gv100.h
nv50_ir_target_nv50.cpp
nv50_ir_target_nv50.h
nv50_ir_target_nvc0.cpp
nv50_ir_target_nvc0.h
nv50_ir_util.cpp
nv50_ir_util.h nouveau: Drop C++03 compat code 2022-07-05 13:23:12 +00:00