| 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 eaaa0142da9c1ea236147c97cc18a5edcdbafce9..d7b9ec4feeffde5ac35477fb4709fdc8fe0f41eb 100644
|
| --- a/gpu/command_buffer/service/context_group.cc
|
| +++ b/gpu/command_buffer/service/context_group.cc
|
| @@ -18,6 +18,7 @@
|
| #include "gpu/command_buffer/service/mailbox_manager_impl.h"
|
| #include "gpu/command_buffer/service/path_manager.h"
|
| #include "gpu/command_buffer/service/program_manager.h"
|
| +#include "gpu/command_buffer/service/progress_reporter.h"
|
| #include "gpu/command_buffer/service/renderbuffer_manager.h"
|
| #include "gpu/command_buffer/service/sampler_manager.h"
|
| #include "gpu/command_buffer/service/shader_manager.h"
|
| @@ -65,7 +66,8 @@ ContextGroup::ContextGroup(
|
| framebuffer_completeness_cache,
|
| const scoped_refptr<FeatureInfo>& feature_info,
|
| bool bind_generates_resource,
|
| - gpu::ImageFactory* image_factory)
|
| + gpu::ImageFactory* image_factory,
|
| + ProgressReporter* progress_reporter)
|
| : gpu_preferences_(gpu_preferences),
|
| mailbox_manager_(mailbox_manager),
|
| memory_tracker_(memory_tracker),
|
| @@ -103,9 +105,11 @@ ContextGroup::ContextGroup(
|
| program_cache_(NULL),
|
| feature_info_(feature_info),
|
| image_factory_(image_factory),
|
| + progress_reporter_(progress_reporter),
|
| passthrough_resources_(new PassthroughResources) {
|
| {
|
| DCHECK(feature_info_);
|
| + DCHECK(progress_reporter_);
|
| if (!mailbox_manager_.get())
|
| mailbox_manager_ = new MailboxManagerImpl;
|
| transfer_buffer_manager_ = new TransferBufferManager(memory_tracker_.get());
|
| @@ -212,7 +216,7 @@ bool ContextGroup::Initialize(GLES2Decoder* decoder,
|
| renderbuffer_manager_.reset(new RenderbufferManager(
|
| memory_tracker_.get(), max_renderbuffer_size, max_samples,
|
| feature_info_.get()));
|
| - shader_manager_.reset(new ShaderManager());
|
| + shader_manager_.reset(new ShaderManager(progress_reporter_));
|
| sampler_manager_.reset(new SamplerManager(feature_info_.get()));
|
|
|
| // Lookup GL things we need to know.
|
| @@ -299,14 +303,11 @@ bool ContextGroup::Initialize(GLES2Decoder* decoder,
|
| feature_info_->workarounds().max_texture_size);
|
| }
|
|
|
| - texture_manager_.reset(new TextureManager(memory_tracker_.get(),
|
| - feature_info_.get(),
|
| - max_texture_size,
|
| - max_cube_map_texture_size,
|
| - max_rectangle_texture_size,
|
| - max_3d_texture_size,
|
| - max_array_texture_layers,
|
| - bind_generates_resource_));
|
| + texture_manager_.reset(new TextureManager(
|
| + memory_tracker_.get(), feature_info_.get(), max_texture_size,
|
| + max_cube_map_texture_size, max_rectangle_texture_size,
|
| + max_3d_texture_size, max_array_texture_layers, bind_generates_resource_,
|
| + progress_reporter_));
|
| texture_manager_->set_framebuffer_manager(framebuffer_manager_.get());
|
|
|
| const GLint kMinTextureImageUnits = 8;
|
| @@ -435,14 +436,10 @@ bool ContextGroup::Initialize(GLES2Decoder* decoder,
|
|
|
| path_manager_.reset(new PathManager());
|
|
|
| - program_manager_.reset(
|
| - new ProgramManager(program_cache_,
|
| - max_varying_vectors_,
|
| - max_draw_buffers_,
|
| - max_dual_source_draw_buffers_,
|
| - max_vertex_attribs_,
|
| - gpu_preferences_,
|
| - feature_info_.get()));
|
| + program_manager_.reset(new ProgramManager(
|
| + program_cache_, max_varying_vectors_, max_draw_buffers_,
|
| + max_dual_source_draw_buffers_, max_vertex_attribs_, gpu_preferences_,
|
| + feature_info_.get(), progress_reporter_));
|
|
|
| if (!texture_manager_->Initialize()) {
|
| DLOG(ERROR) << "Context::Group::Initialize failed because texture manager "
|
| @@ -496,6 +493,7 @@ void ContextGroup::Destroy(GLES2Decoder* decoder, bool have_context) {
|
| }
|
| buffer_manager_->Destroy();
|
| buffer_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (framebuffer_manager_ != NULL) {
|
| @@ -503,42 +501,50 @@ void ContextGroup::Destroy(GLES2Decoder* decoder, bool have_context) {
|
| if (texture_manager_)
|
| texture_manager_->set_framebuffer_manager(NULL);
|
| framebuffer_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (renderbuffer_manager_ != NULL) {
|
| renderbuffer_manager_->Destroy(have_context);
|
| renderbuffer_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (texture_manager_ != NULL) {
|
| texture_manager_->Destroy(have_context);
|
| texture_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (path_manager_ != NULL) {
|
| path_manager_->Destroy(have_context);
|
| path_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (program_manager_ != NULL) {
|
| program_manager_->Destroy(have_context);
|
| program_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (shader_manager_ != NULL) {
|
| shader_manager_->Destroy(have_context);
|
| shader_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| if (sampler_manager_ != NULL) {
|
| sampler_manager_->Destroy(have_context);
|
| sampler_manager_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| memory_tracker_ = NULL;
|
|
|
| passthrough_resources_->Destroy(have_context);
|
| passthrough_resources_.reset();
|
| + progress_reporter_->ReportProgress();
|
| }
|
|
|
| uint32_t ContextGroup::GetMemRepresented() const {
|
|
|