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

Unified Diff: services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month 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: services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
diff --git a/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc b/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
index 342670b1f499efa0be663afe2770642a8451ec4b..81b5620d7bc213fb1886251dda83f112af64c5e4 100644
--- a/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
+++ b/services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc
@@ -4,22 +4,69 @@
#include "services/ui/public/cpp/mojo_gpu_memory_buffer_manager.h"
+#include "base/bind.h"
#include "base/logging.h"
-#include "services/ui/public/cpp/mojo_gpu_memory_buffer.h"
+#include "base/memory/ptr_util.h"
+#include "base/memory/shared_memory.h"
+#include "gpu/ipc/client/gpu_memory_buffer_impl.h"
+#include "mojo/public/cpp/system/buffer.h"
+#include "mojo/public/cpp/system/platform_handle.h"
+#include "ui/gfx/buffer_format_util.h"
namespace ui {
-MojoGpuMemoryBufferManager::MojoGpuMemoryBufferManager() {}
+MojoGpuMemoryBufferManager::MojoGpuMemoryBufferManager()
+ : weak_ptr_factory_(this) {}
MojoGpuMemoryBufferManager::~MojoGpuMemoryBufferManager() {}
+void MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer(
+ gfx::GpuMemoryBufferId id,
+ const gpu::SyncToken& sync_token) {
+}
+
std::unique_ptr<gfx::GpuMemoryBuffer>
MojoGpuMemoryBufferManager::AllocateGpuMemoryBuffer(
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
gpu::SurfaceHandle surface_handle) {
- return MojoGpuMemoryBufferImpl::Create(size, format, usage);
+ // TODO(sad): Get the memory buffer handle from GpuService.
+ size_t bytes = gfx::BufferSizeForBufferFormat(size, format);
+
+ mojo::ScopedSharedBufferHandle handle =
+ mojo::SharedBufferHandle::Create(bytes);
+ if (!handle.is_valid())
+ return nullptr;
+
+ base::SharedMemoryHandle shm_handle;
+ size_t shared_memory_size;
+ bool readonly;
+ MojoResult result = mojo::UnwrapSharedMemoryHandle(
+ std::move(handle), &shm_handle, &shared_memory_size, &readonly);
+ if (result != MOJO_RESULT_OK)
+ return nullptr;
+ DCHECK_EQ(shared_memory_size, bytes);
+
+ const int stride = base::checked_cast<int>(
+ gfx::RowSizeForBufferFormat(size.width(), format, 0));
+
+ gfx::GpuMemoryBufferHandle gmb_handle;
+ gmb_handle.type = gfx::SHARED_MEMORY_BUFFER;
+ gmb_handle.id = gfx::GpuMemoryBufferId(++counter_);
+ gmb_handle.handle = shm_handle;
+ gmb_handle.offset = 0;
+ gmb_handle.stride = stride;
+
+ std::unique_ptr<gpu::GpuMemoryBufferImpl> buffer(
+ gpu::GpuMemoryBufferImpl::CreateFromHandle(
+ gmb_handle, size, format, usage,
+ base::Bind(&MojoGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
+ weak_ptr_factory_.GetWeakPtr(), gmb_handle.id)));
+ if (!buffer)
+ return nullptr;
+
+ return std::move(buffer);
}
std::unique_ptr<gfx::GpuMemoryBuffer>
@@ -27,20 +74,21 @@ MojoGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle(
const gfx::GpuMemoryBufferHandle& handle,
const gfx::Size& size,
gfx::BufferFormat format) {
- const gfx::BufferUsage usage = gfx::BufferUsage::GPU_READ;
- return MojoGpuMemoryBufferImpl::CreateFromHandle(handle, size, format, usage);
+ NOTIMPLEMENTED();
+ return nullptr;
}
gfx::GpuMemoryBuffer*
MojoGpuMemoryBufferManager::GpuMemoryBufferFromClientBuffer(
ClientBuffer buffer) {
- return MojoGpuMemoryBufferImpl::FromClientBuffer(buffer);
+ return gpu::GpuMemoryBufferImpl::FromClientBuffer(buffer);
}
void MojoGpuMemoryBufferManager::SetDestructionSyncToken(
gfx::GpuMemoryBuffer* buffer,
const gpu::SyncToken& sync_token) {
- NOTIMPLEMENTED();
+ static_cast<gpu::GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token(
+ sync_token);
}
} // namespace ui
« no previous file with comments | « services/ui/public/cpp/mojo_gpu_memory_buffer_manager.h ('k') | services/ui/public/cpp/window_compositor_frame_sink.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698