[Mesa-dev] [PATCH RFC 1/2] nir/lower_tex: Actually report when projector lowering happened
Boris Brezillon
boris.brezillon at collabora.com
Mon Jun 17 10:21:32 UTC 2019
The code considers that projector lowering was done even if it's not
really the case. Change the project_src() prototype to return a bool
encoding whether projector lowering happened or not and update the
progress var accordingly in nir_lower_tex_block().
This prevents an infinite loop when doing:
do progress = nir_lower_tex(); while (progress);
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
---
src/compiler/nir/nir_lower_tex.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/compiler/nir/nir_lower_tex.c b/src/compiler/nir/nir_lower_tex.c
index c29581d9b048..73b26dbdb238 100644
--- a/src/compiler/nir/nir_lower_tex.c
+++ b/src/compiler/nir/nir_lower_tex.c
@@ -39,13 +39,13 @@
#include "nir_builder.h"
#include "nir_format_convert.h"
-static void
+static bool
project_src(nir_builder *b, nir_tex_instr *tex)
{
/* Find the projector in the srcs list, if present. */
int proj_index = nir_tex_instr_src_index(tex, nir_tex_src_projector);
if (proj_index < 0)
- return;
+ return false;
b->cursor = nir_before_instr(&tex->instr);
@@ -100,6 +100,7 @@ project_src(nir_builder *b, nir_tex_instr *tex)
}
nir_tex_instr_remove_src(tex, proj_index);
+ return true;
}
static nir_ssa_def *
@@ -1049,8 +1050,7 @@ nir_lower_tex_block(nir_block *block, nir_builder *b,
* as clamping happens *after* projection:
*/
if (lower_txp || sat_mask) {
- project_src(b, tex);
- progress = true;
+ progress |= project_src(b, tex);
}
if ((tex->op == nir_texop_txf && options->lower_txf_offset) ||
--
2.20.1
More information about the mesa-dev
mailing list