mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
broadcom/compiler: needs_quad_helper_invocation enable PER_QUAD TMU access
We take advantage of the needs_quad_helper_invocation information to
only enable the PER_QUAD TMU access on Fragment Shaders when it is needed.
PER_QUAD access is also disabled on stages different to fragment shader.
Being enabled was causing MMU errors when TMU was doing indexed by vertexid
reads on disabled lanes on vertex stage. This problem was exercised by some
shaders from the GTK new GSK_RENDERER=ngl that were accessing a constant buffer
offset[6], but having PER_QUAD enabled on the TMU access by VertexID was
doing hidden incorrect access to not existing vertex 6 and 7 as TMU was
accessing the full quad.
cc: mesa-stable
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28740>
(cherry picked from commit 97f5721bfc)
This commit is contained in:
parent
4c4b655c9e
commit
062a764258
2 changed files with 3 additions and 1 deletions
|
|
@ -2074,7 +2074,7 @@
|
|||
"description": "broadcom/compiler: needs_quad_helper_invocation enable PER_QUAD TMU access",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -656,6 +656,8 @@ ntq_emit_tmu_general(struct v3d_compile *c, nir_intrinsic_instr *instr,
|
|||
*/
|
||||
uint32_t perquad =
|
||||
is_load && !vir_in_nonuniform_control_flow(c) &&
|
||||
c->s->info.stage == MESA_SHADER_FRAGMENT &&
|
||||
c->s->info.fs.needs_quad_helper_invocations &&
|
||||
!c->emitted_discard ?
|
||||
GENERAL_TMU_LOOKUP_PER_QUAD :
|
||||
GENERAL_TMU_LOOKUP_PER_PIXEL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue