summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/lima/ir/pp/ppir.h
diff options
context:
space:
mode:
authorErico Nunes <nunes.erico@gmail.com>2019-12-20 19:20:58 +0100
committerMarge Bot <eric+marge@anholt.net>2019-12-20 19:39:55 +0000
commitd56710ab82a0803b5a66c6c489a356de28779ffa (patch)
tree6282047bef9af118e4ca3506add736f3a231efe9 /src/gallium/drivers/lima/ir/pp/ppir.h
parent1b0743dbb6f925921e52bc9ecdde6a8bf755d162 (diff)
downloadmesa-d56710ab82a0803b5a66c6c489a356de28779ffa.tar.gz
lima/ppir: fix lod bias src
ppir has some code that operates on all ppir_src variables, and for that uses ppir_node_get_src. lod bias support introduced a separate ppir_src that is inaccessible by that function, causing it to be missed by the compiler in some routines. Ultimately this caused, in some cases, a bug in const lowering: .../pp/lower.c:42: ppir_lower_const: Assertion `src != NULL' failed. This fix moves the ppir_srcs in ppir_load_texture_node together so they don't get missed. Fixes: 721d82cf061 lima/ppir: add lod-bias support Signed-off-by: Erico Nunes <nunes.erico@gmail.com> Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3185> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3185>
Diffstat (limited to 'src/gallium/drivers/lima/ir/pp/ppir.h')
-rw-r--r--src/gallium/drivers/lima/ir/pp/ppir.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/gallium/drivers/lima/ir/pp/ppir.h b/src/gallium/drivers/lima/ir/pp/ppir.h
index 5895a696db8..6b550a3c9d1 100644
--- a/src/gallium/drivers/lima/ir/pp/ppir.h
+++ b/src/gallium/drivers/lima/ir/pp/ppir.h
@@ -270,12 +270,13 @@ typedef struct {
typedef struct {
ppir_node node;
ppir_dest dest;
- ppir_src src_coords; /* not to be used after lowering */
+ ppir_src src[2]; /* src[0] temporarily stores src_coords,
+ not to be used after lowering */
+ int num_src;
int sampler;
int sampler_dim;
bool lod_bias_en;
bool explicit_lod;
- ppir_src lod_bias;
} ppir_load_texture_node;
typedef struct {
@@ -475,6 +476,7 @@ static inline int ppir_node_get_src_num(ppir_node *node)
case ppir_node_type_load:
return ppir_node_to_load(node)->num_src;
case ppir_node_type_load_texture:
+ return ppir_node_to_load_texture(node)->num_src;
case ppir_node_type_store:
return 1;
default:
@@ -495,7 +497,7 @@ static inline ppir_src *ppir_node_get_src(ppir_node *node, int idx)
case ppir_node_type_branch:
return &ppir_node_to_branch(node)->src[idx];
case ppir_node_type_load_texture:
- return &ppir_node_to_load_texture(node)->src_coords;
+ return &ppir_node_to_load_texture(node)->src[idx];
case ppir_node_type_load:
return &ppir_node_to_load(node)->src;
case ppir_node_type_store: