Home | History | Annotate | Download | only in gpu
      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_GPU_MEMORY_BUFFER_FACTORY_X11_PIXMAP_H_
      6 #define CONTENT_COMMON_GPU_GPU_MEMORY_BUFFER_FACTORY_X11_PIXMAP_H_
      7 
      8 #include "base/containers/hash_tables.h"
      9 #include "base/memory/ref_counted.h"
     10 #include "ui/gfx/geometry/size.h"
     11 #include "ui/gfx/gpu_memory_buffer.h"
     12 #include "ui/gfx/x/x11_types.h"
     13 
     14 namespace gfx {
     15 class GLImage;
     16 }
     17 
     18 namespace content {
     19 
     20 class GpuMemoryBufferFactoryX11Pixmap {
     21  public:
     22   GpuMemoryBufferFactoryX11Pixmap();
     23   ~GpuMemoryBufferFactoryX11Pixmap();
     24 
     25   // Create a GPU memory buffer for an existing X11 pixmap.
     26   void CreateGpuMemoryBuffer(const gfx::GpuMemoryBufferId& id, XID pixmap);
     27 
     28   // Destroy a previously created GPU memory buffer.
     29   void DestroyGpuMemoryBuffer(const gfx::GpuMemoryBufferId& id);
     30 
     31   // Creates a GLImage instance for a GPU memory buffer.
     32   scoped_refptr<gfx::GLImage> CreateImageForGpuMemoryBuffer(
     33       const gfx::GpuMemoryBufferId& id,
     34       const gfx::Size& size,
     35       unsigned internalformat);
     36 
     37  private:
     38   typedef std::pair<int, int> X11PixmapMapKey;
     39   typedef base::hash_map<X11PixmapMapKey, XID> X11PixmapMap;
     40   X11PixmapMap pixmaps_;
     41 };
     42 
     43 }  // namespace content
     44 
     45 #endif  // CONTENT_COMMON_GPU_GPU_MEMORY_BUFFER_FACTORY_X11_PIXMAP_H_
     46