Index: content/browser/renderer_host/accelerated_plugin_view_mac.mm |
=================================================================== |
--- content/browser/renderer_host/accelerated_plugin_view_mac.mm (revision 105158) |
+++ content/browser/renderer_host/accelerated_plugin_view_mac.mm (working copy) |
@@ -4,10 +4,13 @@ |
#import "content/browser/renderer_host/accelerated_plugin_view_mac.h" |
+#include <vector> |
+ |
#include "base/command_line.h" |
#include "base/debug/trace_event.h" |
#include "content/browser/browser_thread.h" |
#include "content/browser/renderer_host/render_widget_host_view_mac.h" |
+#include "ui/gfx/gl/gl_context.h" |
#include "ui/gfx/gl/gl_switches.h" |
#include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h" |
@@ -35,14 +38,18 @@ |
[self setAutoresizingMask:NSViewMaxXMargin|NSViewMinYMargin]; |
- NSOpenGLPixelFormatAttribute attributes[] = |
- { NSOpenGLPFAAccelerated, NSOpenGLPFADoubleBuffer, 0}; |
+ std::vector<NSOpenGLPixelFormatAttribute> attributes; |
+ attributes.push_back(NSOpenGLPFAAccelerated); |
+ attributes.push_back(NSOpenGLPFADoubleBuffer); |
+ if (gfx::GLContext::SupportsDualGpus()) |
+ attributes.push_back(NSOpenGLPFAAllowOfflineRenderers); |
+ attributes.push_back(0); |
// TODO(zmo): remove the diagnostic error messages once we figure out the |
// cause of the failure and a fix. |
glPixelFormat_.reset([[NSOpenGLPixelFormat alloc] |
- initWithAttributes:attributes]); |
+ initWithAttributes:&attributes.front()]); |
if (!glPixelFormat_) |
LOG(ERROR) << "NSOpenGLPixelFormat initWithAttributes failed"; |