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 12 namespace gpu { 13 class AsyncPixelTransferDelegateEGL; 14 class AsyncPixelTransferUploadStats; 15 16 class 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