#include "content/common/gpu/gpu_memory_buffer_factory.h"
#include "base/logging.h"
+#include "gpu/command_buffer/service/image_factory.h"
#include "ui/gl/gl_image.h"
#include "ui/gl/gl_image_shared_memory.h"
namespace content {
namespace {
-class GpuMemoryBufferFactoryImpl : public GpuMemoryBufferFactory {
+class GpuMemoryBufferFactoryImpl : public GpuMemoryBufferFactory,
+ public gpu::ImageFactory {
public:
// Overridden from GpuMemoryBufferFactory:
virtual gfx::GpuMemoryBufferHandle CreateGpuMemoryBuffer(
- const gfx::GpuMemoryBufferHandle& handle,
+ gfx::GpuMemoryBufferType type,
+ gfx::GpuMemoryBufferId id,
const gfx::Size& size,
- unsigned internalformat,
- unsigned usage) OVERRIDE {
+ gfx::GpuMemoryBuffer::Format format,
+ gfx::GpuMemoryBuffer::Usage usage,
+ int client_id) override {
NOTREACHED();
return gfx::GpuMemoryBufferHandle();
}
- virtual void DestroyGpuMemoryBuffer(
- const gfx::GpuMemoryBufferHandle& handle) OVERRIDE {
+ virtual void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferType type,
+ gfx::GpuMemoryBufferId id,
+ int client_id) override {
NOTREACHED();
}
+ virtual gpu::ImageFactory* AsImageFactory() override { return this; }
+
+ // Overridden from gpu::ImageFactory:
virtual scoped_refptr<gfx::GLImage> CreateImageForGpuMemoryBuffer(
const gfx::GpuMemoryBufferHandle& handle,
const gfx::Size& size,
+ gfx::GpuMemoryBuffer::Format format,
unsigned internalformat,
- int client_id) OVERRIDE {
+ int client_id) override {
switch (handle.type) {
case gfx::SHARED_MEMORY_BUFFER: {
scoped_refptr<gfx::GLImageSharedMemory> image(
new gfx::GLImageSharedMemory(size, internalformat));
- if (!image->Initialize(handle))
+ if (!image->Initialize(handle, format))
return NULL;
return image;