Home | History | Annotate | Download | only in service
      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