Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 10873099: Flag and adapter class for software compositing. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/gpu/compositor_software_output_device_gl_adapter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 #include "content/renderer/browser_plugin/old/guest_to_embedder_channel.h" 67 #include "content/renderer/browser_plugin/old/guest_to_embedder_channel.h"
68 #include "content/renderer/device_orientation_dispatcher.h" 68 #include "content/renderer/device_orientation_dispatcher.h"
69 #include "content/renderer/devtools_agent.h" 69 #include "content/renderer/devtools_agent.h"
70 #include "content/renderer/dom_automation_controller.h" 70 #include "content/renderer/dom_automation_controller.h"
71 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" 71 #include "content/renderer/dom_storage/webstoragenamespace_impl.h"
72 #include "content/renderer/do_not_track_bindings.h" 72 #include "content/renderer/do_not_track_bindings.h"
73 #include "content/renderer/external_popup_menu.h" 73 #include "content/renderer/external_popup_menu.h"
74 #include "content/renderer/geolocation_dispatcher.h" 74 #include "content/renderer/geolocation_dispatcher.h"
75 #include "content/renderer/gpu/compositor_thread.h" 75 #include "content/renderer/gpu/compositor_thread.h"
76 #include "content/renderer/gpu/compositor_output_surface.h" 76 #include "content/renderer/gpu/compositor_output_surface.h"
77 #include "content/renderer/gpu/compositor_software_output_device_gl_adapter.h"
77 #include "content/renderer/idle_user_detector.h" 78 #include "content/renderer/idle_user_detector.h"
78 #include "content/renderer/input_tag_speech_dispatcher.h" 79 #include "content/renderer/input_tag_speech_dispatcher.h"
79 #include "content/renderer/java/java_bridge_dispatcher.h" 80 #include "content/renderer/java/java_bridge_dispatcher.h"
80 #include "content/renderer/load_progress_tracker.h" 81 #include "content/renderer/load_progress_tracker.h"
81 #include "content/renderer/media/media_stream_dependency_factory.h" 82 #include "content/renderer/media/media_stream_dependency_factory.h"
82 #include "content/renderer/media/media_stream_dispatcher.h" 83 #include "content/renderer/media/media_stream_dispatcher.h"
83 #include "content/renderer/media/media_stream_impl.h" 84 #include "content/renderer/media/media_stream_impl.h"
84 #include "content/renderer/media/render_audiosourceprovider.h" 85 #include "content/renderer/media/render_audiosourceprovider.h"
85 #include "content/renderer/media/render_media_log.h" 86 #include "content/renderer/media/render_media_log.h"
86 #include "content/renderer/media/renderer_gpu_video_decoder_factories.h" 87 #include "content/renderer/media/renderer_gpu_video_decoder_factories.h"
(...skipping 1794 matching lines...) Expand 10 before | Expand all | Expand 10 after
1881 } 1882 }
1882 1883
1883 WebStorageNamespace* RenderViewImpl::createSessionStorageNamespace( 1884 WebStorageNamespace* RenderViewImpl::createSessionStorageNamespace(
1884 unsigned quota) { 1885 unsigned quota) {
1885 CHECK(session_storage_namespace_id_ != 1886 CHECK(session_storage_namespace_id_ !=
1886 dom_storage::kInvalidSessionStorageNamespaceId); 1887 dom_storage::kInvalidSessionStorageNamespaceId);
1887 return new WebStorageNamespaceImpl(session_storage_namespace_id_); 1888 return new WebStorageNamespaceImpl(session_storage_namespace_id_);
1888 } 1889 }
1889 1890
1890 WebKit::WebCompositorOutputSurface* RenderViewImpl::createOutputSurface() { 1891 WebKit::WebCompositorOutputSurface* RenderViewImpl::createOutputSurface() {
1891 // TODO(aelias): if force-software-mode is on, create an output surface
1892 // without a 3D context.
1893
1894 // Explicitly disable antialiasing for the compositor. As of the time of 1892 // Explicitly disable antialiasing for the compositor. As of the time of
1895 // this writing, the only platform that supported antialiasing for the 1893 // this writing, the only platform that supported antialiasing for the
1896 // compositor was Mac OS X, because the on-screen OpenGL context creation 1894 // compositor was Mac OS X, because the on-screen OpenGL context creation
1897 // code paths on Windows and Linux didn't yet have multisampling support. 1895 // code paths on Windows and Linux didn't yet have multisampling support.
1898 // Mac OS X essentially always behaves as though it's rendering offscreen. 1896 // Mac OS X essentially always behaves as though it's rendering offscreen.
1899 // Multisampling has a heavy cost especially on devices with relatively low 1897 // Multisampling has a heavy cost especially on devices with relatively low
1900 // fill rate like most notebooks, and the Mac implementation would need to 1898 // fill rate like most notebooks, and the Mac implementation would need to
1901 // be optimized to resolve directly into the IOSurface shared between the 1899 // be optimized to resolve directly into the IOSurface shared between the
1902 // GPU and browser processes. For these reasons and to avoid platform 1900 // GPU and browser processes. For these reasons and to avoid platform
1903 // disparities we explicitly disable antialiasing. 1901 // disparities we explicitly disable antialiasing.
1904 WebKit::WebGraphicsContext3D::Attributes attributes; 1902 WebKit::WebGraphicsContext3D::Attributes attributes;
1905 attributes.antialias = false; 1903 attributes.antialias = false;
1906 attributes.shareResources = true; 1904 attributes.shareResources = true;
1907 WebGraphicsContext3D* context = CreateGraphicsContext3D(attributes); 1905 WebGraphicsContext3D* context = CreateGraphicsContext3D(attributes);
1908 if (!context) 1906 if (!context)
1909 return NULL; 1907 return NULL;
1910 1908
1911 return new CompositorOutputSurface(routing_id(), context); 1909 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
1910 if (command_line.HasSwitch(switches::kEnableSoftwareCompositingGLAdapter)) {
1911 // In the absence of a software-based delegating renderer, use this
1912 // stopgap adapter class to present the software renderer output using a
1913 // 3d context.
1914 return new CompositorOutputSurface(routing_id(), NULL,
1915 new CompositorSoftwareOutputDeviceGLAdapter(context));
1916 } else
1917 return new CompositorOutputSurface(routing_id(), context, NULL);
1912 } 1918 }
1913 1919
1914 void RenderViewImpl::didAddMessageToConsole( 1920 void RenderViewImpl::didAddMessageToConsole(
1915 const WebConsoleMessage& message, const WebString& source_name, 1921 const WebConsoleMessage& message, const WebString& source_name,
1916 unsigned source_line) { 1922 unsigned source_line) {
1917 logging::LogSeverity log_severity = logging::LOG_VERBOSE; 1923 logging::LogSeverity log_severity = logging::LOG_VERBOSE;
1918 switch (message.level) { 1924 switch (message.level) {
1919 case WebConsoleMessage::LevelTip: 1925 case WebConsoleMessage::LevelTip:
1920 log_severity = logging::LOG_VERBOSE; 1926 log_severity = logging::LOG_VERBOSE;
1921 break; 1927 break;
(...skipping 4341 matching lines...) Expand 10 before | Expand all | Expand 10 after
6263 6269
6264 updating_frame_tree_ = true; 6270 updating_frame_tree_ = true;
6265 active_frame_id_map_.clear(); 6271 active_frame_id_map_.clear();
6266 6272
6267 target_process_id_ = process_id; 6273 target_process_id_ = process_id;
6268 target_routing_id_ = route_id; 6274 target_routing_id_ = route_id;
6269 CreateFrameTree(webview()->mainFrame(), frames); 6275 CreateFrameTree(webview()->mainFrame(), frames);
6270 6276
6271 updating_frame_tree_ = false; 6277 updating_frame_tree_ = false;
6272 } 6278 }
OLDNEW
« no previous file with comments | « content/renderer/gpu/compositor_software_output_device_gl_adapter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698