1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_EGL_H_ 6#define GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_EGL_H_ 7 8#include "gpu/command_buffer/service/async_pixel_transfer_manager.h" 9 10#include "base/memory/ref_counted.h" 11 12namespace gpu { 13class AsyncPixelTransferDelegateEGL; 14class AsyncPixelTransferUploadStats; 15 16class AsyncPixelTransferManagerEGL : public AsyncPixelTransferManager { 17 public: 18 AsyncPixelTransferManagerEGL(); 19 virtual ~AsyncPixelTransferManagerEGL(); 20 21 // AsyncPixelTransferManager implementation: 22 virtual void BindCompletedAsyncTransfers() OVERRIDE; 23 virtual void AsyncNotifyCompletion( 24 const AsyncMemoryParams& mem_params, 25 AsyncPixelTransferCompletionObserver* observer) OVERRIDE; 26 virtual uint32 GetTextureUploadCount() OVERRIDE; 27 virtual base::TimeDelta GetTotalTextureUploadTime() OVERRIDE; 28 virtual void ProcessMorePendingTransfers() OVERRIDE; 29 virtual bool NeedsProcessMorePendingTransfers() OVERRIDE; 30 virtual void WaitAllAsyncTexImage2D() OVERRIDE; 31 32 // State shared between Managers and Delegates. 33 struct SharedState { 34 SharedState(); 35 ~SharedState(); 36 37 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats; 38 bool is_imagination; 39 bool is_qualcomm; 40 typedef std::list<base::WeakPtr<AsyncPixelTransferDelegateEGL> > 41 TransferQueue; 42 TransferQueue pending_allocations; 43 }; 44 45 private: 46 // AsyncPixelTransferManager implementation: 47 virtual AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl( 48 gles2::TextureRef* ref, 49 const AsyncTexImage2DParams& define_params) OVERRIDE; 50 51 SharedState shared_state_; 52 53 DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferManagerEGL); 54}; 55 56} // namespace gpu 57 58#endif // GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_EGL_H_ 59