diff options
author | reveman <reveman@chromium.org> | 2014-10-28 15:49:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-28 22:49:44 +0000 |
commit | eeba91b525f74890247a93fe022054f12aee18cc (patch) | |
tree | 3796e6ae653db0610ea6ee0dd7cdcbd8e3313826 /gpu/command_buffer/service/image_factory.h | |
parent | b950c3c26267f2e3aa2a95df567da1760577a7fd (diff) | |
download | chromium_src-eeba91b525f74890247a93fe022054f12aee18cc.zip chromium_src-eeba91b525f74890247a93fe022054f12aee18cc.tar.gz chromium_src-eeba91b525f74890247a93fe022054f12aee18cc.tar.bz2 |
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}
Diffstat (limited to 'gpu/command_buffer/service/image_factory.h')
-rw-r--r-- | gpu/command_buffer/service/image_factory.h | 54 |
1 files changed, 54 insertions, 0 deletions
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<gfx::GLImage> 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_ |