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_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