Index: content/common/gpu/client/gpu_memory_buffer_impl_ozone_native_buffer.h |
diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_ozone_native_buffer.h b/content/common/gpu/client/gpu_memory_buffer_impl_ozone_native_buffer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ab4cc56a184b47d1899e3f588f9420d2b5437ec0 |
--- /dev/null |
+++ b/content/common/gpu/client/gpu_memory_buffer_impl_ozone_native_buffer.h |
@@ -0,0 +1,52 @@ |
+// Copyright 2014 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. |
+ |
+#ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_OZONE_H_ |
+#define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_OZONE_H_ |
+ |
+#include "content/common/gpu/client/gpu_memory_buffer_impl.h" |
+ |
+namespace content { |
+ |
+// Implementation of GPU memory buffer based on Ozone native buffers. |
+class GpuMemoryBufferImplOzoneNativeBuffer : public GpuMemoryBufferImpl { |
+ public: |
+ GpuMemoryBufferImplOzoneNativeBuffer(const gfx::Size& size, |
+ unsigned internalformat); |
+ virtual ~GpuMemoryBufferImplOzoneNativeBuffer(); |
+ |
+ // Allocates an Ozone native buffer backed GPU memory buffer with |size| and |
+ // |internalformat| with usage |usage| for use by |child_id|. |
+ static void AllocateOzoneNativeBufferForChildId( |
+ const gfx::Size& size, |
+ unsigned internalformat, |
+ unsigned usage, |
+ int child_id, |
+ const AllocationCallback& callback); |
+ |
+ static bool IsFormatSupported(unsigned internalformat); |
+ static bool IsUsageSupported(unsigned usage); |
+ static bool IsConfigurationSupported(unsigned internalformat, unsigned usage); |
+ |
+ bool InitializeFromHandle(const gfx::GpuMemoryBufferHandle& handle); |
+ |
+ // Overridden from gfx::GpuMemoryBuffer: |
+ virtual void* Map() OVERRIDE; |
+ virtual void Unmap() OVERRIDE; |
+ virtual uint32 GetStride() const OVERRIDE; |
+ virtual gfx::GpuMemoryBufferHandle GetHandle() const OVERRIDE; |
+ |
+ private: |
+ static void OnGpuMemoryBufferCreated( |
+ const AllocationCallback& callback, |
+ const gfx::GpuMemoryBufferHandle& handle); |
+ |
+ gfx::GpuMemoryBufferId id_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImplOzoneNativeBuffer); |
+}; |
+ |
+} // namespace content |
+ |
+#endif // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_OZONE_H_ |