Commit 394636a1 authored by hajimehoshi's avatar hajimehoshi Committed by Commit Bot

Add gpu::BufferBacking::shared_memory_handle()

This CL adds a base::SharedMemoryHandle getter to gpu::BufferBacking.
The getter will be used by gpu::BufferBacking users when OnMemoryDump is
called to create base::SharedMemory dumps.

This is part of work for exposing SharedMemory usages on tracing
memory-infra dumps.

Design doc: https://docs.google.com/document/d/16Mi5_puxKgQ-9IX7ANfbji0WiqBCK3yrnJ0Qi2wa3w0/edit#heading=h.lofdeze1a2hr

Note: This can conflict with https://codereview.chromium.org/2912723002/

BUG=604726
TEST=gpu_unittests --gtest_filter=Buffer.*
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2909003002
Cr-Commit-Position: refs/heads/master@{#475837}
parent 4927f54d
...@@ -232,6 +232,7 @@ test("gpu_unittests") { ...@@ -232,6 +232,7 @@ test("gpu_unittests") {
"command_buffer/client/vertex_array_object_manager_unittest.cc", "command_buffer/client/vertex_array_object_manager_unittest.cc",
"command_buffer/common/activity_flags_unittest.cc", "command_buffer/common/activity_flags_unittest.cc",
"command_buffer/common/bitfield_helpers_test.cc", "command_buffer/common/bitfield_helpers_test.cc",
"command_buffer/common/buffer_unittest.cc",
"command_buffer/common/command_buffer_shared_test.cc", "command_buffer/common/command_buffer_shared_test.cc",
"command_buffer/common/debug_marker_manager_unittest.cc", "command_buffer/common/debug_marker_manager_unittest.cc",
"command_buffer/common/discardable_handle_unittest.cc", "command_buffer/common/discardable_handle_unittest.cc",
......
...@@ -18,6 +18,10 @@ bool BufferBacking::is_shared() const { ...@@ -18,6 +18,10 @@ bool BufferBacking::is_shared() const {
return false; return false;
} }
base::SharedMemoryHandle BufferBacking::shared_memory_handle() const {
return base::SharedMemoryHandle();
}
SharedMemoryBufferBacking::SharedMemoryBufferBacking( SharedMemoryBufferBacking::SharedMemoryBufferBacking(
std::unique_ptr<base::SharedMemory> shared_memory, std::unique_ptr<base::SharedMemory> shared_memory,
size_t size) size_t size)
...@@ -29,6 +33,11 @@ bool SharedMemoryBufferBacking::is_shared() const { ...@@ -29,6 +33,11 @@ bool SharedMemoryBufferBacking::is_shared() const {
return true; return true;
} }
base::SharedMemoryHandle SharedMemoryBufferBacking::shared_memory_handle()
const {
return shared_memory_->handle();
}
void* SharedMemoryBufferBacking::GetMemory() const { void* SharedMemoryBufferBacking::GetMemory() const {
return shared_memory_->memory(); return shared_memory_->memory();
} }
......
...@@ -17,8 +17,11 @@ ...@@ -17,8 +17,11 @@
#include "gpu/gpu_export.h" #include "gpu/gpu_export.h"
namespace base { namespace base {
class SharedMemory;
} class SharedMemory;
class SharedMemoryHandle;
} // namespace base
namespace gpu { namespace gpu {
...@@ -26,6 +29,7 @@ class GPU_EXPORT BufferBacking { ...@@ -26,6 +29,7 @@ class GPU_EXPORT BufferBacking {
public: public:
virtual ~BufferBacking() {} virtual ~BufferBacking() {}
virtual bool is_shared() const; virtual bool is_shared() const;
virtual base::SharedMemoryHandle shared_memory_handle() const;
virtual void* GetMemory() const = 0; virtual void* GetMemory() const = 0;
virtual size_t GetSize() const = 0; virtual size_t GetSize() const = 0;
}; };
...@@ -36,6 +40,7 @@ class GPU_EXPORT SharedMemoryBufferBacking : public BufferBacking { ...@@ -36,6 +40,7 @@ class GPU_EXPORT SharedMemoryBufferBacking : public BufferBacking {
size_t size); size_t size);
~SharedMemoryBufferBacking() override; ~SharedMemoryBufferBacking() override;
bool is_shared() const override; bool is_shared() const override;
base::SharedMemoryHandle shared_memory_handle() const override;
void* GetMemory() const override; void* GetMemory() const override;
size_t GetSize() const override; size_t GetSize() const override;
base::SharedMemory* shared_memory() { return shared_memory_.get(); } base::SharedMemory* shared_memory() { return shared_memory_.get(); }
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gpu/command_buffer/common/buffer.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace gpu {
TEST(Buffer, SharedMemoryHandle) {
const size_t kSize = 1024;
std::unique_ptr<base::SharedMemory> shared_memory(new base::SharedMemory);
shared_memory->CreateAndMapAnonymous(kSize);
auto shared_memory_guid = shared_memory->handle().GetGUID();
scoped_refptr<Buffer> buffer =
MakeBufferFromSharedMemory(std::move(shared_memory), kSize);
EXPECT_EQ(buffer->backing()->shared_memory_handle().GetGUID(),
shared_memory_guid);
}
} // namespace gpu
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