RuidSiel / chromiumembedded

Automatically exported from code.google.com/p/chromiumembedded
0 stars 1 forks source link

Improve WebGL and other GPU-related performance #304

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
WebGL performance with CEF tends to lag WebGL performance with the Chrome 
browser (30fps vs 60fps, higher CPU usage). I believe there are multiple 
reasons for this:

1. Chrome uses a multi-process architecture that allows it to perform GPU 
rendering and screen painting at the same time.

2. The multi-process GPU code path used by Chrome has received more attention 
from developers and is therefore better optimized than the single-process GPU 
code path used by CEF.

3. Chrome is built using whole program optimization (on Windows) which results 
in faster binary files.

Implementing the multi-process GPU code path in CEF is likely the most 
efficient way to bring CEF GPU performance in line with the Chrome browser.

Original issue reported on code.google.com by magreenb...@gmail.com on 8 Aug 2011 at 6:48

GoogleCodeExporter commented 9 years ago

Original comment by magreenb...@gmail.com on 8 Aug 2011 at 6:59

GoogleCodeExporter commented 9 years ago
I started a thread about hosting an out-of-process browser window here:
http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/
1f97d07179654f71

The conclusion is that out-of-process browser windows can be used on Windows 
and Linux but not Mac. This means that CEF can provide optimal rendering 
performance on Windows and Linux by hosting the complete browser window 
out-of-process. On Mac the only option is to host the browser window in-process 
which will require integration with the NSApplication message loop and may 
result in sub-optimal rendering performance compared to Windows and Linux.

Original comment by magreenb...@gmail.com on 19 Aug 2011 at 5:26

GoogleCodeExporter commented 9 years ago
A good way to improve GPU performance in the short-term is to optimize the 
WebGraphicsContext3DInProcessImpl class 
(webkit/gpu/webgraphicscontext3d_in_process_impl.h) that CEF currently uses. It 
may also be possible to improve how CEF draws the screen 
(WebWidgetHost::Paint()) when using GPU acceleration on different platforms. 
This will involve a good understanding of OpenGL and the use of profiling tools 
to identify performance bottlenecks. For example, Xcode on Mac has built-in 
profiling support: http://www.christianschenk.org/blog/profiling-cpu-sampler/.

General information about Chromium's GPU architecture is available here:

http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-
in-chrome
http://dev.chromium.org/developers/design-documents/rendering-architecture-diagr
ams

Original comment by magreenb...@gmail.com on 31 Aug 2011 at 1:50

GoogleCodeExporter commented 9 years ago
The multi-process architecture discussion has been moved to issue #326. This 
issue should focus on performance improvements to the existing single-process 
architecture.

Original comment by magreenb...@gmail.com on 1 Sep 2011 at 5:58

GoogleCodeExporter commented 9 years ago
Issue 624 has been merged into this issue.

Original comment by magreenb...@gmail.com on 4 Jun 2012 at 2:33

GoogleCodeExporter commented 9 years ago

Original comment by magreenb...@gmail.com on 28 Sep 2012 at 1:50

GoogleCodeExporter commented 9 years ago
Marking this issue as WontFix. Use CEF3 for best performance.

Original comment by magreenb...@gmail.com on 8 Mar 2013 at 9:14