| // Copyright 2013 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_ASYNC_PIXEL_TRANSFER_MANAGER_EGL_H_ |
| #define GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_EGL_H_ |
| |
| #include "gpu/command_buffer/service/async_pixel_transfer_manager.h" |
| |
| #include "base/memory/ref_counted.h" |
| |
| namespace gpu { |
| class AsyncPixelTransferDelegateEGL; |
| class AsyncPixelTransferUploadStats; |
| |
| class AsyncPixelTransferManagerEGL : public AsyncPixelTransferManager { |
| public: |
| AsyncPixelTransferManagerEGL(); |
| ~AsyncPixelTransferManagerEGL() override; |
| |
| // AsyncPixelTransferManager implementation: |
| void BindCompletedAsyncTransfers() override; |
| void AsyncNotifyCompletion( |
| const AsyncMemoryParams& mem_params, |
| AsyncPixelTransferCompletionObserver* observer) override; |
| uint32 GetTextureUploadCount() override; |
| base::TimeDelta GetTotalTextureUploadTime() override; |
| void ProcessMorePendingTransfers() override; |
| bool NeedsProcessMorePendingTransfers() override; |
| void WaitAllAsyncTexImage2D() override; |
| |
| // State shared between Managers and Delegates. |
| struct SharedState { |
| SharedState(); |
| ~SharedState(); |
| |
| scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats; |
| bool is_imagination; |
| bool is_qualcomm; |
| typedef std::list<base::WeakPtr<AsyncPixelTransferDelegateEGL> > |
| TransferQueue; |
| TransferQueue pending_allocations; |
| }; |
| |
| private: |
| // AsyncPixelTransferManager implementation: |
| AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl( |
| gles2::TextureRef* ref, |
| const AsyncTexImage2DParams& define_params) override; |
| |
| SharedState shared_state_; |
| |
| DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferManagerEGL); |
| }; |
| |
| } // namespace gpu |
| |
| #endif // GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_EGL_H_ |