| Index: content/browser/gpu/browser_gpu_channel_host_factory.cc
|
| diff --git a/content/browser/gpu/browser_gpu_channel_host_factory.cc b/content/browser/gpu/browser_gpu_channel_host_factory.cc
|
| index 29adc69ad843421354be30f50f2cf30bd5070cd6..f624d0db4b07e4b338aec17a5a2118974646bf2a 100644
|
| --- a/content/browser/gpu/browser_gpu_channel_host_factory.cc
|
| +++ b/content/browser/gpu/browser_gpu_channel_host_factory.cc
|
| @@ -9,12 +9,12 @@
|
| #include "base/synchronization/waitable_event.h"
|
| #include "base/threading/thread_restrictions.h"
|
| #include "base/tracked_objects.h"
|
| +#include "content/browser/gpu/browser_gpu_memory_buffer_manager.h"
|
| #include "content/browser/gpu/gpu_data_manager_impl.h"
|
| #include "content/browser/gpu/gpu_memory_buffer_factory_host_impl.h"
|
| #include "content/browser/gpu/gpu_process_host.h"
|
| #include "content/browser/gpu/gpu_surface_tracker.h"
|
| #include "content/common/child_process_host_impl.h"
|
| -#include "content/common/gpu/client/gpu_memory_buffer_impl.h"
|
| #include "content/common/gpu/gpu_messages.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/gpu_data_manager.h"
|
| @@ -40,28 +40,6 @@ struct BrowserGpuChannelHostFactory::CreateRequest {
|
| CreateCommandBufferResult result;
|
| };
|
|
|
| -struct BrowserGpuChannelHostFactory::AllocateGpuMemoryBufferRequest {
|
| - AllocateGpuMemoryBufferRequest(size_t width,
|
| - size_t height,
|
| - unsigned internalformat,
|
| - unsigned usage,
|
| - int client_id)
|
| - : event(true, false),
|
| - width(width),
|
| - height(height),
|
| - internalformat(internalformat),
|
| - usage(usage),
|
| - client_id(client_id) {}
|
| - ~AllocateGpuMemoryBufferRequest() {}
|
| - base::WaitableEvent event;
|
| - size_t width;
|
| - size_t height;
|
| - unsigned internalformat;
|
| - unsigned usage;
|
| - int client_id;
|
| - scoped_ptr<gfx::GpuMemoryBuffer> result;
|
| -};
|
| -
|
| class BrowserGpuChannelHostFactory::EstablishRequest
|
| : public base::RefCountedThreadSafe<EstablishRequest> {
|
| public:
|
| @@ -245,6 +223,7 @@ BrowserGpuChannelHostFactory::BrowserGpuChannelHostFactory()
|
| shutdown_event_(new base::WaitableEvent(true, false)),
|
| gpu_memory_buffer_factory_host_(new GpuMemoryBufferFactoryHostImpl),
|
| gpu_host_id_(0) {
|
| + BrowserGpuMemoryBufferManager::current()->set_gpu_client_id(gpu_client_id_);
|
| }
|
|
|
| BrowserGpuChannelHostFactory::~BrowserGpuChannelHostFactory() {
|
| @@ -376,10 +355,12 @@ void BrowserGpuChannelHostFactory::GpuChannelEstablished() {
|
| DCHECK(!gpu_channel_.get());
|
| } else {
|
| GetContentClient()->SetGpuInfo(pending_request_->gpu_info());
|
| - gpu_channel_ = GpuChannelHost::Create(this,
|
| - pending_request_->gpu_info(),
|
| - pending_request_->channel_handle(),
|
| - shutdown_event_.get());
|
| + gpu_channel_ =
|
| + GpuChannelHost::Create(this,
|
| + pending_request_->gpu_info(),
|
| + pending_request_->channel_handle(),
|
| + shutdown_event_.get(),
|
| + BrowserGpuMemoryBufferManager::current());
|
| }
|
| gpu_host_id_ = pending_request_->gpu_host_id();
|
| gpu_memory_buffer_factory_host_->set_gpu_host_id(gpu_host_id_);
|
| @@ -391,28 +372,6 @@ void BrowserGpuChannelHostFactory::GpuChannelEstablished() {
|
| established_callbacks_.clear();
|
| }
|
|
|
| -scoped_ptr<gfx::GpuMemoryBuffer>
|
| -BrowserGpuChannelHostFactory::AllocateGpuMemoryBuffer(size_t width,
|
| - size_t height,
|
| - unsigned internalformat,
|
| - unsigned usage) {
|
| - DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - AllocateGpuMemoryBufferRequest request(
|
| - width, height, internalformat, usage, gpu_client_id_);
|
| - GetIOLoopProxy()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&BrowserGpuChannelHostFactory::AllocateGpuMemoryBufferOnIO,
|
| - base::Unretained(&request)));
|
| -
|
| - // We're blocking the UI thread, which is generally undesirable.
|
| - TRACE_EVENT0("browser",
|
| - "BrowserGpuChannelHostFactory::AllocateGpuMemoryBuffer");
|
| - base::ThreadRestrictions::ScopedAllowWait allow_wait;
|
| - request.event.Wait();
|
| - return request.result.Pass();
|
| -}
|
| -
|
| // static
|
| void BrowserGpuChannelHostFactory::AddFilterOnIO(
|
| int host_id,
|
| @@ -447,33 +406,4 @@ void BrowserGpuChannelHostFactory::SetHandlerForControlMessages(
|
| filter));
|
| }
|
|
|
| -// static
|
| -void BrowserGpuChannelHostFactory::AllocateGpuMemoryBufferOnIO(
|
| - AllocateGpuMemoryBufferRequest* request) {
|
| - if (!GpuMemoryBufferImpl::IsFormatValid(request->internalformat) ||
|
| - !GpuMemoryBufferImpl::IsUsageValid(request->usage)) {
|
| - request->result = scoped_ptr<gfx::GpuMemoryBuffer>();
|
| - request->event.Signal();
|
| - return;
|
| - }
|
| -
|
| - GpuMemoryBufferImpl::Create(
|
| - gfx::Size(request->width, request->height),
|
| - request->internalformat,
|
| - request->usage,
|
| - request->client_id,
|
| - base::Bind(&BrowserGpuChannelHostFactory::OnGpuMemoryBufferCreated,
|
| - base::Unretained(request)));
|
| -}
|
| -
|
| -// static
|
| -void BrowserGpuChannelHostFactory::OnGpuMemoryBufferCreated(
|
| - AllocateGpuMemoryBufferRequest* request,
|
| - scoped_ptr<GpuMemoryBufferImpl> buffer) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - request->result = buffer.PassAs<gfx::GpuMemoryBuffer>();
|
| - request->event.Signal();
|
| -}
|
| -
|
| } // namespace content
|
|
|