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.
5 #include "content/common/gpu/gpu_memory_buffer_factory_x11_pixmap.h"
7 #include "ui/gl/gl_image_glx.h"
11 GpuMemoryBufferFactoryX11Pixmap::GpuMemoryBufferFactoryX11Pixmap() {
14 GpuMemoryBufferFactoryX11Pixmap::~GpuMemoryBufferFactoryX11Pixmap() {
17 void GpuMemoryBufferFactoryX11Pixmap::CreateGpuMemoryBuffer(
18 const gfx::GpuMemoryBufferId
& id
,
20 X11PixmapMapKey
key(id
.primary_id
, id
.secondary_id
);
21 DCHECK(pixmaps_
.find(key
) == pixmaps_
.end());
22 pixmaps_
[key
] = pixmap
;
25 void GpuMemoryBufferFactoryX11Pixmap::DestroyGpuMemoryBuffer(
26 const gfx::GpuMemoryBufferId
& id
) {
27 X11PixmapMapKey
key(id
.primary_id
, id
.secondary_id
);
28 X11PixmapMap::iterator it
= pixmaps_
.find(key
);
29 if (it
!= pixmaps_
.end())
33 scoped_refptr
<gfx::GLImage
>
34 GpuMemoryBufferFactoryX11Pixmap::CreateImageForGpuMemoryBuffer(
35 const gfx::GpuMemoryBufferId
& id
,
36 const gfx::Size
& size
,
37 unsigned internalformat
) {
38 X11PixmapMapKey
key(id
.primary_id
, id
.secondary_id
);
39 X11PixmapMap::iterator it
= pixmaps_
.find(key
);
40 if (it
== pixmaps_
.end())
41 return scoped_refptr
<gfx::GLImage
>();
43 scoped_refptr
<gfx::GLImageGLX
> image(
44 new gfx::GLImageGLX(size
, internalformat
));
45 if (!image
->Initialize(it
->second
))
46 return scoped_refptr
<gfx::GLImage
>();
51 } // namespace content