Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Unified Diff: gpu/command_buffer/service/in_process_command_buffer.cc

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/in_process_command_buffer.cc
diff --git a/gpu/command_buffer/service/in_process_command_buffer.cc b/gpu/command_buffer/service/in_process_command_buffer.cc
index 815b197e3b178a1f8adefd9ef12ab0057bd38d36..8836904ce9d6360344238f72a63b8d3cd23b5a4a 100644
--- a/gpu/command_buffer/service/in_process_command_buffer.cc
+++ b/gpu/command_buffer/service/in_process_command_buffer.cc
@@ -19,6 +19,7 @@
#include "base/synchronization/condition_variable.h"
#include "base/threading/thread.h"
#include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
+#include "gpu/command_buffer/common/value_state.h"
#include "gpu/command_buffer/service/command_buffer_service.h"
#include "gpu/command_buffer/service/context_group.h"
#include "gpu/command_buffer/service/gl_context_virtual.h"
@@ -105,9 +106,12 @@ GpuInProcessThread::shader_translator_cache() {
return shader_translator_cache_;
}
-base::LazyInstance<std::set<InProcessCommandBuffer*> > default_thread_clients_ =
- LAZY_INSTANCE_INITIALIZER;
-base::LazyInstance<base::Lock> default_thread_clients_lock_ =
+struct GpuInProcessThreadHolder {
+ GpuInProcessThreadHolder() : gpu_thread(new GpuInProcessThread) {}
+ scoped_refptr<InProcessCommandBuffer::Service> gpu_thread;
+};
+
+base::LazyInstance<GpuInProcessThreadHolder> g_default_service =
LAZY_INSTANCE_INITIALIZER;
class ScopedEvent {
@@ -194,18 +198,12 @@ InProcessCommandBuffer::Service::mailbox_manager() {
return mailbox_manager_;
}
-scoped_refptr<InProcessCommandBuffer::Service>
-InProcessCommandBuffer::GetDefaultService() {
- base::AutoLock lock(default_thread_clients_lock_.Get());
- scoped_refptr<Service> service;
- if (!default_thread_clients_.Get().empty()) {
- InProcessCommandBuffer* other = *default_thread_clients_.Get().begin();
- service = other->service_;
- DCHECK(service.get());
- } else {
- service = new GpuInProcessThread;
+scoped_refptr<gpu::ValueStateMap>
+InProcessCommandBuffer::Service::pending_valuebuffer_state() {
+ if (!pending_valuebuffer_state_.get()) {
+ pending_valuebuffer_state_ = new gpu::ValueStateMap();
}
- return service;
+ return pending_valuebuffer_state_;
}
InProcessCommandBuffer::InProcessCommandBuffer(
@@ -216,19 +214,14 @@ InProcessCommandBuffer::InProcessCommandBuffer(
last_put_offset_(-1),
gpu_memory_buffer_manager_(nullptr),
flush_event_(false, false),
- service_(service.get() ? service : GetDefaultService()),
+ service_(service.get() ? service : g_default_service.Get().gpu_thread),
gpu_thread_weak_ptr_factory_(this) {
- if (!service.get()) {
- base::AutoLock lock(default_thread_clients_lock_.Get());
- default_thread_clients_.Get().insert(this);
- }
+ DCHECK(service_.get());
next_image_id_.GetNext();
}
InProcessCommandBuffer::~InProcessCommandBuffer() {
Destroy();
- base::AutoLock lock(default_thread_clients_lock_.Get());
- default_thread_clients_.Get().erase(this);
}
void InProcessCommandBuffer::OnResizeView(gfx::Size size, float scale_factor) {
@@ -358,6 +351,7 @@ bool InProcessCommandBuffer::InitializeOnGpuThread(
NULL,
service_->shader_translator_cache(),
NULL,
+ service_->pending_valuebuffer_state(),
bind_generates_resource)));
gpu_scheduler_.reset(
« no previous file with comments | « gpu/command_buffer/service/in_process_command_buffer.h ('k') | gpu/command_buffer/service/program_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698