My test was on linux ubuntu (linux kernel 3.12 ), chromium svn rev. 272967(2-3 days before today)
Can you attach a trace of your use case? There are a few things that could be going on here and a trace would help narrow down the cause:
- If we are double buffered, hardware vsync affects the timing of when we can start drawing to the back buffer. If a swap request *just* misses the vsync, it has to wait until the next vsync to swap and start drawing the next frame. When double buffered, GPU hardware bound, and vsync is enabled, we should drop to 30fps from 60fps assuming a constant GPU workload. The fact that you are seeing 40fps with vsync enabled indicates either:
- We are not GPU hardware bound and the bottleneck is elsewhere.
- The GPU workload isn't constant, sometimes taking more than a vsync and other times less.
- We are triple buffered. If we were triple buffered though, I would expect us to operate much closer to the vsync disabled rate.
Hi Guys.
Thanks for those clarifications.
I attached the json trace files with and without vsync.
My command used is:
vblank_mode=0 ./out/Debug/chrome --no-sandbox --enable-impl-side-painting --use-gl=egl --show-fps-counter --disable-gpu-vsync
(vblank_mode=0 is used for mesa to disable vsync but it seems not affect result because his own chromium vsync management)
When I run my tests I used content_shell, but because I know to do "trace" only from UI( than "chrome://tracing/"),
now I was forced to use chrome(Is possible to trace only with content_shell? )
Other strange behavior on my side :
I made 2 tests with INTEL "zero copy stuff"(I am working on)
(chrome switches --enable-zero-copy, --ui-enable-zero-copy),
first test with an old chromium upstream version ( 2 weeks before, svn rev 263834) and
the second with last chromium upstream version(3 days before, svn rev 272968) and
the result was the FPS was degraded(from 60 fps to 40 fps -vsync enabled for both situations) .
I see, on this period(last 2-3 weeks) was added updates(most relevant is gpu memory buffer part )that can impact it and generate this FPS regression or not?
Or maybe can something wrong on my side.
thanks
marius
Hi Guys.
Thanks for those clarifications.
I attached the json trace files with and without vsync.
My command used is:
vblank_mode=0 ./out/Debug/chrome --no-sandbox --enable-impl-side-painting --use-gl=egl --show-fps-counter --disable-gpu-vsync
(vblank_mode=0 is used for mesa to disable vsync but it seems not affect result because his own chromium vsync management)
When I run my tests I used content_shell, but because I know to do "trace" only from UI( than "chrome://tracing/"),
now I was forced to use chrome(Is possible to trace only with content_shell? )
"foo" json can be generated with google upstream svn Revision: 274314
"zero_copy" json file can be generated only if on top of google upstream was applied this patch:
https://codereview.chromium.org/288343004/
marius
Thanks for feedback, with the latest upstream code the FPS I got looks like I expected,
So the regression seems to be fixed.