Commit 30dad51b authored by Mario Sanchez Prada's avatar Mario Sanchez Prada Committed by Commit Bot

Migrate references to the viz::mojom::Gpu[MemoryBufferFactory] interfaces

Convert the remaining bits referencing the viz::mojom::Gpu and the
viz::mojom::GpuMemoryBufferFactory mojo interfaces using the old
APIs to the new mojo types.

TBR=kinuko@chromium.org

Bug: 955171
Change-Id: Ib210e455a9642803d6414e6daf42756eb929e0e0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1876350
Commit-Queue: Mario Sanchez Prada <mario@igalia.com>
Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Reviewed-by: default avatarenne <enne@chromium.org>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709421}
parent 864b5105
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
namespace content { namespace content {
std::unique_ptr<viz::GpuClient, base::OnTaskRunnerDeleter> CreateGpuClient( std::unique_ptr<viz::GpuClient, base::OnTaskRunnerDeleter> CreateGpuClient(
viz::mojom::GpuRequest request, mojo::PendingReceiver<viz::mojom::Gpu> receiver,
viz::GpuClient::ConnectionErrorHandlerClosure connection_error_handler, viz::GpuClient::ConnectionErrorHandlerClosure connection_error_handler,
scoped_refptr<base::SingleThreadTaskRunner> task_runner) { scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
const int client_id = ChildProcessHostImpl::GenerateChildProcessUniqueId(); const int client_id = ChildProcessHostImpl::GenerateChildProcessUniqueId();
...@@ -23,7 +23,7 @@ std::unique_ptr<viz::GpuClient, base::OnTaskRunnerDeleter> CreateGpuClient( ...@@ -23,7 +23,7 @@ std::unique_ptr<viz::GpuClient, base::OnTaskRunnerDeleter> CreateGpuClient(
gpu_client->SetConnectionErrorHandler(std::move(connection_error_handler)); gpu_client->SetConnectionErrorHandler(std::move(connection_error_handler));
task_runner->PostTask( task_runner->PostTask(
FROM_HERE, base::BindOnce(&viz::GpuClient::Add, gpu_client->GetWeakPtr(), FROM_HERE, base::BindOnce(&viz::GpuClient::Add, gpu_client->GetWeakPtr(),
std::move(request))); std::move(receiver)));
return gpu_client; return gpu_client;
} }
......
...@@ -9,13 +9,14 @@ ...@@ -9,13 +9,14 @@
#include "components/viz/host/gpu_client.h" #include "components/viz/host/gpu_client.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/viz/public/mojom/gpu.mojom.h" #include "services/viz/public/mojom/gpu.mojom.h"
namespace content { namespace content {
CONTENT_EXPORT CONTENT_EXPORT
std::unique_ptr<viz::GpuClient, base::OnTaskRunnerDeleter> CreateGpuClient( std::unique_ptr<viz::GpuClient, base::OnTaskRunnerDeleter> CreateGpuClient(
viz::mojom::GpuRequest request, mojo::PendingReceiver<viz::mojom::Gpu> receiver,
viz::GpuClient::ConnectionErrorHandlerClosure connection_error_handler, viz::GpuClient::ConnectionErrorHandlerClosure connection_error_handler,
scoped_refptr<base::SingleThreadTaskRunner> task_runner); scoped_refptr<base::SingleThreadTaskRunner> task_runner);
......
...@@ -32,7 +32,7 @@ void NotifyDestructionOnCorrectThread( ...@@ -32,7 +32,7 @@ void NotifyDestructionOnCorrectThread(
} // namespace } // namespace
ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager( ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager(
mojom::GpuMemoryBufferFactoryPtr gpu) mojo::PendingRemote<mojom::GpuMemoryBufferFactory> gpu)
: thread_("GpuMemoryThread"), : thread_("GpuMemoryThread"),
gpu_memory_buffer_support_( gpu_memory_buffer_support_(
std::make_unique<gpu::GpuMemoryBufferSupport>()) { std::make_unique<gpu::GpuMemoryBufferSupport>()) {
...@@ -41,7 +41,7 @@ ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager( ...@@ -41,7 +41,7 @@ ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager(
// the object has been destroyed. So Unretained() is safe. // the object has been destroyed. So Unretained() is safe.
thread_.task_runner()->PostTask( thread_.task_runner()->PostTask(
FROM_HERE, base::BindOnce(&ClientGpuMemoryBufferManager::InitThread, FROM_HERE, base::BindOnce(&ClientGpuMemoryBufferManager::InitThread,
base::Unretained(this), gpu.PassInterface())); base::Unretained(this), std::move(gpu)));
} }
ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() { ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() {
...@@ -52,9 +52,9 @@ ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() { ...@@ -52,9 +52,9 @@ ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() {
} }
void ClientGpuMemoryBufferManager::InitThread( void ClientGpuMemoryBufferManager::InitThread(
mojom::GpuMemoryBufferFactoryPtrInfo gpu_info) { mojo::PendingRemote<mojom::GpuMemoryBufferFactory> gpu_remote) {
gpu_.Bind(std::move(gpu_info)); gpu_.Bind(std::move(gpu_remote));
gpu_.set_connection_error_handler( gpu_.set_disconnect_handler(
base::BindOnce(&ClientGpuMemoryBufferManager::DisconnectGpuOnThread, base::BindOnce(&ClientGpuMemoryBufferManager::DisconnectGpuOnThread,
base::Unretained(this))); base::Unretained(this)));
weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); weak_ptr_ = weak_ptr_factory_.GetWeakPtr();
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/viz/public/mojom/gpu.mojom.h" #include "services/viz/public/mojom/gpu.mojom.h"
namespace base { namespace base {
...@@ -30,11 +32,13 @@ namespace viz { ...@@ -30,11 +32,13 @@ namespace viz {
// mojom::GpuMemoryBufferFactory // mojom::GpuMemoryBufferFactory
class ClientGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager { class ClientGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
public: public:
explicit ClientGpuMemoryBufferManager(mojom::GpuMemoryBufferFactoryPtr gpu); explicit ClientGpuMemoryBufferManager(
mojo::PendingRemote<mojom::GpuMemoryBufferFactory> gpu);
~ClientGpuMemoryBufferManager() override; ~ClientGpuMemoryBufferManager() override;
private: private:
void InitThread(mojom::GpuMemoryBufferFactoryPtrInfo gpu_info); void InitThread(
mojo::PendingRemote<mojom::GpuMemoryBufferFactory> gpu_remote);
void TearDownThread(); void TearDownThread();
void DisconnectGpuOnThread(); void DisconnectGpuOnThread();
void AllocateGpuMemoryBufferOnThread(const gfx::Size& size, void AllocateGpuMemoryBufferOnThread(const gfx::Size& size,
...@@ -61,7 +65,7 @@ class ClientGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager { ...@@ -61,7 +65,7 @@ class ClientGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
int counter_ = 0; int counter_ = 0;
// TODO(sad): Explore the option of doing this from an existing thread. // TODO(sad): Explore the option of doing this from an existing thread.
base::Thread thread_; base::Thread thread_;
mojom::GpuMemoryBufferFactoryPtr gpu_; mojo::Remote<mojom::GpuMemoryBufferFactory> gpu_;
base::WeakPtr<ClientGpuMemoryBufferManager> weak_ptr_; base::WeakPtr<ClientGpuMemoryBufferManager> weak_ptr_;
std::set<base::WaitableEvent*> pending_allocation_waiters_; std::set<base::WaitableEvent*> pending_allocation_waiters_;
std::unique_ptr<gpu::GpuMemoryBufferSupport> gpu_memory_buffer_support_; std::unique_ptr<gpu::GpuMemoryBufferSupport> gpu_memory_buffer_support_;
......
...@@ -15,31 +15,31 @@ ...@@ -15,31 +15,31 @@
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/connector.h"
#include "services/viz/public/cpp/gpu/client_gpu_memory_buffer_manager.h" #include "services/viz/public/cpp/gpu/client_gpu_memory_buffer_manager.h"
#include "services/viz/public/mojom/gpu.mojom.h" #include "services/viz/public/mojom/gpu.mojom.h"
namespace viz { namespace viz {
// Encapsulates a mojom::GpuPtr object that will be used on the IO thread. This // Encapsulates a mojo::Remote<mojom::Gpu> object that will be used on the IO
// is required because we can't install an error handler on a // thread. This is required because we can't install an error handler on a
// mojom::GpuThreadSafePtr to detect if the message pipe was closed. Only the // mojo::SharedRemote<mojom::Gpu> to detect if the message pipe was closed. Only
// constructor can be called on the main thread. // the constructor can be called on the main thread.
class Gpu::GpuPtrIO { class Gpu::GpuPtrIO {
public: public:
GpuPtrIO() { DETACH_FROM_THREAD(thread_checker_); } GpuPtrIO() { DETACH_FROM_THREAD(thread_checker_); }
~GpuPtrIO() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); } ~GpuPtrIO() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); }
void Initialize(mojom::GpuPtrInfo ptr_info, void Initialize(mojo::PendingRemote<mojom::Gpu> gpu_remote,
mojo::PendingReceiver<mojom::GpuMemoryBufferFactory> mojo::PendingReceiver<mojom::GpuMemoryBufferFactory>
memory_buffer_factory_receiver) { memory_buffer_factory_receiver) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
gpu_ptr_.Bind(std::move(ptr_info)); gpu_remote_.Bind(std::move(gpu_remote));
gpu_ptr_.set_connection_error_handler( gpu_remote_.set_disconnect_handler(
base::BindOnce(&GpuPtrIO::ConnectionError, base::Unretained(this))); base::BindOnce(&GpuPtrIO::ConnectionError, base::Unretained(this)));
gpu_ptr_->CreateGpuMemoryBufferFactory( gpu_remote_->CreateGpuMemoryBufferFactory(
std::move(memory_buffer_factory_receiver)); std::move(memory_buffer_factory_receiver));
} }
...@@ -48,11 +48,11 @@ class Gpu::GpuPtrIO { ...@@ -48,11 +48,11 @@ class Gpu::GpuPtrIO {
DCHECK(!establish_request_); DCHECK(!establish_request_);
establish_request_ = std::move(establish_request); establish_request_ = std::move(establish_request);
if (gpu_ptr_.encountered_error()) { if (gpu_remote_.is_connected()) {
ConnectionError(); gpu_remote_->EstablishGpuChannel(base::BindOnce(
} else {
gpu_ptr_->EstablishGpuChannel(base::BindOnce(
&GpuPtrIO::OnEstablishedGpuChannel, base::Unretained(this))); &GpuPtrIO::OnEstablishedGpuChannel, base::Unretained(this)));
} else {
ConnectionError();
} }
} }
...@@ -61,7 +61,7 @@ class Gpu::GpuPtrIO { ...@@ -61,7 +61,7 @@ class Gpu::GpuPtrIO {
mojo::PendingReceiver<chromeos_camera::mojom::MjpegDecodeAccelerator> mojo::PendingReceiver<chromeos_camera::mojom::MjpegDecodeAccelerator>
receiver) { receiver) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
gpu_ptr_->CreateJpegDecodeAccelerator(std::move(receiver)); gpu_remote_->CreateJpegDecodeAccelerator(std::move(receiver));
} }
#endif // defined(OS_CHROMEOS) #endif // defined(OS_CHROMEOS)
...@@ -69,7 +69,7 @@ class Gpu::GpuPtrIO { ...@@ -69,7 +69,7 @@ class Gpu::GpuPtrIO {
mojo::PendingReceiver<media::mojom::VideoEncodeAcceleratorProvider> mojo::PendingReceiver<media::mojom::VideoEncodeAcceleratorProvider>
receiver) { receiver) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
gpu_ptr_->CreateVideoEncodeAcceleratorProvider(std::move(receiver)); gpu_remote_->CreateVideoEncodeAcceleratorProvider(std::move(receiver));
} }
private: private:
...@@ -79,7 +79,7 @@ class Gpu::GpuPtrIO { ...@@ -79,7 +79,7 @@ class Gpu::GpuPtrIO {
const gpu::GPUInfo& gpu_info, const gpu::GPUInfo& gpu_info,
const gpu::GpuFeatureInfo& gpu_feature_info); const gpu::GpuFeatureInfo& gpu_feature_info);
mojom::GpuPtr gpu_ptr_; mojo::Remote<mojom::Gpu> gpu_remote_;
// This will point to a request that is waiting for the result of // This will point to a request that is waiting for the result of
// EstablishGpuChannel(). |establish_request_| will be notified when the IPC // EstablishGpuChannel(). |establish_request_| will be notified when the IPC
...@@ -233,7 +233,7 @@ void Gpu::GpuPtrIO::OnEstablishedGpuChannel( ...@@ -233,7 +233,7 @@ void Gpu::GpuPtrIO::OnEstablishedGpuChannel(
establish_request_.reset(); establish_request_.reset();
} }
Gpu::Gpu(mojom::GpuPtr gpu_ptr, Gpu::Gpu(mojo::PendingRemote<mojom::Gpu> gpu_remote,
scoped_refptr<base::SingleThreadTaskRunner> task_runner) scoped_refptr<base::SingleThreadTaskRunner> task_runner)
: main_task_runner_(base::ThreadTaskRunnerHandle::Get()), : main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
io_task_runner_(std::move(task_runner)), io_task_runner_(std::move(task_runner)),
...@@ -241,20 +241,20 @@ Gpu::Gpu(mojom::GpuPtr gpu_ptr, ...@@ -241,20 +241,20 @@ Gpu::Gpu(mojom::GpuPtr gpu_ptr,
DCHECK(main_task_runner_); DCHECK(main_task_runner_);
DCHECK(io_task_runner_); DCHECK(io_task_runner_);
mojom::GpuMemoryBufferFactoryPtr gpu_memory_buffer_factory; mojo::PendingRemote<mojom::GpuMemoryBufferFactory> gpu_memory_buffer_factory;
auto gpu_memory_buffer_factory_request = auto gpu_memory_buffer_factory_receiver =
mojo::MakeRequest(&gpu_memory_buffer_factory); gpu_memory_buffer_factory.InitWithNewPipeAndPassReceiver();
gpu_memory_buffer_manager_ = std::make_unique<ClientGpuMemoryBufferManager>( gpu_memory_buffer_manager_ = std::make_unique<ClientGpuMemoryBufferManager>(
std::move(gpu_memory_buffer_factory)); std::move(gpu_memory_buffer_factory));
// Initialize mojom::GpuPtr on the IO thread. |gpu_| can only be used on // Initialize mojo::Remote<mojom::Gpu> on the IO thread. |gpu_| can only be
// the IO thread after this point. It is safe to use base::Unretained with // used on the IO thread after this point. It is safe to use base::Unretained
// |gpu_| for IO thread tasks as |gpu_| is destroyed by an IO thread task // with |gpu_| for IO thread tasks as |gpu_| is destroyed by an IO thread task
// posted from the destructor. // posted from the destructor.
io_task_runner_->PostTask( io_task_runner_->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(&GpuPtrIO::Initialize, base::Unretained(gpu_.get()), base::BindOnce(&GpuPtrIO::Initialize, base::Unretained(gpu_.get()),
base::Passed(gpu_ptr.PassInterface()), base::Passed(std::move(gpu_remote)),
std::move(gpu_memory_buffer_factory_request))); std::move(gpu_memory_buffer_factory_receiver)));
} }
Gpu::~Gpu() { Gpu::~Gpu() {
...@@ -282,9 +282,8 @@ std::unique_ptr<Gpu> Gpu::Create( ...@@ -282,9 +282,8 @@ std::unique_ptr<Gpu> Gpu::Create(
std::unique_ptr<Gpu> Gpu::Create( std::unique_ptr<Gpu> Gpu::Create(
mojo::PendingRemote<mojom::Gpu> remote, mojo::PendingRemote<mojom::Gpu> remote,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) { scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) {
mojom::GpuPtr gpu_ptr(std::move(remote));
return base::WrapUnique( return base::WrapUnique(
new Gpu(std::move(gpu_ptr), std::move(io_task_runner))); new Gpu(std::move(remote), std::move(io_task_runner)));
} }
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
......
...@@ -66,7 +66,7 @@ class Gpu : public gpu::GpuChannelEstablishFactory { ...@@ -66,7 +66,7 @@ class Gpu : public gpu::GpuChannelEstablishFactory {
class GpuPtrIO; class GpuPtrIO;
class EstablishRequest; class EstablishRequest;
Gpu(mojom::GpuPtr gpu_ptr, Gpu(mojo::PendingRemote<mojom::Gpu> gpu_remote,
scoped_refptr<base::SingleThreadTaskRunner> task_runner); scoped_refptr<base::SingleThreadTaskRunner> task_runner);
// Sends a request to establish a gpu channel. If a request is currently // Sends a request to establish a gpu channel. If a request is currently
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "gpu/config/gpu_feature_info.h" #include "gpu/config/gpu_feature_info.h"
#include "gpu/config/gpu_info.h" #include "gpu/config/gpu_info.h"
#include "mojo/public/cpp/bindings/binding_set.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace viz { namespace viz {
...@@ -31,8 +33,8 @@ class TestGpuImpl : public mojom::Gpu { ...@@ -31,8 +33,8 @@ class TestGpuImpl : public mojom::Gpu {
void CloseBindingOnRequest() { close_binding_on_request_ = true; } void CloseBindingOnRequest() { close_binding_on_request_ = true; }
void BindRequest(mojom::GpuRequest request) { void BindReceiver(mojo::PendingReceiver<mojom::Gpu> receiver) {
bindings_.AddBinding(this, std::move(request)); receivers_.Add(this, std::move(receiver));
} }
// mojom::Gpu overrides: // mojom::Gpu overrides:
...@@ -42,7 +44,7 @@ class TestGpuImpl : public mojom::Gpu { ...@@ -42,7 +44,7 @@ class TestGpuImpl : public mojom::Gpu {
void EstablishGpuChannel(EstablishGpuChannelCallback callback) override { void EstablishGpuChannel(EstablishGpuChannelCallback callback) override {
if (close_binding_on_request_) { if (close_binding_on_request_) {
// Don't run |callback| and trigger a connection error on the other end. // Don't run |callback| and trigger a connection error on the other end.
bindings_.CloseAllBindings(); receivers_.Clear();
return; return;
} }
...@@ -71,7 +73,7 @@ class TestGpuImpl : public mojom::Gpu { ...@@ -71,7 +73,7 @@ class TestGpuImpl : public mojom::Gpu {
private: private:
bool request_will_succeed_ = true; bool request_will_succeed_ = true;
bool close_binding_on_request_ = false; bool close_binding_on_request_ = false;
mojo::BindingSet<mojom::Gpu> bindings_; mojo::ReceiverSet<mojom::Gpu> receivers_;
// Closing this handle will result in GpuChannelHost being lost. // Closing this handle will result in GpuChannelHost being lost.
mojo::ScopedMessagePipeHandle gpu_channel_handle_; mojo::ScopedMessagePipeHandle gpu_channel_handle_;
...@@ -127,7 +129,7 @@ class GpuTest : public testing::Test { ...@@ -127,7 +129,7 @@ class GpuTest : public testing::Test {
// testing::Test: // testing::Test:
void SetUp() override { void SetUp() override {
gpu_impl_ = std::make_unique<TestGpuImpl>(); gpu_impl_ = std::make_unique<TestGpuImpl>();
gpu_ = base::WrapUnique(new Gpu(GetPtr(), io_thread_.task_runner())); gpu_ = base::WrapUnique(new Gpu(GetRemote(), io_thread_.task_runner()));
} }
void TearDown() override { void TearDown() override {
...@@ -136,13 +138,14 @@ class GpuTest : public testing::Test { ...@@ -136,13 +138,14 @@ class GpuTest : public testing::Test {
} }
private: private:
mojom::GpuPtr GetPtr() { mojo::PendingRemote<mojom::Gpu> GetRemote() {
mojom::GpuPtr ptr; mojo::PendingRemote<mojom::Gpu> remote;
io_thread_.task_runner()->PostTask( io_thread_.task_runner()->PostTask(
FROM_HERE, base::BindOnce(&TestGpuImpl::BindRequest, FROM_HERE,
base::Unretained(gpu_impl_.get()), base::BindOnce(&TestGpuImpl::BindReceiver,
base::Passed(MakeRequest(&ptr)))); base::Unretained(gpu_impl_.get()),
return ptr; base::Passed(remote.InitWithNewPipeAndPassReceiver())));
return remote;
} }
void DestroyGpuImplOnIO() { void DestroyGpuImplOnIO() {
......
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