freedreno/ir3: disable texture prefetch for 1d array textures
Prefetch only supports the basic 2D texture case, checking is_array is
needed because 1d array textures pass the coord num_components==2 test.
Fixes: 2a0d45ae
("freedreno/ir3: Add a NIR pass to select tex instructions eligible for pre-fetch")
Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
ef9635d0bc
commit
0f5743429c
|
@ -99,13 +99,8 @@ coord_offset(nir_ssa_def *ssa)
|
|||
int
|
||||
ir3_nir_coord_offset(nir_ssa_def *ssa)
|
||||
{
|
||||
/* only prefetch for simple 2d tex fetch case. Note this check only
|
||||
* applies to the tex coord src itself, and not in the case where
|
||||
* we recursively chase a vecN's src.
|
||||
*/
|
||||
if (ssa->num_components != 2)
|
||||
return -1;
|
||||
|
||||
assert (ssa->num_components == 2);
|
||||
return coord_offset(ssa);
|
||||
}
|
||||
|
||||
|
@ -140,6 +135,10 @@ lower_tex_prefetch_block(nir_block *block)
|
|||
has_src(tex, nir_tex_src_sampler_offset))
|
||||
continue;
|
||||
|
||||
/* only prefetch for simple 2d tex fetch case */
|
||||
if (tex->sampler_dim != GLSL_SAMPLER_DIM_2D || tex->is_array)
|
||||
continue;
|
||||
|
||||
int idx = nir_tex_instr_src_index(tex, nir_tex_src_coord);
|
||||
/* First source should be the sampling coordinate. */
|
||||
nir_tex_src *coord = &tex->src[idx];
|
||||
|
|
Loading…
Reference in New Issue