nir/lower_tex: Update ->sampler_dim value before calling get_texture_size()
authorBoris Brezillon <boris.brezillon@collabora.com>
Mon, 17 Jun 2019 09:31:51 +0000 (11:31 +0200)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 18 Jun 2019 13:36:07 +0000 (06:36 -0700)
commit0e489fd36061352e79cb4fb90f71f1b901211452
treed7799e98c2004525a52b63ea6054a6c25913d4b1
parent352b1d9c311b1468857cce30191994586520ef46
nir/lower_tex: Update ->sampler_dim value before calling get_texture_size()

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.

Changes in v2:
* Add Jason R-b
* Add a comment explaining why we patch ->sampler_dim at the beginning
  of the lower_rect() func

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/compiler/nir/nir_lower_tex.c