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_IDLE_H_
      6 #define GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_IDLE_H_
      7 
      8 #include <list>
      9 
     10 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h"
     11 
     12 namespace gpu {
     13 
     14 class AsyncPixelTransferManagerIdle : public AsyncPixelTransferManager {
     15  public:
     16   AsyncPixelTransferManagerIdle();
     17   virtual ~AsyncPixelTransferManagerIdle();
     18 
     19   // AsyncPixelTransferManager implementation:
     20   virtual void BindCompletedAsyncTransfers() OVERRIDE;
     21   virtual void AsyncNotifyCompletion(
     22       const AsyncMemoryParams& mem_params,
     23       AsyncPixelTransferCompletionObserver* observer) OVERRIDE;
     24   virtual uint32 GetTextureUploadCount() OVERRIDE;
     25   virtual base::TimeDelta GetTotalTextureUploadTime() OVERRIDE;
     26   virtual void ProcessMorePendingTransfers() OVERRIDE;
     27   virtual bool NeedsProcessMorePendingTransfers() OVERRIDE;
     28 
     29   struct Task {
     30     Task(uint64 transfer_id, const base::Closure& task);
     31     ~Task();
     32 
     33     // This is non-zero if pixel transfer task.
     34     uint64 transfer_id;
     35 
     36     base::Closure task;
     37   };
     38 
     39   // State shared between Managers and Delegates.
     40   struct SharedState {
     41     SharedState();
     42     ~SharedState();
     43     void ProcessNotificationTasks();
     44 
     45     int texture_upload_count;
     46     base::TimeDelta total_texture_upload_time;
     47     std::list<Task> tasks;
     48   };
     49 
     50  private:
     51   // AsyncPixelTransferManager implementation:
     52   virtual AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl(
     53       gles2::TextureRef* ref,
     54       const AsyncTexImage2DParams& define_params) OVERRIDE;
     55 
     56   SharedState shared_state_;
     57 
     58   DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferManagerIdle);
     59 };
     60 
     61 }  // namespace gpu
     62 
     63 #endif  // GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_IDLE_H_
     64