| 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 0206d88f13a47dad8147b9f9acb772e87de53232..9b46b024582bd1d6460fda1e2ad230a9ab8ecb82 100644
|
| --- a/gpu/command_buffer/service/context_group.cc
|
| +++ b/gpu/command_buffer/service/context_group.cc
|
| @@ -32,11 +32,13 @@ ContextGroup::ContextGroup(
|
| const scoped_refptr<MemoryTracker>& memory_tracker,
|
| const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache,
|
| const scoped_refptr<FeatureInfo>& feature_info,
|
| + const scoped_refptr<SubscriptionRefSet>& subscription_ref_set,
|
| const scoped_refptr<ValueStateMap>& pending_valuebuffer_state,
|
| bool bind_generates_resource)
|
| : mailbox_manager_(mailbox_manager),
|
| memory_tracker_(memory_tracker),
|
| shader_translator_cache_(shader_translator_cache),
|
| + subscription_ref_set_(subscription_ref_set),
|
| pending_valuebuffer_state_(pending_valuebuffer_state),
|
| enforce_gl_minimums_(CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kEnforceGLMinimums)),
|
| @@ -56,6 +58,8 @@ ContextGroup::ContextGroup(
|
| {
|
| if (!mailbox_manager_.get())
|
| mailbox_manager_ = new MailboxManagerImpl;
|
| + if (!subscription_ref_set_.get())
|
| + subscription_ref_set_ = new SubscriptionRefSet();
|
| if (!pending_valuebuffer_state_.get())
|
| pending_valuebuffer_state_ = new ValueStateMap();
|
| if (!feature_info.get())
|
| @@ -128,7 +132,8 @@ bool ContextGroup::Initialize(
|
| depth24_supported));
|
| shader_manager_.reset(new ShaderManager());
|
| valuebuffer_manager_.reset(
|
| - new ValuebufferManager(pending_valuebuffer_state_.get()));
|
| + new ValuebufferManager(subscription_ref_set_.get(),
|
| + pending_valuebuffer_state_.get()));
|
|
|
| // Lookup GL things we need to know.
|
| const GLint kGLES2RequiredMinimumVertexAttribs = 8u;
|
| @@ -151,21 +156,35 @@ bool ContextGroup::Initialize(
|
|
|
| GLint max_texture_size = 0;
|
| GLint max_cube_map_texture_size = 0;
|
| + GLint max_rectangle_texture_size = 0;
|
| const GLint kMinTextureSize = 2048; // GL actually says 64!?!?
|
| const GLint kMinCubeMapSize = 256; // GL actually says 16!?!?
|
| - if (!QueryGLFeature(
|
| - GL_MAX_TEXTURE_SIZE, kMinTextureSize, &max_texture_size) ||
|
| - !QueryGLFeature(
|
| - GL_MAX_CUBE_MAP_TEXTURE_SIZE, kMinCubeMapSize,
|
| - &max_cube_map_texture_size)) {
|
| - LOG(ERROR) << "ContextGroup::Initialize failed because maximum texture size"
|
| - << "is too small.";
|
| + const GLint kMinRectangleTextureSize = 64;
|
| + if (!QueryGLFeature(GL_MAX_TEXTURE_SIZE, kMinTextureSize,
|
| + &max_texture_size) ||
|
| + !QueryGLFeature(GL_MAX_CUBE_MAP_TEXTURE_SIZE, kMinCubeMapSize,
|
| + &max_cube_map_texture_size)) {
|
| + LOG(ERROR) << "ContextGroup::Initialize failed because maximum "
|
| + << " texture size is too small.";
|
| return false;
|
| }
|
| + if (feature_info_->feature_flags().arb_texture_rectangle) {
|
| + if (!QueryGLFeature(GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB,
|
| + kMinRectangleTextureSize,
|
| + &max_rectangle_texture_size)) {
|
| + LOG(ERROR) << "ContextGroup::Initialize failed because maximum "
|
| + << "rectangle texture size is too small.";
|
| + return false;
|
| + }
|
| + }
|
|
|
| if (feature_info_->workarounds().max_texture_size) {
|
| max_texture_size = std::min(
|
| - max_texture_size, feature_info_->workarounds().max_texture_size);
|
| + max_texture_size,
|
| + feature_info_->workarounds().max_texture_size);
|
| + max_rectangle_texture_size = std::min(
|
| + max_rectangle_texture_size,
|
| + feature_info_->workarounds().max_texture_size);
|
| }
|
| if (feature_info_->workarounds().max_cube_map_texture_size) {
|
| max_cube_map_texture_size = std::min(
|
| @@ -177,6 +196,7 @@ bool ContextGroup::Initialize(
|
| feature_info_.get(),
|
| max_texture_size,
|
| max_cube_map_texture_size,
|
| + max_rectangle_texture_size,
|
| bind_generates_resource_));
|
| texture_manager_->set_framebuffer_manager(framebuffer_manager_.get());
|
|
|
|
|