On Mon, 2016-12-05 at 20:38 -0800, Kenneth Graunke wrote: > On Thursday, December 1, 2016 8:53:16 AM PST Iago Toral Quiroga > wrote: > > > > This was written specifically for RECT samplers. Make it more > > generic so > > we can call this from the gradient lowerings too. > > --- > > src/compiler/nir/nir_lower_tex.c | 15 ++++++++++----- > > 1 file changed, 10 insertions(+), 5 deletions(-) > > > > diff --git a/src/compiler/nir/nir_lower_tex.c > > b/src/compiler/nir/nir_lower_tex.c > > index 0efd443..ccca59b 100644 > > --- a/src/compiler/nir/nir_lower_tex.c > > +++ b/src/compiler/nir/nir_lower_tex.c > > @@ -154,22 +154,27 @@ get_texture_size(nir_builder *b, > > nir_tex_instr *tex) > > { > > b->cursor = nir_before_instr(&tex->instr); > > > > - /* RECT textures should not be array: */ > > - assert(!tex->is_array); > > - > > nir_tex_instr *txs; > > > > txs = nir_tex_instr_create(b->shader, 1); > > txs->op = nir_texop_txs; > > - txs->sampler_dim = GLSL_SAMPLER_DIM_RECT; > > + txs->sampler_dim = tex->sampler_dim; > > + txs->is_array = tex->is_array; > > + txs->is_shadow = tex->is_shadow; > > + txs->is_new_style_shadow = tex->is_new_style_shadow; > > txs->texture_index = tex->texture_index; > > + txs->texture = (nir_deref_var *) > > + nir_copy_deref(txs, &tex->texture->deref); > > + txs->sampler_index = tex->sampler_index; > > + txs->sampler = (nir_deref_var *) > > + nir_copy_deref(txs, &tex->sampler->deref); > > txs->dest_type = nir_type_int; > > > > /* only single src, the lod: */ > > txs->src[0].src = nir_src_for_ssa(nir_imm_int(b, 0)); > > txs->src[0].src_type = nir_tex_src_lod; > > > > - nir_ssa_dest_init(&txs->instr, &txs->dest, 2, 32, NULL); > > + nir_ssa_dest_init(&txs->instr, &txs->dest, tex- > > >coord_components, 32, NULL); > Hrm. Won't this make it start returning 3 for array textures? It > looks > like you want 3 for 3D, 1 for 1D, and 2 for everything else... > > I guess you swizzle away the unnecessary components, but another > option > would be to just pass in the number of components you wanted, rather > than emitting moves to scrap them.
Right, we end up only taking the first two components of the result, but yeah, I can try this too. Thanks! Iago _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev