nir: Take a nir_def * in nir_tex_instr_add_src()

NIR bits were hand-typed.  Driver updates done through the following
semantic patch:

    @@
    expression T, ST, D;
    @@

    -nir_tex_instr_add_src(T, ST, nir_src_for_ssa(D));
    +nir_tex_instr_add_src(T, ST, D);

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24729>
This commit is contained in:
Faith Ekstrand
2023-08-16 10:44:46 -05:00
committed by Marge Bot
parent 6d168b93bc
commit 298a3eebd8
15 changed files with 33 additions and 35 deletions

View File

@@ -394,7 +394,7 @@ move_tex_coords(struct move_tex_coords_state *state, nir_function_impl *impl, ni
nir_tex_instr_remove_src(tex, nir_tex_instr_src_index(tex, nir_tex_src_coord)); nir_tex_instr_remove_src(tex, nir_tex_instr_src_index(tex, nir_tex_src_coord));
tex->coord_components = 0; tex->coord_components = 0;
nir_tex_instr_add_src(tex, nir_tex_src_backend1, nir_src_for_ssa(linear_vgpr)); nir_tex_instr_add_src(tex, nir_tex_src_backend1, linear_vgpr);
int offset_src = nir_tex_instr_src_index(tex, nir_tex_src_offset); int offset_src = nir_tex_instr_src_index(tex, nir_tex_src_offset);
if (offset_src >= 0) /* Workaround requirement in nir_tex_instr_src_size(). */ if (offset_src >= 0) /* Workaround requirement in nir_tex_instr_src_size(). */

View File

@@ -272,7 +272,7 @@ lower_buffer_texture(nir_builder *b, nir_tex_instr *tex)
nir_def *coord2d = coords_for_buffer_texture(b, coord); nir_def *coord2d = coords_for_buffer_texture(b, coord);
nir_instr_remove(&tex->instr); nir_instr_remove(&tex->instr);
nir_builder_instr_insert(b, &tex->instr); nir_builder_instr_insert(b, &tex->instr);
nir_tex_instr_add_src(tex, nir_tex_src_backend1, nir_src_for_ssa(coord2d)); nir_tex_instr_add_src(tex, nir_tex_src_backend1, coord2d);
nir_block *else_block = nir_cursor_current_block(b->cursor); nir_block *else_block = nir_cursor_current_block(b->cursor);
nir_pop_if(b, nif); nir_pop_if(b, nif);
@@ -339,7 +339,7 @@ lower_regular_texture(nir_builder *b, nir_instr *instr, UNUSED void *data)
assert(src->num_components == 1); assert(src->num_components == 1);
src = nir_vec2(b, src, nir_imm_intN_t(b, 0, src->bit_size)); src = nir_vec2(b, src, nir_imm_intN_t(b, 0, src->bit_size));
nir_tex_instr_add_src(tex, other_srcs[i], nir_src_for_ssa(src)); nir_tex_instr_add_src(tex, other_srcs[i], src);
} }
tex->sampler_dim = GLSL_SAMPLER_DIM_2D; tex->sampler_dim = GLSL_SAMPLER_DIM_2D;
@@ -386,7 +386,7 @@ lower_regular_texture(nir_builder *b, nir_instr *instr, UNUSED void *data)
coord = nir_vector_insert_imm(b, coord, sample_array, end); coord = nir_vector_insert_imm(b, coord, sample_array, end);
} }
nir_tex_instr_add_src(tex, nir_tex_src_backend1, nir_src_for_ssa(coord)); nir_tex_instr_add_src(tex, nir_tex_src_backend1, coord);
/* Furthermore, if there is an offset vector, it must be packed */ /* Furthermore, if there is an offset vector, it must be packed */
nir_def *offset = nir_steal_tex_src(tex, nir_tex_src_offset); nir_def *offset = nir_steal_tex_src(tex, nir_tex_src_offset);
@@ -404,7 +404,7 @@ lower_regular_texture(nir_builder *b, nir_instr *instr, UNUSED void *data)
packed = shifted; packed = shifted;
} }
nir_tex_instr_add_src(tex, nir_tex_src_backend2, nir_src_for_ssa(packed)); nir_tex_instr_add_src(tex, nir_tex_src_backend2, packed);
} }
return true; return true;
@@ -435,8 +435,7 @@ lower_sampler_bias(nir_builder *b, nir_instr *instr, UNUSED void *data)
switch (tex->op) { switch (tex->op) {
case nir_texop_tex: { case nir_texop_tex: {
tex->op = nir_texop_txb; tex->op = nir_texop_txb;
nir_tex_instr_add_src(tex, nir_tex_src_bias, nir_tex_instr_add_src(tex, nir_tex_src_bias, bias_for_tex(b, tex));
nir_src_for_ssa(bias_for_tex(b, tex)));
return true; return true;
} }
@@ -451,8 +450,7 @@ lower_sampler_bias(nir_builder *b, nir_instr *instr, UNUSED void *data)
if (orig->bit_size != 16) if (orig->bit_size != 16)
orig = nir_f2f16(b, orig); orig = nir_f2f16(b, orig);
nir_tex_instr_add_src( nir_tex_instr_add_src(tex, src, nir_fadd(b, orig, bias_for_tex(b, tex)));
tex, src, nir_src_for_ssa(nir_fadd(b, orig, bias_for_tex(b, tex))));
return true; return true;
} }
@@ -470,7 +468,7 @@ lower_sampler_bias(nir_builder *b, nir_instr *instr, UNUSED void *data)
assert(orig != NULL && "invalid"); assert(orig != NULL && "invalid");
nir_def *scaled = nir_fmul(b, nir_f2f32(b, orig), scale); nir_def *scaled = nir_fmul(b, nir_f2f32(b, orig), scale);
nir_tex_instr_add_src(tex, src[s], nir_src_for_ssa(scaled)); nir_tex_instr_add_src(tex, src[s], scaled);
} }
return true; return true;

