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 <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-06-19 09:07:13 -07:00
parent 0021fae7f8
commit 3faf33488a
1 changed files with 24 additions and 1 deletions

View File

@ -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) {