#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.h"
#include <stdint.h>
#include <utility>
#include "base/format_macros.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/memory/ptr_util.h"
#include "base/numerics/safe_math.h"
#include "base/process/memory.h"
#include "base/trace_event/memory_allocator_dump_guid.h"
#include "base/trace_event/process_memory_dump.h"
#include "ui/gfx/buffer_format_util.h"
#include "ui/gl/gl_bindings.h"
namespace gpu {
GpuMemoryBufferImplSharedMemory::GpuMemoryBufferImplSharedMemory(
gfx::GpuMemoryBufferId id,
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
DestructionCallback callback,
base::UnsafeSharedMemoryRegion shared_memory_region,
base::WritableSharedMemoryMapping shared_memory_mapping,
size_t offset,
uint32_t stride)
: … { … }
GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() = default;
std::unique_ptr<GpuMemoryBufferImplSharedMemory>
GpuMemoryBufferImplSharedMemory::Create(gfx::GpuMemoryBufferId id,
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
DestructionCallback callback) { … }
gfx::GpuMemoryBufferHandle
GpuMemoryBufferImplSharedMemory::CreateGpuMemoryBuffer(
gfx::GpuMemoryBufferId id,
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage) { … }
std::unique_ptr<GpuMemoryBufferImplSharedMemory>
GpuMemoryBufferImplSharedMemory::CreateFromHandle(
gfx::GpuMemoryBufferHandle handle,
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
DestructionCallback callback) { … }
bool GpuMemoryBufferImplSharedMemory::IsUsageSupported(gfx::BufferUsage usage) { … }
bool GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
gfx::BufferFormat format,
gfx::BufferUsage usage) { … }
bool GpuMemoryBufferImplSharedMemory::IsSizeValidForFormat(
const gfx::Size& size,
gfx::BufferFormat format) { … }
base::OnceClosure GpuMemoryBufferImplSharedMemory::AllocateForTesting(
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
gfx::GpuMemoryBufferHandle* handle) { … }
bool GpuMemoryBufferImplSharedMemory::Map() { … }
void* GpuMemoryBufferImplSharedMemory::memory(size_t plane) { … }
void GpuMemoryBufferImplSharedMemory::Unmap() { … }
int GpuMemoryBufferImplSharedMemory::stride(size_t plane) const { … }
gfx::GpuMemoryBufferType GpuMemoryBufferImplSharedMemory::GetType() const { … }
gfx::GpuMemoryBufferHandle GpuMemoryBufferImplSharedMemory::CloneHandle()
const { … }
void GpuMemoryBufferImplSharedMemory::OnMemoryDump(
base::trace_event::ProcessMemoryDump* pmd,
const base::trace_event::MemoryAllocatorDumpGuid& buffer_dump_guid,
uint64_t tracing_process_id,
int importance) const { … }
base::UnguessableToken GpuMemoryBufferImplSharedMemory::GetSharedMemoryGUID()
const { … }
}