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_SHARE_GROUP_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_SHARE_GROUP_H_ 7 8 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h" 9 10 #include "base/memory/ref_counted.h" 11 12 namespace gfx { 13 class GLContext; 14 } 15 16 namespace gpu { 17 class AsyncPixelTransferDelegateShareGroup; 18 class AsyncPixelTransferUploadStats; 19 20 class AsyncPixelTransferManagerShareGroup : public AsyncPixelTransferManager { 21 public: 22 explicit AsyncPixelTransferManagerShareGroup(gfx::GLContext* context); 23 virtual ~AsyncPixelTransferManagerShareGroup(); 24 25 // AsyncPixelTransferManager implementation: 26 virtual void BindCompletedAsyncTransfers() OVERRIDE; 27 virtual void AsyncNotifyCompletion( 28 const AsyncMemoryParams& mem_params, 29 AsyncPixelTransferCompletionObserver* observer) OVERRIDE; 30 virtual uint32 GetTextureUploadCount() OVERRIDE; 31 virtual base::TimeDelta GetTotalTextureUploadTime() OVERRIDE; 32 virtual void ProcessMorePendingTransfers() OVERRIDE; 33 virtual bool NeedsProcessMorePendingTransfers() OVERRIDE; 34 virtual void WaitAllAsyncTexImage2D() OVERRIDE; 35 36 // State shared between Managers and Delegates. 37 struct SharedState { 38 SharedState(); 39 ~SharedState(); 40 41 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats; 42 typedef std::list<base::WeakPtr<AsyncPixelTransferDelegateShareGroup> > 43 TransferQueue; 44 TransferQueue pending_allocations; 45 }; 46 47 private: 48 // AsyncPixelTransferManager implementation: 49 virtual AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl( 50 gles2::TextureRef* ref, 51 const AsyncTexImage2DParams& define_params) OVERRIDE; 52 53 SharedState shared_state_; 54 55 DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferManagerShareGroup); 56 }; 57 58 } // namespace gpu 59 60 #endif // GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_SHARE_GROUP_H_ 61