Home | History | Annotate | Download | only in client
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_
      6 #define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_
      7 
      8 #include "content/common/gpu/client/gpu_memory_buffer_impl.h"
      9 
     10 struct ANativeWindow;
     11 
     12 namespace content {
     13 
     14 // Implementation of GPU memory buffer based on SurfaceTextures.
     15 class GpuMemoryBufferImplSurfaceTexture : public GpuMemoryBufferImpl {
     16  public:
     17   static scoped_ptr<GpuMemoryBufferImpl> CreateFromHandle(
     18       const gfx::GpuMemoryBufferHandle& handle,
     19       const gfx::Size& size,
     20       unsigned internalformat,
     21       const DestructionCallback& callback);
     22 
     23   static bool IsFormatSupported(unsigned internalformat);
     24   static bool IsUsageSupported(unsigned usage);
     25   static bool IsConfigurationSupported(unsigned internalformat, unsigned usage);
     26   static int WindowFormat(unsigned internalformat);
     27 
     28   // Overridden from gfx::GpuMemoryBuffer:
     29   virtual void* Map() OVERRIDE;
     30   virtual void Unmap() OVERRIDE;
     31   virtual gfx::GpuMemoryBufferHandle GetHandle() const OVERRIDE;
     32   virtual uint32 GetStride() const OVERRIDE;
     33 
     34  private:
     35   GpuMemoryBufferImplSurfaceTexture(
     36       const gfx::Size& size,
     37       unsigned internalformat,
     38       const DestructionCallback& callback,
     39       const gfx::SurfaceTextureId& surface_texture_id,
     40       ANativeWindow* native_window);
     41   virtual ~GpuMemoryBufferImplSurfaceTexture();
     42 
     43   gfx::SurfaceTextureId surface_texture_id_;
     44   ANativeWindow* native_window_;
     45   size_t stride_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImplSurfaceTexture);
     48 };
     49 
     50 }  // namespace content
     51 
     52 #endif  // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_
     53