summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-07-31 11:52:52 -0700
committerAlyssa Rosenzweig <[email protected]>2019-08-01 16:15:03 -0700
commit9e66ff3ea9a83d202c5b98f5d953fe21fe9d17eb (patch)
tree919a91d5320c6ec064f3e8c68f5bfdf43c804159
parent2afedfaf9aa161f8e8acbd1e8048a540db5fcfc8 (diff)
pan/decode: Use max varying index as varying buffer count
This allows us to decode asymmetric varyings correctly, which occurs with e.g. gl_FrontFacing. Signed-off-by: Alyssa Rosenzweig <[email protected]>
-rw-r--r--src/panfrost/pandecode/decode.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/panfrost/pandecode/decode.c b/src/panfrost/pandecode/decode.c
index 2df3cbdc986..a44c3732477 100644
--- a/src/panfrost/pandecode/decode.c
+++ b/src/panfrost/pandecode/decode.c
@@ -1253,7 +1253,7 @@ pandecode_attribute_meta(int job_no, int count, const struct mali_vertex_tiler_p
pandecode_indent--;
pandecode_log("};\n");
- return max_index;
+ return count ? (max_index + 1) : 0;
}
static void
@@ -1666,17 +1666,17 @@ pandecode_vertex_tiler_postfix_pre(const struct mali_vertex_tiler_postfix *p,
* pass a zero buffer with the right stride/size set, (or whatever)
* since the GPU will write to it itself */
+ if (p->varying_meta) {
+ varying_count = pandecode_attribute_meta(job_no, varying_count, p, true, suffix);
+ }
+
if (p->varyings) {
attr_mem = pandecode_find_mapped_gpu_mem_containing(p->varyings);
/* Number of descriptors depends on whether there are
* non-internal varyings */
- pandecode_attributes(attr_mem, p->varyings, job_no, suffix, varying_count > 1 ? 4 : 1, true);
- }
-
- if (p->varying_meta) {
- pandecode_attribute_meta(job_no, varying_count, p, true, suffix);
+ pandecode_attributes(attr_mem, p->varyings, job_no, suffix, varying_count, true);
}
bool is_compute = job_type == JOB_TYPE_COMPUTE;