| Index: ui/gl/async_pixel_transfer_delegate.h
|
| diff --git a/ui/gl/async_pixel_transfer_delegate.h b/ui/gl/async_pixel_transfer_delegate.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ff991934890c3e97a4349f04bed28a7bcfea8370
|
| --- /dev/null
|
| +++ b/ui/gl/async_pixel_transfer_delegate.h
|
| @@ -0,0 +1,108 @@
|
| +// Copyright (c) 2011 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 UI_GL_ASYNC_TASK_DELEGATE_H_
|
| +#define UI_GL_ASYNC_TASK_DELEGATE_H_
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/bind.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "build/build_config.h"
|
| +#include "ui/gl/gl_bindings.h"
|
| +#include "ui/gl/gl_export.h"
|
| +
|
| +namespace base {
|
| +class SharedMemory;
|
| +}
|
| +
|
| +namespace gfx {
|
| +
|
| +struct AsyncTexImage2DParams {
|
| + GLenum target;
|
| + GLint level;
|
| + GLenum internal_format;
|
| + GLsizei width;
|
| + GLsizei height;
|
| + GLint border;
|
| + GLenum format;
|
| + GLenum type;
|
| +};
|
| +
|
| +struct AsyncTexSubImage2DParams {
|
| + GLenum target;
|
| + GLint level;
|
| + GLint xoffset;
|
| + GLint yoffset;
|
| + GLsizei width;
|
| + GLsizei height;
|
| + GLenum format;
|
| + GLenum type;
|
| +};
|
| +
|
| +struct AsyncMemoryParams {
|
| + base::SharedMemory* shared_memory;
|
| + uint32 shm_size;
|
| + uint32 shm_data_offset;
|
| + uint32 shm_data_size;
|
| +};
|
| +
|
| +// AsyncPixelTransferState holds the resources required to do async
|
| +// transfers on one texture. It should stay alive for the lifetime
|
| +// of the texture to allow multiple transfers.
|
| +class GL_EXPORT AsyncPixelTransferState
|
| + : public base::RefCounted<AsyncPixelTransferState> {
|
| + public:
|
| + // Returns true if there is a transfer in progress.
|
| + virtual bool TransferIsInProgress() = 0;
|
| +
|
| + // Perform any custom binding of the transfer, if needed. If true is
|
| + // returned, level_params is set to the params used to define the texture
|
| + // (via AsyncTexImage2D), and the level is now defined with those params
|
| + // and contains fully valid data.
|
| + virtual bool BindTransfer(
|
| + GLenum target, AsyncTexImage2DParams* level_params) = 0;
|
| +
|
| + protected:
|
| + friend class base::RefCounted<AsyncPixelTransferState>;
|
| + AsyncPixelTransferState() {}
|
| + virtual ~AsyncPixelTransferState() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferState);
|
| +};
|
| +
|
| +class GL_EXPORT AsyncPixelTransferDelegate {
|
| + public:
|
| + static scoped_ptr<AsyncPixelTransferDelegate>
|
| + Create(gfx::GLContext* context);
|
| + virtual ~AsyncPixelTransferDelegate() {}
|
| +
|
| + virtual scoped_refptr<AsyncPixelTransferState>
|
| + CreatePixelTransferState(GLuint texture) = 0;
|
| +
|
| + virtual void AsyncNotifyCompletion(
|
| + const base::Closure& notify_task) = 0;
|
| +
|
| + virtual void AsyncTexImage2D(
|
| + AsyncPixelTransferState* state,
|
| + const AsyncTexImage2DParams& tex_params,
|
| + const AsyncMemoryParams& mem_params) = 0;
|
| +
|
| + virtual void AsyncTexSubImage2D(
|
| + AsyncPixelTransferState* state,
|
| + const AsyncTexSubImage2DParams& tex_params,
|
| + const AsyncMemoryParams& mem_params) = 0;
|
| +
|
| + protected:
|
| + AsyncPixelTransferDelegate() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferDelegate);
|
| +};
|
| +
|
| +} // namespace gfx
|
| +
|
| +#endif // UI_GL_ASYNC_TASK_DELEGATE_H_
|
| +
|
|
|