Lines Matching refs:clif
36 clif_dump_add_address_to_worklist(struct clif_dump *clif, in clif_dump_add_address_to_worklist() argument
41 rzalloc(clif, struct reloc_worklist_entry); in clif_dump_add_address_to_worklist()
48 list_addtail(&entry->link, &clif->worklist); in clif_dump_add_address_to_worklist()
57 struct clif_dump *clif = rzalloc(NULL, struct clif_dump); in clif_dump_init() local
59 clif->devinfo = devinfo; in clif_dump_init()
60 clif->out = out; in clif_dump_init()
61 clif->spec = v3d_spec_load(devinfo); in clif_dump_init()
62 clif->pretty = pretty; in clif_dump_init()
63 clif->nobin = nobin; in clif_dump_init()
65 list_inithead(&clif->worklist); in clif_dump_init()
67 return clif; in clif_dump_init()
71 clif_dump_destroy(struct clif_dump *clif) in clif_dump_destroy() argument
73 ralloc_free(clif); in clif_dump_destroy()
77 clif_lookup_bo(struct clif_dump *clif, uint32_t addr) in clif_lookup_bo() argument
79 for (int i = 0; i < clif->bo_count; i++) { in clif_lookup_bo()
80 struct clif_bo *bo = &clif->bo[i]; in clif_lookup_bo()
92 clif_lookup_vaddr(struct clif_dump *clif, uint32_t addr, void **vaddr) in clif_lookup_vaddr() argument
94 struct clif_bo *bo = clif_lookup_bo(clif, addr); in clif_lookup_vaddr()
106 clif_dump_packet(struct clif_dump *clif, uint32_t offset, const uint8_t *cl, in clif_dump_packet() argument
109 if (clif->devinfo->ver >= 42) in clif_dump_packet()
110 return v3d42_clif_dump_packet(clif, offset, cl, size, reloc_mode); in clif_dump_packet()
111 else if (clif->devinfo->ver >= 41) in clif_dump_packet()
112 return v3d41_clif_dump_packet(clif, offset, cl, size, reloc_mode); in clif_dump_packet()
114 return v3d33_clif_dump_packet(clif, offset, cl, size, reloc_mode); in clif_dump_packet()
118 clif_dump_cl(struct clif_dump *clif, uint32_t start, uint32_t end, in clif_dump_cl() argument
121 struct clif_bo *bo = clif_lookup_bo(clif, start); in clif_dump_cl()
123 out(clif, "Failed to look up address 0x%08x\n", in clif_dump_cl()
134 if (end && !clif_lookup_vaddr(clif, end, &end_vaddr)) { in clif_dump_cl()
135 out(clif, "Failed to look up address 0x%08x\n", in clif_dump_cl()
141 out(clif, "@format ctrllist /* [%s+0x%08x] */\n", in clif_dump_cl()
146 while (clif_dump_packet(clif, start, cl, &size, reloc_mode)) { in clif_dump_cl()
161 clif_dump_gl_shader_state_record(struct clif_dump *clif, in clif_dump_gl_shader_state_record() argument
165 struct v3d_group *state = v3d_spec_find_struct(clif->spec, in clif_dump_gl_shader_state_record()
167 struct v3d_group *attr = v3d_spec_find_struct(clif->spec, in clif_dump_gl_shader_state_record()
173 out(clif, "@format shadrec_gl_main\n"); in clif_dump_gl_shader_state_record()
174 v3d_print_group(clif, state, 0, vaddr + offset); in clif_dump_gl_shader_state_record()
178 out(clif, "@format shadrec_gl_attr /* %d */\n", i); in clif_dump_gl_shader_state_record()
179 v3d_print_group(clif, attr, 0, vaddr + offset); in clif_dump_gl_shader_state_record()
187 clif_process_worklist(struct clif_dump *clif) in clif_process_worklist() argument
190 &clif->worklist, link) { in clif_process_worklist()
192 if (!clif_lookup_vaddr(clif, reloc->addr, &vaddr)) { in clif_process_worklist()
193 out(clif, "Failed to look up address 0x%08x\n", in clif_process_worklist()
200 clif_dump_cl(clif, reloc->addr, reloc->cl.end, true); in clif_process_worklist()
206 clif_dump_cl(clif, reloc->addr, in clif_process_worklist()
221 clif_dump_if_blank(struct clif_dump *clif, struct clif_bo *bo, in clif_dump_if_blank() argument
229 out(clif, "\n"); in clif_dump_if_blank()
230 out(clif, "@format blank %d /* [%s+0x%08x..0x%08x] */\n", end - start, in clif_dump_if_blank()
239 clif_dump_binary(struct clif_dump *clif, struct clif_bo *bo, in clif_dump_binary() argument
242 if (clif->pretty && clif->nobin) in clif_dump_binary()
248 if (clif_dump_if_blank(clif, bo, start, end)) in clif_dump_binary()
251 out(clif, "@format binary /* [%s+0x%08x] */\n", in clif_dump_binary()
257 if (clif_dump_if_blank(clif, bo, offset, end)) in clif_dump_binary()
261 out(clif, "0x%08x ", *(uint32_t *)(bo->vaddr + offset)); in clif_dump_binary()
264 out(clif, "0x%02x ", *(uint8_t *)(bo->vaddr + offset)); in clif_dump_binary()
269 out(clif, "\n"); in clif_dump_binary()
274 out(clif, "\n"); in clif_dump_binary()
282 clif_dump_buffers(struct clif_dump *clif) in clif_dump_buffers() argument
286 &clif->worklist, link) { in clif_dump_buffers()
290 ralloc_array(clif, struct reloc_worklist_entry *, num_relocs); in clif_dump_buffers()
293 &clif->worklist, link) { in clif_dump_buffers()
303 struct clif_bo *new_bo = clif_lookup_bo(clif, reloc->addr); in clif_dump_buffers()
306 out(clif, "Failed to look up address 0x%08x\n", in clif_dump_buffers()
314 clif_dump_binary(clif, bo, in clif_dump_buffers()
319 out(clif, "\n"); in clif_dump_buffers()
320 out(clif, "@buffer %s\n", new_bo->name); in clif_dump_buffers()
328 clif_dump_binary(clif, bo, offset, reloc_offset); in clif_dump_buffers()
333 offset = clif_dump_cl(clif, reloc->addr, reloc->cl.end, in clif_dump_buffers()
335 out(clif, "\n"); in clif_dump_buffers()
339 offset += clif_dump_gl_shader_state_record(clif, in clif_dump_buffers()
345 offset = clif_dump_cl(clif, reloc->addr, in clif_dump_buffers()
350 out(clif, "\n"); in clif_dump_buffers()
354 clif_dump_binary(clif, bo, offset, bo->size); in clif_dump_buffers()
358 for (int i = 0; i < clif->bo_count; i++) { in clif_dump_buffers()
359 bo = &clif->bo[i]; in clif_dump_buffers()
362 out(clif, "@buffer %s\n", bo->name); in clif_dump_buffers()
363 clif_dump_binary(clif, bo, 0, bo->size); in clif_dump_buffers()
364 out(clif, "\n"); in clif_dump_buffers()
369 clif_dump_add_cl(struct clif_dump *clif, uint32_t start, uint32_t end) in clif_dump_add_cl() argument
372 clif_dump_add_address_to_worklist(clif, reloc_cl, start); in clif_dump_add_cl()
384 clif_dump(struct clif_dump *clif, const struct drm_v3d_submit_cl *submit) in clif_dump() argument
386 clif_dump_add_cl(clif, submit->bcl_start, submit->bcl_end); in clif_dump()
387 clif_dump_add_cl(clif, submit->rcl_start, submit->rcl_end); in clif_dump()
389 qsort(clif->bo, clif->bo_count, sizeof(clif->bo[0]), in clif_dump()
395 for (int i = 0; i < clif->bo_count; i++) { in clif_dump()
396 out(clif, "@createbuf_aligned 4096 %s\n", clif->bo[i].name); in clif_dump()
402 clif_process_worklist(clif); in clif_dump()
407 clif_dump_buffers(clif); in clif_dump()
409 out(clif, "@add_bin 0\n "); in clif_dump()
410 out_address(clif, submit->bcl_start); in clif_dump()
411 out(clif, "\n "); in clif_dump()
412 out_address(clif, submit->bcl_end); in clif_dump()
413 out(clif, "\n "); in clif_dump()
414 out_address(clif, submit->qma); in clif_dump()
415 out(clif, "\n %d\n ", submit->qms); in clif_dump()
416 out_address(clif, submit->qts); in clif_dump()
417 out(clif, "\n"); in clif_dump()
418 out(clif, "@wait_bin_all_cores\n"); in clif_dump()
420 out(clif, "@add_render 0\n "); in clif_dump()
421 out_address(clif, submit->rcl_start); in clif_dump()
422 out(clif, "\n "); in clif_dump()
423 out_address(clif, submit->rcl_end); in clif_dump()
424 out(clif, "\n "); in clif_dump()
425 out_address(clif, submit->qma); in clif_dump()
426 out(clif, "\n"); in clif_dump()
427 out(clif, "@wait_render_all_cores\n"); in clif_dump()
431 clif_dump_add_bo(struct clif_dump *clif, const char *name, in clif_dump_add_bo() argument
434 if (clif->bo_count >= clif->bo_array_size) { in clif_dump_add_bo()
435 clif->bo_array_size = MAX2(4, clif->bo_array_size * 2); in clif_dump_add_bo()
436 clif->bo = reralloc(clif, clif->bo, struct clif_bo, in clif_dump_add_bo()
437 clif->bo_array_size); in clif_dump_add_bo()
441 for (int i = 0; i < clif->bo_count; i++) in clif_dump_add_bo()
442 assert(strcmp(clif->bo[i].name, name) != 0); in clif_dump_add_bo()
444 clif->bo[clif->bo_count].name = ralloc_strdup(clif, name); in clif_dump_add_bo()
445 clif->bo[clif->bo_count].offset = offset; in clif_dump_add_bo()
446 clif->bo[clif->bo_count].size = size; in clif_dump_add_bo()
447 clif->bo[clif->bo_count].vaddr = vaddr; in clif_dump_add_bo()
448 clif->bo[clif->bo_count].dumped = false; in clif_dump_add_bo()
449 clif->bo_count++; in clif_dump_add_bo()