class fd_batch {
seqno : int
idx : int
num_draws : int
num_vertices : int
num_bins_per_pipe
prim_strm_bits
draw_strm_bits
draw : draw pass cmdstream
binning: binning pass cmdstream
gmem : tiling/gmem(IB0) cmdstream
fd_batch_create()
_flush()
_add_dep()
_resource_write()
_resource_read_slowpath()
_check_size()
_describe()
_destroy()
}
fd_context --|> pipe_context
pipe_context --|> pipe_screen
class pipe_context {
.draw_vbo
.flush
.emit_string_marker
}
class fd_context {
draw_vbo : fd5_draw_vbo
clear : fd5_clear
emit_tile_init
emit_tile_prep
emit_tile_mem2gmem
emit_tile_renderprep
emit_tile
emit_tile_gmem2mem
emit_tile_fini
emit_system_prep
emit_system_fini
}
fd5_draw.c -> fd5_draw.c++: fd3_draw_vbo()
fd5_draw.c -> fd5_draw.c++ : draw_impl()
fd5_draw.c -> freedreno_draw.h : fd5_draw_emit()
render_tiles()
emit_tile_init
for_each_bin:
emit_tile_prep
(restore?)emit_tile_mem2gmem
emit_tile_renderprep
emit_tile
emit_tile_gmem2mem
emit_tile_fini
fd_gmem_render_tiles
if(sysmem)
render_sysmem
else
render_tiles
flush_ring
batch_flush
fd_fence_ref(batch->fence)
fd_gmem_render_tiles
batch_reset_resources(batch)
fd_bc_invalidate_batch
fd_batch_flush
fd_batch_reference
batch_flush
~fd_batch_reference
fd_draw_fbo ->
batch_draw_tracking ->
resource_written ->
fd_batch_resource_write ->
flush_write_batch ->
fd_batch_flush
fd_launch_grid -> fd_batch_flush (compute shading)
fd_gmem_render_tiles()
util_draw_indirect
for_each_draw_call
pipe->draw_vbo(info)
st_draw_vbo (st_draw.c state_tracker)
for_each_mesa_prims
pipe->draw_vbo
kernel code:
rgmu_irq_handler
oob_irq_handler
hfi_irq_handler
adreno_irq_handler
kgsl_irq_hnadler