Index: gpu/command_buffer/service/context_group.cc |
diff --git a/gpu/command_buffer/service/context_group.cc b/gpu/command_buffer/service/context_group.cc |
index ca8b335a39c4cc57871bab1e0dadeeac1da46a63..530488e4eb04f0d4da6222d32d827530cb4e5f9d 100644 |
--- a/gpu/command_buffer/service/context_group.cc |
+++ b/gpu/command_buffer/service/context_group.cc |
@@ -30,6 +30,8 @@ ContextGroup::ContextGroup( |
const scoped_refptr<MailboxManager>& mailbox_manager, |
const scoped_refptr<MemoryTracker>& memory_tracker, |
const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache, |
+ const scoped_refptr<FramebufferCompletenessCache>& |
+ framebuffer_completeness_cache, |
const scoped_refptr<FeatureInfo>& feature_info, |
const scoped_refptr<SubscriptionRefSet>& subscription_ref_set, |
const scoped_refptr<ValueStateMap>& pending_valuebuffer_state, |
@@ -38,6 +40,17 @@ ContextGroup::ContextGroup( |
mailbox_manager_(mailbox_manager), |
memory_tracker_(memory_tracker), |
shader_translator_cache_(shader_translator_cache), |
+#if defined(OS_MACOSX) |
+ // Framebuffer completeness is not cacheable on OS X because of dynamic |
+ // graphics switching. |
+ // http://crbug.com/180876 |
+ // TODO(tobiasjs): determine whether GPU switching is possible |
+ // programmatically, rather than just hardcoding this behaviour |
+ // for OS X. |
+ framebuffer_completeness_cache_(NULL), |
+#else |
+ framebuffer_completeness_cache_(framebuffer_completeness_cache), |
+#endif |
subscription_ref_set_(subscription_ref_set), |
pending_valuebuffer_state_(pending_valuebuffer_state), |
enforce_gl_minimums_( |
@@ -154,8 +167,9 @@ bool ContextGroup::Initialize( |
buffer_manager_.reset( |
new BufferManager(memory_tracker_.get(), feature_info_.get())); |
- framebuffer_manager_.reset(new FramebufferManager( |
- max_draw_buffers_, max_color_attachments_, context_type)); |
+ framebuffer_manager_.reset( |
+ new FramebufferManager(max_draw_buffers_, max_color_attachments_, |
+ context_type, framebuffer_completeness_cache_)); |
renderbuffer_manager_.reset(new RenderbufferManager( |
memory_tracker_.get(), max_renderbuffer_size, max_samples, |
feature_info_.get())); |