On Mon, 17 Jun 2019 11:00:22 -0500 Jason Ekstrand <ja...@jlekstrand.net> wrote:
> On Mon, Jun 17, 2019 at 5:21 AM Boris Brezillon < > boris.brezil...@collabora.com> wrote: > > > get_texture_size() will create a txs instruction with ->sampler_dim set > > to the original tex->sampler_dim. The condition to call lower_rect() > > only checks the value of ->sampler_dim and whether lower_rect is > > requested or not. This leads to an infinite loop when calling > > nir_lower_tex() with the same options until it returns false. > > > > In order to avoid that, let's move the tex->sampler_dim patching before > > get_texture_size() is called. This way the txs instruction will have > > ->sampler_dim set to GLSL_SAMPLER_DIM_2D and nir_lower_tex() won't try > > to lower it on the subsequent passes. > > > > Signed-off-by: Boris Brezillon <boris.brezil...@collabora.com> > > --- > > Another option would be to not call lower_rect() when the instruction > > is a txs op. > > --- > > src/compiler/nir/nir_lower_tex.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/src/compiler/nir/nir_lower_tex.c > > b/src/compiler/nir/nir_lower_tex.c > > index 73b26dbdb238..1ee961dbb90c 100644 > > --- a/src/compiler/nir/nir_lower_tex.c > > +++ b/src/compiler/nir/nir_lower_tex.c > > @@ -266,6 +266,8 @@ lower_offset(nir_builder *b, nir_tex_instr *tex) > > static void > > lower_rect(nir_builder *b, nir_tex_instr *tex) > > { > > + tex->sampler_dim = GLSL_SAMPLER_DIM_2D; > > > > Mind throwing in a short comment? > > /* Set the sampler_dim to 2D here so that get_texture_size picks up the > right dimensionality */ Will add that comment in v2. > > With that, > > Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> Note that I don't have write permissions to the mesa tree, so I'll need someone to apply the patch once it's considered ready to be merged. > > > > + > > nir_ssa_def *txs = get_texture_size(b, tex); > > nir_ssa_def *scale = nir_frcp(b, txs); > > > > @@ -280,8 +282,6 @@ lower_rect(nir_builder *b, nir_tex_instr *tex) > > &tex->src[i].src, > > nir_src_for_ssa(nir_fmul(b, coords, scale))); > > } > > - > > - tex->sampler_dim = GLSL_SAMPLER_DIM_2D; > > } > > > > static void > > -- > > 2.20.1 > > > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev