#include "gpu/ipc/common/gpu_memory_buffer_support.h"
#include <inttypes.h>
#include "base/check_op.h"
#include "base/notreached.h"
#include "base/numerics/checked_math.h"
#include "base/strings/stringprintf.h"
#include "base/trace_event/process_memory_dump.h"
#include "build/build_config.h"
#include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
#include "gpu/ipc/common/gpu_memory_buffer_impl_shared_memory.h"
#include "ui/gfx/buffer_format_util.h"
#include "ui/gfx/buffer_usage_util.h"
#if BUILDFLAG(IS_APPLE)
#include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
#endif
#if BUILDFLAG(IS_OZONE)
#include "ui/ozone/public/client_native_pixmap_factory_ozone.h"
#include "ui/ozone/public/ozone_platform.h"
#endif
#if BUILDFLAG(IS_OZONE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
#endif
#if BUILDFLAG(IS_WIN)
#include "gpu/ipc/common/gpu_memory_buffer_impl_dxgi.h"
#endif
#if BUILDFLAG(IS_ANDROID)
#include "base/android/android_hardware_buffer_compat.h"
#endif
namespace gpu {
GpuMemoryBufferSupport::GpuMemoryBufferSupport() { … }
GpuMemoryBufferSupport::~GpuMemoryBufferSupport() { … }
gfx::GpuMemoryBufferType
GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType() { … }
bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferConfigurationSupported(
gfx::BufferFormat format,
gfx::BufferUsage usage) { … }
GpuMemoryBufferConfigurationSet
GpuMemoryBufferSupport::GetNativeGpuMemoryBufferConfigurations() { … }
bool GpuMemoryBufferSupport::IsConfigurationSupportedForTest(
gfx::GpuMemoryBufferType type,
gfx::BufferFormat format,
gfx::BufferUsage usage) { … }
bool GpuMemoryBufferSupport::IsSizeValid(const gfx::Size& size) { … }
std::unique_ptr<GpuMemoryBufferImpl>
GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromHandle(
gfx::GpuMemoryBufferHandle handle,
const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
GpuMemoryBufferImpl::DestructionCallback callback,
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
scoped_refptr<base::UnsafeSharedMemoryPool> pool,
base::span<uint8_t> premapped_memory) { … }
AllocatedBufferInfo::AllocatedBufferInfo(
const gfx::GpuMemoryBufferHandle& handle,
const gfx::Size& size,
gfx::BufferFormat format)
: … { … }
AllocatedBufferInfo::~AllocatedBufferInfo() = default;
bool AllocatedBufferInfo::OnMemoryDump(
base::trace_event::ProcessMemoryDump* pmd,
int client_id,
uint64_t client_tracing_process_id) const { … }
}