aboutsummaryrefslogtreecommitdiffstats
path: root/src/panfrost
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2020-03-20 12:38:53 -0400
committerMarge Bot <[email protected]>2020-03-22 03:32:35 +0000
commit9213b2520cdafefbb83f8f495281b0db419f85a8 (patch)
treebb060a8638bc394f8f6b888df40f31d639f98483 /src/panfrost
parentc57ac9d1368e83ce001be4439c73473529e48135 (diff)
pan/bi: Add store_channels property
It can't be inferred from the usual writemask since stores don't write to a register destination. Signed-off-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4276>
Diffstat (limited to 'src/panfrost')
-rw-r--r--src/panfrost/bifrost/bi_print.c2
-rw-r--r--src/panfrost/bifrost/bifrost_compile.c3
-rw-r--r--src/panfrost/bifrost/compiler.h3
3 files changed, 7 insertions, 1 deletions
diff --git a/src/panfrost/bifrost/bi_print.c b/src/panfrost/bifrost/bi_print.c
index 2a03b3cab5d..f06cff849d3 100644
--- a/src/panfrost/bifrost/bi_print.c
+++ b/src/panfrost/bifrost/bi_print.c
@@ -345,6 +345,8 @@ bi_print_instruction(bi_instruction *ins, FILE *fp)
fprintf(fp, ".%s", bi_cond_name(ins->csel_cond));
else if (ins->type == BI_BLEND)
fprintf(fp, ".loc%u", ins->blend_location);
+ else if (ins->type == BI_STORE || ins->type == BI_STORE_VAR)
+ fprintf(fp, ".v%u", ins->store_channels);
if (ins->dest)
bi_print_alu_type(ins->dest_type, fp);
diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c
index 25bb4ab9c58..3d7bbfbba63 100644
--- a/src/panfrost/bifrost/bifrost_compile.c
+++ b/src/panfrost/bifrost/bifrost_compile.c
@@ -194,7 +194,8 @@ bi_emit_st_vary(bi_context *ctx, nir_intrinsic_instr *instr)
.swizzle = {
{ 0, 1, 2, 3 },
{ 0 }, { 1 }, { 2}
- }
+ },
+ .store_channels = 4, /* TODO: WRITEMASK */
};
bi_emit(ctx, address);
diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h
index ee868f75d92..b09bd536729 100644
--- a/src/panfrost/bifrost/compiler.h
+++ b/src/panfrost/bifrost/compiler.h
@@ -261,6 +261,9 @@ typedef struct {
/* For BLEND -- the location 0-7 */
unsigned blend_location;
+
+ /* For STORE, STORE_VAR -- channel count */
+ unsigned store_channels;
};
} bi_instruction;