View File

@@ -54,7 +54,7 @@ v3d_nir_lower_txf_ms_instr(nir_builder *b, nir_instr *in_instr, void *data)
else else
coord = nir_vec2(b, x, y); coord = nir_vec2(b, x, y);
nir_tex_instr_add_src(instr, nir_tex_src_coord, nir_src_for_ssa(coord)); nir_tex_instr_add_src(instr, nir_tex_src_coord, coord);
instr->op = nir_texop_txf; instr->op = nir_texop_txf;
instr->sampler_dim = GLSL_SAMPLER_DIM_2D; instr->sampler_dim = GLSL_SAMPLER_DIM_2D;

View File

@@ -783,7 +783,7 @@ nir_tex_instr_create(nir_shader *shader, unsigned num_srcs)
void void
nir_tex_instr_add_src(nir_tex_instr *tex, nir_tex_instr_add_src(nir_tex_instr *tex,
nir_tex_src_type src_type, nir_tex_src_type src_type,
nir_src src) nir_def *src)
{ {
nir_tex_src *new_srcs = gc_zalloc(gc_get_context(tex), nir_tex_src, tex->num_srcs + 1); nir_tex_src *new_srcs = gc_zalloc(gc_get_context(tex), nir_tex_src, tex->num_srcs + 1);
@@ -797,7 +797,8 @@ nir_tex_instr_add_src(nir_tex_instr *tex,
tex->src = new_srcs; tex->src = new_srcs;
tex->src[tex->num_srcs].src_type = src_type; tex->src[tex->num_srcs].src_type = src_type;
nir_instr_rewrite_src(&tex->instr, &tex->src[tex->num_srcs].src, src); nir_instr_rewrite_src(&tex->instr, &tex->src[tex->num_srcs].src,
nir_src_for_ssa(src));
tex->num_srcs++; tex->num_srcs++;
} }

View File

@@ -2387,7 +2387,7 @@ nir_tex_instr_src_index(const nir_tex_instr *instr, nir_tex_src_type type)
/** Adds a source to a texture instruction */ /** Adds a source to a texture instruction */
void nir_tex_instr_add_src(nir_tex_instr *tex, void nir_tex_instr_add_src(nir_tex_instr *tex,
nir_tex_src_type src_type, nir_tex_src_type src_type,
nir_src src); nir_def *src);
/** Removes a source from a texture instruction */ /** Removes a source from a texture instruction */
void nir_tex_instr_remove_src(nir_tex_instr *tex, unsigned src_idx); void nir_tex_instr_remove_src(nir_tex_instr *tex, unsigned src_idx);

View File

@@ -271,7 +271,7 @@ lower_lod(nir_builder *b, nir_tex_instr *tex, nir_def *lod)
if (min_lod) if (min_lod)
lod = nir_fmax(b, lod, min_lod); lod = nir_fmax(b, lod, min_lod);
nir_tex_instr_add_src(tex, nir_tex_src_lod, nir_src_for_ssa(lod)); nir_tex_instr_add_src(tex, nir_tex_src_lod, lod);
tex->op = nir_texop_txl; tex->op = nir_texop_txl;
} }
@@ -649,7 +649,7 @@ replace_gradient_with_lod(nir_builder *b, nir_def *lod, nir_tex_instr *tex)
if (min_lod) if (min_lod)
lod = nir_fmax(b, lod, min_lod); lod = nir_fmax(b, lod, min_lod);
nir_tex_instr_add_src(tex, nir_tex_src_lod, nir_src_for_ssa(lod)); nir_tex_instr_add_src(tex, nir_tex_src_lod, lod);
tex->op = nir_texop_txl; tex->op = nir_texop_txl;
} }
@@ -1647,7 +1647,7 @@ nir_lower_tex_block(nir_block *block, nir_builder *b,
(tex->op == nir_texop_txf || tex->op == nir_texop_txs || (tex->op == nir_texop_txf || tex->op == nir_texop_txs ||
tex->op == nir_texop_txl || tex->op == nir_texop_query_levels)) { tex->op == nir_texop_txl || tex->op == nir_texop_query_levels)) {
b->cursor = nir_before_instr(&tex->instr); b->cursor = nir_before_instr(&tex->instr);
nir_tex_instr_add_src(tex, nir_tex_src_lod, nir_src_for_ssa(nir_imm_int(b, 0))); nir_tex_instr_add_src(tex, nir_tex_src_lod, nir_imm_int(b, 0));
progress = true; progress = true;
continue; continue;
} }

View File

@@ -551,8 +551,8 @@ nir_opt_preamble(nir_shader *shader, const nir_opt_preamble_options *options,
nir_def *zero = nir_def *zero =
nir_imm_zero(b, tex->coord_components - tex->is_array, 32); nir_imm_zero(b, tex->coord_components - tex->is_array, 32);
nir_tex_instr_add_src(tex, nir_tex_src_ddx, nir_src_for_ssa(zero)); nir_tex_instr_add_src(tex, nir_tex_src_ddx, zero);
nir_tex_instr_add_src(tex, nir_tex_src_ddy, nir_src_for_ssa(zero)); nir_tex_instr_add_src(tex, nir_tex_src_ddy, zero);
tex->op = nir_texop_txd; tex->op = nir_texop_txd;
b->cursor = nir_after_instr(clone); b->cursor = nir_after_instr(clone);

View File

@@ -3635,9 +3635,11 @@ nir_to_tgsi_lower_tex_instr(nir_builder *b, nir_instr *instr, void *data)
s.channels[i] = s.channels[0]; s.channels[i] = s.channels[0];
} }
nir_tex_instr_add_src(tex, nir_tex_src_backend1, nir_src_for_ssa(nir_vec_scalars(b, s.channels, MIN2(s.i, 4)))); nir_tex_instr_add_src(tex, nir_tex_src_backend1,
nir_vec_scalars(b, s.channels, MIN2(s.i, 4)));
if (s.i > 4) if (s.i > 4)
nir_tex_instr_add_src(tex, nir_tex_src_backend2, nir_src_for_ssa(nir_vec_scalars(b, &s.channels[4], s.i - 4))); nir_tex_instr_add_src(tex, nir_tex_src_backend2,
nir_vec_scalars(b, &s.channels[4], s.i - 4));
return true; return true;
} }

View File

@@ -109,7 +109,7 @@ lower(nir_builder *b, nir_instr *instr, void *data)
*internal_bindless = true; *internal_bindless = true;
nir_tex_instr_add_src(tex, nir_tex_src_texture_handle, nir_tex_instr_add_src(tex, nir_tex_src_texture_handle,
nir_src_for_ssa(index_to_handle(b, index))); index_to_handle(b, index));
} }
return false; return false;

View File

@@ -149,7 +149,7 @@ lima_nir_lower_txp_instr(nir_builder *b, nir_instr *instr,
nir_tex_instr_remove_src(tex, nir_tex_instr_src_index(tex, nir_tex_src_coord)); nir_tex_instr_remove_src(tex, nir_tex_instr_src_index(tex, nir_tex_src_coord));
nir_tex_instr_remove_src(tex, nir_tex_instr_src_index(tex, nir_tex_src_projector)); nir_tex_instr_remove_src(tex, nir_tex_instr_src_index(tex, nir_tex_src_projector));
nir_tex_instr_add_src(tex, nir_tex_src_backend1, nir_src_for_ssa(combined)); nir_tex_instr_add_src(tex, nir_tex_src_backend1, combined);
return true; return true;
} }

View File

@@ -1151,8 +1151,8 @@ LowerTexToBackend::finalize(nir_tex_instr *tex,
nir_def *backend1, nir_def *backend1,
nir_def *backend2) nir_def *backend2)
{ {
nir_tex_instr_add_src(tex, nir_tex_src_backend1, nir_src_for_ssa(backend1)); nir_tex_instr_add_src(tex, nir_tex_src_backend1, backend1);
nir_tex_instr_add_src(tex, nir_tex_src_backend2, nir_src_for_ssa(backend2)); nir_tex_instr_add_src(tex, nir_tex_src_backend2, backend2);
nir_tex_instr_remove_src(tex, nir_tex_src_coord); nir_tex_instr_remove_src(tex, nir_tex_src_coord);
static const nir_tex_src_type cleanup[] = {nir_tex_src_coord, static const nir_tex_src_type cleanup[] = {nir_tex_src_coord,

View File

@@ -190,8 +190,8 @@ lower_txl_txf_array_or_cube(nir_builder *b, nir_tex_instr *tex)
nir_tex_instr_remove_src(tex, bias_idx); nir_tex_instr_remove_src(tex, bias_idx);
if (min_lod_idx >= 0) if (min_lod_idx >= 0)
nir_tex_instr_remove_src(tex, min_lod_idx); nir_tex_instr_remove_src(tex, min_lod_idx);
nir_tex_instr_add_src(tex, nir_tex_src_ddx, nir_src_for_ssa(grad)); nir_tex_instr_add_src(tex, nir_tex_src_ddx, grad);
nir_tex_instr_add_src(tex, nir_tex_src_ddy, nir_src_for_ssa(grad)); nir_tex_instr_add_src(tex, nir_tex_src_ddy, grad);
tex->op = nir_texop_txd; tex->op = nir_texop_txd;
return true; return true;

View File

@@ -325,8 +325,8 @@ load_texel(nir_builder *b, nir_tex_instr *tex, wrap_lower_param_t *params)
texcoord = nir_f2i32(b, texcoord); texcoord = nir_f2i32(b, texcoord);
nir_tex_instr *load = create_txf_from_tex(b, tex); nir_tex_instr *load = create_txf_from_tex(b, tex);
nir_tex_instr_add_src(load, nir_tex_src_lod, nir_src_for_ssa(params->lod)); nir_tex_instr_add_src(load, nir_tex_src_lod, params->lod);
nir_tex_instr_add_src(load, nir_tex_src_coord, nir_src_for_ssa(texcoord)); nir_tex_instr_add_src(load, nir_tex_src_coord, texcoord);
b->cursor = nir_after_instr(&load->instr); b->cursor = nir_after_instr(&load->instr);
return &load->def; return &load->def;
} }

View File

@@ -396,8 +396,7 @@ lower_tex(nir_builder *b, nir_tex_instr *tex,
tex->src[texture_src_idx].src_type = nir_tex_src_texture_handle; tex->src[texture_src_idx].src_type = nir_tex_src_texture_handle;
if (sampler_src_idx < 0) { if (sampler_src_idx < 0) {
nir_tex_instr_add_src(tex, nir_tex_src_sampler_handle, nir_tex_instr_add_src(tex, nir_tex_src_sampler_handle, combined_handle);
nir_src_for_ssa(combined_handle));
} else { } else {
nir_instr_rewrite_src_ssa(&tex->instr, nir_instr_rewrite_src_ssa(&tex->instr,
&tex->src[sampler_src_idx].src, &tex->src[sampler_src_idx].src,

View File

@@ -434,8 +434,7 @@ lower_tex(nir_builder *b, nir_tex_instr *tex,
bind_layout->sampler_idx + index_imm; bind_layout->sampler_idx + index_imm;
if (index_ssa != NULL) { if (index_ssa != NULL) {
nir_tex_instr_add_src(tex, nir_tex_src_sampler_offset, nir_tex_instr_add_src(tex, nir_tex_src_sampler_offset, index_ssa);
nir_src_for_ssa(index_ssa));
} }
progress = true; progress = true;
} }
@@ -456,8 +455,7 @@ lower_tex(nir_builder *b, nir_tex_instr *tex,
ctx->layout->sets[set].tex_offset + bind_layout->tex_idx + index_imm; ctx->layout->sets[set].tex_offset + bind_layout->tex_idx + index_imm;
if (index_ssa != NULL) { if (index_ssa != NULL) {
nir_tex_instr_add_src(tex, nir_tex_src_texture_offset, nir_tex_instr_add_src(tex, nir_tex_src_texture_offset, index_ssa);
nir_src_for_ssa(index_ssa));
} }
progress = true; progress = true;
} }