summaryrefslogtreecommitdiffstats
path: root/chromium/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h')
-rw-r--r--chromium/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/chromium/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h b/chromium/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h
new file mode 100644
index 00000000000..c1cbfc3c319
--- /dev/null
+++ b/chromium/content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h
@@ -0,0 +1,44 @@
+// 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_SURFACE_TEXTURE_H_
+#define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_
+
+#include "content/common/gpu/client/gpu_memory_buffer_impl.h"
+
+struct ANativeWindow;
+
+namespace content {
+
+// Implementation of GPU memory buffer based on SurfaceTextures.
+class GpuMemoryBufferImplSurfaceTexture : public GpuMemoryBufferImpl {
+ public:
+ GpuMemoryBufferImplSurfaceTexture(const gfx::Size& size,
+ unsigned internalformat);
+ virtual ~GpuMemoryBufferImplSurfaceTexture();
+
+ static bool IsFormatSupported(unsigned internalformat);
+ static bool IsUsageSupported(unsigned usage);
+ static bool IsConfigurationSupported(unsigned internalformat, unsigned usage);
+ static int WindowFormat(unsigned internalformat);
+
+ bool InitializeFromHandle(gfx::GpuMemoryBufferHandle handle);
+
+ // Overridden from gfx::GpuMemoryBuffer:
+ virtual void* Map() OVERRIDE;
+ virtual void Unmap() OVERRIDE;
+ virtual gfx::GpuMemoryBufferHandle GetHandle() const OVERRIDE;
+ virtual uint32 GetStride() const OVERRIDE;
+
+ private:
+ gfx::SurfaceTextureId surface_texture_id_;
+ ANativeWindow* native_window_;
+ size_t stride_;
+
+ DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImplSurfaceTexture);
+};
+
+} // namespace content
+
+#endif // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_