From 3faf33488a5c8767448ae158f78de53d51bcaa6d Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 19 Jun 2019 09:07:13 -0700 Subject: [PATCH] panfrost/decode: Print COMPUTE uniforms as pointers In OpenGL, uniforms generally represent fp32 vec4s (at least in highp mode). In OpenCL, they represent vec2s of 64-bit pointers. Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/panfrost/pandecode/decode.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/panfrost/pandecode/decode.c b/src/gallium/drivers/panfrost/pandecode/decode.c index 7b8b2c8..c402ff9 100644 --- a/src/gallium/drivers/panfrost/pandecode/decode.c +++ b/src/gallium/drivers/panfrost/pandecode/decode.c @@ -1523,7 +1523,9 @@ pandecode_replay_vertex_tiler_postfix_pre(const struct mali_vertex_tiler_postfix pandecode_replay_attribute_meta(job_no, varying_count, p, true, suffix); } - if (p->uniforms) { + bool is_compute = job_type == JOB_TYPE_COMPUTE; + + if (p->uniforms && !is_compute) { int rows = uniform_count, width = 4; size_t sz = rows * width * sizeof(float); @@ -1550,6 +1552,27 @@ pandecode_replay_vertex_tiler_postfix_pre(const struct mali_vertex_tiler_postfix pandecode_indent--; pandecode_log("};\n"); + } else if (p->uniforms) { + int rows = uniform_count * 2; + size_t sz = rows * sizeof(mali_ptr); + + struct pandecode_mapped_memory *uniform_mem = pandecode_find_mapped_gpu_mem_containing(p->uniforms); + pandecode_fetch_gpu_mem(uniform_mem, p->uniforms, sz); + mali_ptr *PANDECODE_PTR_VAR(uniforms, uniform_mem, p->uniforms); + + pandecode_log("mali_ptr uniforms_%d%s[] = {\n", job_no, suffix); + + pandecode_indent++; + + for (int row = 0; row < rows; row++) { + char *a = pointer_as_memory_reference(uniforms[row]); + pandecode_log("%s,\n", a); + free(a); + } + + pandecode_indent--; + pandecode_log("};\n"); + } if (p->uniform_buffers) { -- 2.7.4