lost the way on how to trace JIT codes

summer xia <[email protected]>
Newsgroups gmane.comp.video.mesa3d.devel
Message-ID <CAK0ZBcvxc068P6nCd0O5r05ynkNPB=MBZi+-1x_SWJZfQbCB3w@mail.gmail.com>
I use this version: llvmpipe (LLVM 14.0.0, 256 bits Type: CPU API: 1.3.246)
as a backed vulkan engine. When I trace the whole pipeline that draws a
picture.    I can trace all the C level codes as following hints:

#0  lp_setup_draw_elements (vbr=0x555555bcfe30, indices=0x555555bcdf10,
nr=1023) at ../src/gallium/drivers/llvmpipe/lp_setup_vbuf.c:238
#1  0x00007ffff61d0707 in draw_pt_emit (emit=0x555555bcfce0,
vert_info=0x7fffd966e718, prim_info=0x7fffd966e8d8) at
../src/gallium/auxiliary/draw/draw_pt_emit.c:197
#2  0x00007ffff61cc208 in emit (emit=0x555555bcfce0,
vert_info=0x7fffd966e718, prim_info=0x7fffd966e8d8) at
../src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:541
#3  0x00007ffff61cbe4c in llvm_pipeline_generic (middle=0x555555bcfbd0,
fetch_info=0x0, in_prim_info=0x7fffd966e8d8) at
../src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:759
#4  0x00007ffff61ca5fc in llvm_middle_end_run (middle=0x555555bcfbd0,
fetch_elts=0x555555bccf10, fetch_count=683, draw_elts=0x555555bcdf10,
draw_count=1023, prim_flags=2) at
../src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:812
#5  0x00007ffff6130283 in vsplit_flush_cache (vsplit=0x555555bcced0,
flags=2) at ../src/gallium/auxiliary/draw/draw_pt_vsplit.c:78
#6  0x00007ffff6131236 in vsplit_segment_cache_uint (vsplit=0x555555bcced0,
flags=2, istart=0, icount=1023, spoken=0 '\000', ispoken=0, close=0 '\000',
iclose=0) at ../src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h:163
#7  0x00007ffff6130f8c in vsplit_segment_simple_uint
(vsplit=0x555555bcced0, flags=2, istart=0, icount=1023) at
../src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h:173
#8  0x00007ffff612f4cd in vsplit_run_uint (frontend=0x555555bcced0,
start=0, count=5529600) at
../src/gallium/auxiliary/draw/draw_split_tmp.h:106
#9  0x00007ffff6122e96 in draw_pt_arrays (draw=0x555555b96920,
prim=PIPE_PRIM_TRIANGLES, index_bias_varies=true, draw_info=0x7fffd966ec70,
num_draws=1) at ../src/gallium/auxiliary/draw/draw_pt.c:161
#10 0x00007ffff6122995 in draw_instances (draw=0x555555b96920,
drawid_offset=0, info=0x555555b7fb60, draws=0x7fffd966ec70, num_draws=1) at
../src/gallium/auxiliary/draw/draw_pt.c:485
#11 0x00007ffff6122689 in draw_vbo (draw=0x555555b96920,
info=0x555555b7fb60, drawid_offset=0, indirect=0x0, draws=0x7fffd966ec70,
num_draws=1, patch_vertices=0 '\000') at
../src/gallium/auxiliary/draw/draw_pt.c:619
#12 0x00007ffff60757ee in llvmpipe_draw_vbo (pipe=0x555555b8db40,
info=0x555555b7fb60, drawid_offset=0, indirect=0x0, draws=0x7fffd966ec70,
num_draws=1) at ../src/gallium/drivers/llvmpipe/lp_draw_arrays.c:150
#13 0x00007ffff5c71083 in handle_draw_indexed (cmd=0x555555dca790,
state=0x555555b7faf0) at
../src/gallium/frontends/lavapipe/lvp_execute.c:2725
#14 0x00007ffff5c6f1e0 in lvp_execute_cmd_buffer
(cmd_buffer=0x555555b78520, state=0x555555b7faf0, print_cmds=false) at
../src/gallium/frontends/lavapipe/lvp_execute.c:4324
#15 0x00007ffff5c6ef10 in lvp_execute_cmds (device=0x555555b7e5f0,
queue=0x555555b7f8e0, cmd_buffer=0x555555b78520) at
../src/gallium/frontends/lavapipe/lvp_execute.c:4621
#16 0x00007ffff5c682ba in lvp_queue_submit (vk_queue=0x555555b7f8e0,
submit=0x555555dccb80) at
../src/gallium/frontends/lavapipe/lvp_device.c:1548
#17 0x00007ffff5d651fd in vk_queue_submit_final (queue=0x555555b7f8e0,
submit=0x555555dccb80) at ../src/vulkan/runtime/vk_queue.c:377
#18 0x00007ffff5d67eef in vk_queue_submit_thread_func
(_data=0x555555b7f8e0) at ../src/vulkan/runtime/vk_queue.c:490
#19 0x00007ffff5d45522 in impl_thrd_routine (p=0x555555aa1ee0) at
../src/c11/impl/threads_posix.c:67
#20 0x00007ffff7894b43 in start_thread (arg=<optimized out>) at
./nptl/pthread_create.c:442
#21 0x00007ffff7926a00 in clone3 () at
../sysdeps/unix/sysv/linux/x86_64/clone3.S:81


But when I want to make clear what this method's function :

/* Run vertex fetch shader */
      clipped = fpme->current_variant->jit_func(&fpme->llvm->jit_context,
                                                llvm_vert_info.verts,
                                                draw->pt.user.vbuffer,
                                                fetch_info->count,
                                                start,
                                                fpme->vertex_size,
                                                draw->pt.vertex_buffer,
                                                draw->instance_id,
                                                vertex_id_offset,
                                                draw->start_instance,
                                                elts,
                                                draw->pt.user.drawid,
                                                draw->pt.user.viewid);
I can't step into this function with gdb and can't find any hints on how to
fill this llvm_vert_info.verts in it.  Appreciate any comments.

Regards

Nelson
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.