Commit cfddc4ce authored by Alyssa Rosenzweig's avatar Alyssa Rosenzweig 💜

Replay soft replay jobs

parent e812cc3d
...@@ -465,8 +465,6 @@ struct mali_jd_replay_payload { ...@@ -465,8 +465,6 @@ struct mali_jd_replay_payload {
* Core requirements for the fragment job chain * Core requirements for the fragment job chain
*/ */
mali_jd_core_req fragment_core_req; mali_jd_core_req fragment_core_req;
u8 padding[4];
}; };
/** /**
......
...@@ -865,6 +865,46 @@ void panwrap_replay_jc(mali_ptr jc_gpu_va) ...@@ -865,6 +865,46 @@ void panwrap_replay_jc(mali_ptr jc_gpu_va)
} while ((jc_gpu_va = ((u64) (uintptr_t) h->next_job) & (((u64)1<<55) - 1))); } while ((jc_gpu_va = ((u64) (uintptr_t) h->next_job) & (((u64)1<<55) - 1)));
} }
void panwrap_replay_soft_replay_payload(mali_ptr jc_gpu_va, int job_no)
{
struct mali_jd_replay_payload *v;
struct panwrap_mapped_memory *mem =
panwrap_find_mapped_gpu_mem_containing(jc_gpu_va);
v = PANWRAP_PTR(mem, jc_gpu_va, typeof(*v));
panwrap_log("struct mali_jd_replay_payload soft_replay_payload_%d = {\n", job_no);
panwrap_indent++;
MEMORY_PROP(tiler_jc_list);
MEMORY_PROP(fragment_jc);
MEMORY_PROP(tiler_heap_free);
panwrap_prop("fragment_hierarchy_mask = 0x%" PRIx32, v->fragment_hierarchy_mask);
panwrap_prop("tiler_hierarchy_mask = 0x%" PRIx32, v->tiler_hierarchy_mask);
panwrap_prop("hierarchy_default_weight = 0x%" PRIx32, v->hierarchy_default_weight);
panwrap_log(".tiler_core_req = ");
if (v->tiler_core_req)
ioctl_log_decoded_jd_core_req(v->tiler_core_req);
else
panwrap_log_cont("0");
panwrap_log_cont(",\n");
panwrap_log(".fragment_core_req = ");
if (v->fragment_core_req)
ioctl_log_decoded_jd_core_req(v->fragment_core_req);
else
panwrap_log_cont("0");
panwrap_log_cont(",\n");
panwrap_indent--;
panwrap_log("};\n");
TOUCH(mem, jc_gpu_va, *v, "soft_replay_payload", job_no);
}
void panwrap_replay_soft_replay(mali_ptr jc_gpu_va) void panwrap_replay_soft_replay(mali_ptr jc_gpu_va)
{ {
struct mali_jd_replay_jc *v; struct mali_jd_replay_jc *v;
...@@ -885,6 +925,8 @@ void panwrap_replay_soft_replay(mali_ptr jc_gpu_va) ...@@ -885,6 +925,8 @@ void panwrap_replay_soft_replay(mali_ptr jc_gpu_va)
panwrap_indent--; panwrap_indent--;
panwrap_log("};\n"); panwrap_log("};\n");
panwrap_replay_soft_replay_payload(jc_gpu_va + sizeof(struct mali_jd_replay_jc), job_no);
TOUCH(mem, jc_gpu_va, *v, "soft_replay", job_no); TOUCH(mem, jc_gpu_va, *v, "soft_replay", job_no);
} while ((jc_gpu_va = v->next)); } while ((jc_gpu_va = v->next));
} }
...@@ -289,7 +289,7 @@ ioctl_get_job_type_from_jd_core_req(mali_jd_core_req req) ...@@ -289,7 +289,7 @@ ioctl_get_job_type_from_jd_core_req(mali_jd_core_req req)
panwrap_log_cont("MALI_JD_REQ_%s", "SOFT_" #flag); \ panwrap_log_cont("MALI_JD_REQ_%s", "SOFT_" #flag); \
break break
/* Decodes the actual jd_core_req flags, but not their meanings */ /* Decodes the actual jd_core_req flags, but not their meanings */
static inline void void
ioctl_log_decoded_jd_core_req(mali_jd_core_req req) ioctl_log_decoded_jd_core_req(mali_jd_core_req req)
{ {
if (req & MALI_JD_REQ_SOFT_JOB) { if (req & MALI_JD_REQ_SOFT_JOB) {
......
...@@ -43,6 +43,7 @@ void panwrap_log_flush(); ...@@ -43,6 +43,7 @@ void panwrap_log_flush();
void panwrap_log_decoded_flags(const struct panwrap_flag_info *flag_info, void panwrap_log_decoded_flags(const struct panwrap_flag_info *flag_info,
u64 flags); u64 flags);
void ioctl_log_decoded_jd_core_req(mali_jd_core_req req);
void panwrap_log_hexdump(const void *data, size_t size); void panwrap_log_hexdump(const void *data, size_t size);
void panwrap_log_hexdump_trimmed(const void *data, size_t size); void panwrap_log_hexdump_trimmed(const void *data, size_t size);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment