From eeba91b525f74890247a93fe022054f12aee18cc Mon Sep 17 00:00:00 2001 From: reveman Date: Tue, 28 Oct 2014 15:49:20 -0700 Subject: gpu: Move image creation part of GpuMemoryBufferFactory interface to gpu namespace. This moves the image creation part of the GpuMemoryBufferFactory interface to a new ImageFactory interface in the gpu namespace. This is necessary for in-process command buffer to be able to create images. This also moves some utility functions from CommandBufferProxy to this new ImageFactory interface so they can be reused by the in-process command buffer code. BUG=423533 Review URL: https://codereview.chromium.org/659883003 Cr-Commit-Position: refs/heads/master@{#301732} --- gpu/command_buffer/service/image_factory.h | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gpu/command_buffer/service/image_factory.h (limited to 'gpu/command_buffer/service/image_factory.h') diff --git a/gpu/command_buffer/service/image_factory.h b/gpu/command_buffer/service/image_factory.h new file mode 100644 index 0000000..40dd15a0e --- /dev/null +++ b/gpu/command_buffer/service/image_factory.h @@ -0,0 +1,54 @@ +// 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 GPU_COMMAND_BUFFER_SERVICE_IMAGE_FACTORY_H_ +#define GPU_COMMAND_BUFFER_SERVICE_IMAGE_FACTORY_H_ + +#include "base/memory/ref_counted.h" +#include "gpu/gpu_export.h" +#include "ui/gfx/geometry/size.h" +#include "ui/gfx/gpu_memory_buffer.h" + +namespace gfx { +class GLImage; +} + +namespace gpu { + +class GPU_EXPORT ImageFactory { + public: + ImageFactory(); + + // Returns a valid GpuMemoryBuffer format given a valid internalformat as + // defined by CHROMIUM_gpu_memory_buffer_image. + static gfx::GpuMemoryBuffer::Format ImageFormatToGpuMemoryBufferFormat( + unsigned internalformat); + + // Returns a valid GpuMemoryBuffer usage given a valid usage as defined by + // CHROMIUM_gpu_memory_buffer_image. + static gfx::GpuMemoryBuffer::Usage ImageUsageToGpuMemoryBufferUsage( + unsigned usage); + + // Returns true if |internalformat| is compatible with |format|. + static bool IsImageFormatCompatibleWithGpuMemoryBufferFormat( + unsigned internalformat, + gfx::GpuMemoryBuffer::Format format); + + // Creates a GLImage instance for GPU memory buffer identified by |handle|. + // |client_id| should be set to the client requesting the creation of instance + // and can be used by factory implementation to verify access rights. + virtual scoped_refptr CreateImageForGpuMemoryBuffer( + const gfx::GpuMemoryBufferHandle& handle, + const gfx::Size& size, + gfx::GpuMemoryBuffer::Format format, + unsigned internalformat, + int client_id) = 0; + + protected: + virtual ~ImageFactory(); +}; + +} // namespace gpu + +#endif // GPU_COMMAND_BUFFER_SERVICE_IMAGE_FACTORY_H_ -- cgit v1.1