BLINKGTK_GX_LOG)Start with BLINKGTK_GX_LOG=1 and BlinkGTK writes
one line per event for the
EGL delivery path. Use it to see how far a frame got when nothing
appears on
screen, or when presentation is slow.
BJGX <event> t=<ms since start> buf=<wl_buffer wire id> submit=<serial> …
buf= is the wire id of the wl_buffer on the compositor
sidesubmit= is a serial we assign per commit; the pair
(buf=, submit=)submit= is not always a number. Lines
where no serial was assigned carrysubmit=-. Parsing it as an integer will stop on those
linest= is BlinkGTK's own elapsed milliseconds, not the
compositor clock| Event | Fields on the line |
|---|---|
bind |
t= iface= name= |
clock |
t= clk_id= |
commit |
t= buf= submit=
op= w= h= stride=
fmt= mod= |
t= buf= submit=
op= w= h= src= |
|
discard |
t= buf= submit= |
present |
t= buf= submit=
tv= refresh= msc=
flags= flagnames= clk= |
probe |
t= buf= submit=
result= w= h=
stride= |
release |
t= buf= submit= |
skip |
t= buf= submit=
reason= |
| Event | When it appears |
|---|---|
commit |
A buffer was attached to the surface and committed |
present |
The compositor reported that it was displayed |
discard |
The compositor reported that it was not displayed |
release |
The compositor returned the buffer (safe to reuse) |
skip |
Nothing was sent. reason= says why |
probe |
Content inspection result. result= carries the
verdict |
bind |
A Wayland interface was bound |
clock |
Clock id used for presentation timestamps |
present and discard are mutually
exclusive — exactly one of them arrives
for a given content update.
op= appears only on commit
lines. It is not present on present lines.present carries instead is clk=
(below)op= takes one of attach+viewport,
attach, destroy, nonecommit line depends on the path: the
dmabuf path carriesstride= fmt= mod=, while the software (shm) path carries
src=shm and omitsstride=, fmt= and mod=clk= tells you which clock the tv=
timestamp on a present line is based- when the compositor did not report oneLook for present lines.
content_present (probe#N=YES/BLANK) judges
by reading buffer contents from
the CPU side. On some systems that read is not possible at
all (virtualised
GPUs, for example). There it stays UNKNOWN, so using it as
the criterion reads
as "nothing was displayed" when in fact everything was.
present comes from the compositor, so it holds on those
systems too.
The table above is produced by
release/scripts/gen-gx-log-format.sh from the
format strings in the source. A hand-copied table drifts from the code,
so it is
a generated artifact.