panfrost/decode: Identify "compute FBD"
There is fundamentally not a framebuffer associated with a compute job. Allocate a new structure for it so we don't mess up graphics when decoding. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
4f881237c3
commit
0aa5d89acb
|
@ -1406,6 +1406,13 @@ struct mali_single_framebuffer {
|
|||
/* More below this, maybe */
|
||||
} __attribute__((packed));
|
||||
|
||||
/* On Midgard, this "framebuffer descriptor" is used for the framebuffer field
|
||||
* of compute jobs. Superficially resembles a single framebuffer descriptor */
|
||||
|
||||
struct mali_compute_fbd {
|
||||
u32 unknown[64];
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Format bits for the render target flags */
|
||||
|
||||
#define MALI_MFBD_FORMAT_MSAA (1 << 1)
|
||||
|
|
|
@ -539,6 +539,26 @@ pandecode_replay_sfbd(uint64_t gpu_va, int job_no)
|
|||
printf("},\n");
|
||||
}
|
||||
|
||||
static void
|
||||
pandecode_compute_fbd(uint64_t gpu_va, int job_no)
|
||||
{
|
||||
struct pandecode_mapped_memory *mem = pandecode_find_mapped_gpu_mem_containing(gpu_va);
|
||||
const struct mali_compute_fbd *PANDECODE_PTR_VAR(s, mem, (mali_ptr) gpu_va);
|
||||
|
||||
pandecode_log("struct mali_compute_fbd framebuffer_%d = {\n", job_no);
|
||||
pandecode_indent++;
|
||||
|
||||
pandecode_log(".unknown = {");
|
||||
|
||||
for (int i = 0; i < sizeof(s->unknown) / sizeof(s->unknown[0]); ++i)
|
||||
printf("%X, ", s->unknown[i]);
|
||||
|
||||
pandecode_log("},\n");
|
||||
|
||||
pandecode_indent--;
|
||||
printf("},\n");
|
||||
}
|
||||
|
||||
static void
|
||||
pandecode_replay_swizzle(unsigned swizzle)
|
||||
{
|
||||
|
@ -1275,6 +1295,8 @@ pandecode_replay_vertex_tiler_postfix_pre(const struct mali_vertex_tiler_postfix
|
|||
pandecode_replay_scratchpad(p->framebuffer & ~FBD_TYPE, job_no, suffix);
|
||||
else if (p->framebuffer & MALI_MFBD)
|
||||
pandecode_replay_mfbd_bfr((u64) ((uintptr_t) p->framebuffer) & FBD_MASK, job_no, false);
|
||||
else if (job_type == JOB_TYPE_COMPUTE)
|
||||
pandecode_compute_fbd((u64) (uintptr_t) p->framebuffer, job_no);
|
||||
else
|
||||
pandecode_replay_sfbd((u64) (uintptr_t) p->framebuffer, job_no);
|
||||
|
||||
|
|
Loading…
Reference in New Issue