Commit baa5695e authored by Geoff Lang's avatar Geoff Lang Committed by Commit Bot

Revert "Don't create manager objects in ContextGroup when using the passthrough decoder"

This reverts commit 248bfd1f.

Reason for revert: Broke some Android WebGL video tests

BUG=1047201

Original change's description:
> Don't create manager objects in ContextGroup when using the passthrough decoder
> 
> These objects are not used when the passthrough command decoder is in
> use.  This saves several GPU memory allocations in TextureManager for
> default and black textures.
> 
> Saves ~2 MB per context.
> 
> BUG=1046613
> BUG=1030835
> 
> Change-Id: I66c6acf28580742bc313d8cf79de80f7f7d98305
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2028291
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
> Reviewed-by: Dan Sanders <sandersd@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#736631}

TBR=zmo@chromium.org,geofflang@chromium.org,sandersd@chromium.org

Change-Id: I82ca36bd0b449e743ef819fbfe6ad161b219a8d0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1046613, 1030835
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2031164Reviewed-by: default avatarGeoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736863}
parent 57b5d56f
......@@ -263,17 +263,13 @@ gpu::ContextResult ContextGroup::Initialize(
&uniform_buffer_offset_alignment_);
}
// Managers are not used by the passthrough command decoder. Save memory by
// not allocating them.
if (!use_passthrough_cmd_decoder_) {
buffer_manager_ = std::make_unique<BufferManager>(memory_tracker_.get(),
feature_info_.get());
renderbuffer_manager_ = std::make_unique<RenderbufferManager>(
memory_tracker_.get(), max_renderbuffer_size, max_samples,
feature_info_.get());
shader_manager_ = std::make_unique<ShaderManager>(progress_reporter_);
sampler_manager_ = std::make_unique<SamplerManager>(feature_info_.get());
}
buffer_manager_ = std::make_unique<BufferManager>(memory_tracker_.get(),
feature_info_.get());
renderbuffer_manager_ = std::make_unique<RenderbufferManager>(
memory_tracker_.get(), max_renderbuffer_size, max_samples,
feature_info_.get());
shader_manager_ = std::make_unique<ShaderManager>(progress_reporter_);
sampler_manager_ = std::make_unique<SamplerManager>(feature_info_.get());
// Lookup GL things we need to know.
const GLint kGLES2RequiredMinimumVertexAttribs = 8u;
......@@ -393,15 +389,11 @@ gpu::ContextResult ContextGroup::Initialize(
feature_info_->workarounds().max_3d_array_texture_size);
}
// Managers are not used by the passthrough command decoder. Save memory by
// not allocating them.
if (!use_passthrough_cmd_decoder_) {
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_, discardable_manager_));
}
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_, discardable_manager_));
const GLint kMinTextureImageUnits = 8;
const GLint kMinVertexTextureImageUnits = 0;
......@@ -531,18 +523,14 @@ gpu::ContextResult ContextGroup::Initialize(
}
}
// Managers are not used by the passthrough command decoder. Save memory by
// not allocating them.
if (!use_passthrough_cmd_decoder_) {
path_manager_ = std::make_unique<PathManager>();
path_manager_ = std::make_unique<PathManager>();
program_manager_ = std::make_unique<ProgramManager>(
program_cache_, max_varying_vectors_, max_draw_buffers_,
max_dual_source_draw_buffers_, max_vertex_attribs_, gpu_preferences_,
feature_info_.get(), progress_reporter_);
program_manager_ = std::make_unique<ProgramManager>(
program_cache_, max_varying_vectors_, max_draw_buffers_,
max_dual_source_draw_buffers_, max_vertex_attribs_, gpu_preferences_,
feature_info_.get(), progress_reporter_);
texture_manager_->Initialize();
}
texture_manager_->Initialize();
decoders_.push_back(decoder->AsWeakPtr());
return gpu::ContextResult::kSuccess;
......
......@@ -15,6 +15,7 @@
#include "gpu/command_buffer/service/decoder_context.h"
#include "gpu/command_buffer/service/scheduler.h"
#include "gpu/command_buffer/service/sync_point_manager.h"
#include "gpu/command_buffer/service/texture_manager.h"
#include "gpu/ipc/service/command_buffer_stub.h"
#include "gpu/ipc/service/gpu_channel.h"
#include "media/gpu/gles2_decoder_helper.h"
......
......@@ -14,6 +14,7 @@
#include "gpu/command_buffer/service/context_group.h"
#include "gpu/command_buffer/service/decoder_context.h"
#include "gpu/command_buffer/service/mailbox_manager.h"
#include "gpu/command_buffer/service/texture_manager.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/scoped_binders.h"
......@@ -27,7 +28,10 @@ class GLES2DecoderHelperImpl : public GLES2DecoderHelper {
: decoder_(decoder) {
DCHECK(decoder_);
gpu::gles2::ContextGroup* group = decoder_->GetContextGroup();
texture_manager_ = group->texture_manager();
mailbox_manager_ = group->mailbox_manager();
// TODO(sandersd): Support GLES2DecoderPassthroughImpl.
DCHECK(texture_manager_);
DCHECK(mailbox_manager_);
}
......@@ -93,6 +97,7 @@ class GLES2DecoderHelperImpl : public GLES2DecoderHelper {
private:
gpu::DecoderContext* decoder_;
gpu::gles2::TextureManager* texture_manager_;
gpu::MailboxManager* mailbox_manager_;
THREAD_CHECKER(thread_checker_);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment