2,851
社区成员




运行 adreno 测试时捕获以下 kgsl 跟踪日志
comm.adrenotest-4799 [000] ...2 8013.650847: adreno_cmdbatch_queued: ctx=15 ctx_prio=8 ts=0 queued=1 flags=SYNC
comm.adrenotest-4799 [000] ...2 8013.650855: dispatch_queue_context: ctx=15 priority=8
comm.adrenotest-4799 [000] ...2 8013.651217: adreno_cmdbatch_queued: ctx=15 ctx_prio=8 ts=5194 queued=2 flags=
CTX_SWITCH|EOF
comm.adrenotest-4799 [000] ...1 8013.651597: kgsl_register_event: ctx=15 ts=5194 cb=kgsl_fence_event_cb+0x0/0x58
mdss_fb0-4787 [001] ...1 8013.653676: syncpoint_fence_expire: ctx=15 fence=com.qualcomm.adrenotest/andr:2
kworker/u8:2-4612 [000] ...1 8013.655841: kgsl_clk: d_name=kgsl-3d0 flag=on active_freq=125000000
kworker/u8:2-4612 [000] ...1 8013.658391: adreno_cmdbatch_submitted: ctx=15 ctx_prio=8 ts=5194 inflight=1 flags=
CTX_SWITCH|EOF ticks=175146040 time=8013.658313 rb_id=2 r/w=7b8/7f4, q_inflight=1
可以关注kgsl事件,adreno_cmdbatch_queued, adreno_cmdbatch_submitted等
我们可以看到 cmdbatch 的确切排队时间(8013.651217),使用 ctx 和 ts 来识别一个 cmdbatch。 cmdbatch 从 adreno 用户模式驱动程序发送到 kgsl 驱动程序,添加到上下文的 cmdbatch 队列中,并等待调度程序调度提交给 GPU 执行。
我们可以看到调度程序向GPU提交cmdbatch的确切时间(8013.658391),使用ctx和ts来识别一个cmdbatch。 cmdbatch 提交到 GPU Ringbuffer,等待 GPU HW 执行。
这里我们仍然可以看到另一个参数ticks=175146040,这意味着提交cmdbatch时GPU的ticks value,它是从GPU内部读取的,总是在profile counter上。