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 35 // State shared between Managers and Delegates. 36 struct SharedState { 37 SharedState(); 38 ~SharedState(); 39 40 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats; 41 typedef std::list<base::WeakPtr<AsyncPixelTransferDelegateShareGroup> > 42 TransferQueue; 43 TransferQueue pending_allocations; 44 }; 45 46 private: 47 // AsyncPixelTransferManager implementation: 48 virtual AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl( 49 gles2::TextureRef* ref, 50 const AsyncTexImage2DParams& define_params) OVERRIDE; 51 52 SharedState shared_state_; 53 54 DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferManagerShareGroup); 55 }; 56 57 } // namespace gpu 58 59 #endif // GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_SHARE_GROUP_H_ 60