mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 12:20:10 +01:00
lima/ppir: don't assume that load coords gets value from register
It can load value from varying directly as well. Also load_regs is the only op that has a source, so add src_num field to load node and set it accordingly. Reviewed-by: Erico Nunes <nunes.erico@gmail.com> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
This commit is contained in:
parent
bd77d19300
commit
e23fd2c375
3 changed files with 13 additions and 9 deletions
|
|
@ -94,14 +94,15 @@ static void ppir_codegen_encode_varying(ppir_node *node, void *code)
|
|||
f->reg.dest = index >> 2;
|
||||
f->reg.mask = dest->write_mask << (index & 0x3);
|
||||
|
||||
f->reg.source_type = 1;
|
||||
|
||||
ppir_src *src = &load->src;
|
||||
index = ppir_target_get_src_reg_index(src);
|
||||
f->reg.source = index >> 2;
|
||||
f->reg.negate = src->negate;
|
||||
f->reg.absolute = src->absolute;
|
||||
f->reg.swizzle = encode_swizzle(src->swizzle, index & 0x3, 0);
|
||||
if (load->num_src) {
|
||||
f->reg.source_type = 1;
|
||||
ppir_src *src = &load->src;
|
||||
index = ppir_target_get_src_reg_index(src);
|
||||
f->reg.source = index >> 2;
|
||||
f->reg.negate = src->negate;
|
||||
f->reg.absolute = src->absolute;
|
||||
f->reg.swizzle = encode_swizzle(src->swizzle, index & 0x3, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ static bool ppir_lower_texture(ppir_block *block, ppir_node *node)
|
|||
load->dest.pipeline = ppir_pipeline_reg_discard;
|
||||
|
||||
load->src = load_tex->src_coords;
|
||||
load->num_src = 1;
|
||||
|
||||
ppir_node_foreach_pred_safe(node, dep) {
|
||||
ppir_node *pred = dep->pred;
|
||||
|
|
|
|||
|
|
@ -248,6 +248,7 @@ typedef struct {
|
|||
int num_components;
|
||||
ppir_dest dest;
|
||||
ppir_src src;
|
||||
int num_src;
|
||||
} ppir_load_node;
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -457,8 +458,9 @@ static inline int ppir_node_get_src_num(ppir_node *node)
|
|||
return ppir_node_to_alu(node)->num_src;
|
||||
case ppir_node_type_branch:
|
||||
return ppir_node_to_branch(node)->num_src;
|
||||
case ppir_node_type_load_texture:
|
||||
case ppir_node_type_load:
|
||||
return ppir_node_to_load(node)->num_src;
|
||||
case ppir_node_type_load_texture:
|
||||
case ppir_node_type_store:
|
||||
return 1;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue