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..f1946bb35499608c189c8a26e9594a9509926372 |
--- /dev/null |
+++ b/ui/gl/async_pixel_transfer_delegate.h |
@@ -0,0 +1,59 @@ |
+// 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_ |
apatrick
2012/12/03 21:23:59
At first I was like, this definitely shouldn't be
epennerAtGoogle
2012/12/03 22:48:45
I initially had this code in gpu/ but ran into pro
|
+#define UI_GL_ASYNC_TASK_DELEGATE_H_ |
+ |
+#include "base/basictypes.h" |
+ |
+namespace gfx { |
+ |
+// 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 AsyncPixelTransferState |
greggman
2012/12/05 02:23:42
I'm just guessing that in order for this to work i
epenner
2012/12/08 03:15:03
Done.
|
+ : public base::RefCounted<AsyncPixelTransferState> { |
apatrick
2012/12/03 21:23:59
RefCountedThreadSafe will do atomic increment / de
epennerAtGoogle
2012/12/03 22:48:45
Currently lifetime for this object is controlled e
|
+ public: |
+ AsyncPixelTransferState() {} |
+ virtual ~AsyncPixelTransferState() {}; |
+ private: |
greggman
2012/12/05 02:23:42
nit: one empty line before private
epenner
2012/12/08 03:15:03
Done.
|
+ DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferState); |
+}; |
+ |
+ |
+class AsyncPixelTransferDelegate { |
+ public: |
+ // TODO: Should this be owned by a GPU process object? |
+ // We only need one in the GPU process, so this is currently |
+ // just a lazy instance. |
+ static AsyncPixelTransferDelegate* Get(); |
+ |
+ virtual scoped_refptr<AsyncPixelTransferState> |
+ CreatePixelTransferState(GLuint texture) = 0; |
+ |
+ virtual void AsyncNotifyCompletion( |
+ const base::Closure& task) = 0; |
+ |
+ virtual void AsyncTexSubImage2D( |
+ AsyncPixelTransferState*, |
+ GLenum target, |
+ GLint level, |
+ GLint xoffset, |
+ GLint yoffset, |
+ GLsizei width, |
+ GLsizei height, |
+ GLenum format, |
+ GLenum type, |
+ const void* data) = 0; |
+ |
+ protected: |
+ AsyncPixelTransferDelegate() {} |
+ virtual ~AsyncPixelTransferDelegate() {} |
+ private: |
greggman
2012/12/05 02:23:42
nit: one empty line before private
epenner
2012/12/08 03:15:03
Done.
|
+ DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferDelegate); |
+}; |
+ |
+} // namespace gfx |
+ |
+#endif // UI_GL_ASYNC_TASK_DELEGATE_H_ |