Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: gpu/command_buffer/service/async_pixel_transfer_manager_compressed.h

Issue 793693003: Tile Compression (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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_COMPRESSED_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_COMPRESSED_H_
7
8 #include <list>
9
10 #include "base/memory/ref_counted.h"
11 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h"
12 #include "gpu/command_buffer/service/async_pixel_transfer_manager_egl.h"
13 #include "gpu/command_buffer/service/async_pixel_transfer_manager_idle.h"
14
15 namespace gpu {
16
17 class AsyncPixelTransferManagerEGL;
18 class AsyncPixelTransferManagerIdle;
19
20 // This AsyncPixelTransferManager implementation enables the dynamic switching
21 // between AsyncPixelTransferManagerEGL and AsyncPixelTransferManagerIdle for
22 // non-compressed and compressed texture uploads respectively. This is needed
23 // when both compressed and non-compressed asynchronous texture uploads are
24 // performed if one wants to use the faster EGL upload path when possible.
25 class AsyncPixelTransferManagerCompressed : public AsyncPixelTransferManager {
26 public:
27 AsyncPixelTransferManagerCompressed();
28 virtual ~AsyncPixelTransferManagerCompressed();
29
30 // AsyncPixelTransferManager implementation:
31 void BindCompletedAsyncTransfers() override;
32 void AsyncNotifyCompletion(
33 const AsyncMemoryParams& mem_params,
34 AsyncPixelTransferCompletionObserver* observer) override;
35 uint32 GetTextureUploadCount() override;
36 base::TimeDelta GetTotalTextureUploadTime() override;
37 void ProcessMorePendingTransfers() override;
38 bool NeedsProcessMorePendingTransfers() override;
39 void WaitAllAsyncTexImage2D() override;
40
41 enum Mode {
42 MODE_EGL,
43 MODE_IDLE,
44 };
45
46 void SwitchMode(enum Mode new_mode);
47
48 Mode mode() const { return mode_; }
49
50 struct SharedState {
51 SharedState();
52 ~SharedState();
53 typedef std::list<AsyncPixelTransferDelegate*> DelegateList;
54 DelegateList delegates;
55 };
56
57 SharedState& shared_state() { return shared_state_; }
58
59 private:
60 // AsyncPixelTransferManager implementation:
61 AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl(
62 gles2::TextureRef* ref,
63 const AsyncTexImage2DParams& define_params) override;
64 AsyncPixelTransferDelegate* CreatePixelTransferDelegateImpl(
65 gles2::TextureRef* ref,
66 const AsyncCompressedTexImage2DParams& define_params) override;
67
68 AsyncPixelTransferManager* current_manager() const {
69 switch (mode_) {
70 case MODE_EGL:
71 return egl_manager_.get();
72 case MODE_IDLE:
73 return idle_manager_.get();
74 }
75 NOTREACHED();
76 return NULL;
77 }
78
79 enum Mode mode_;
80
81 scoped_ptr<AsyncPixelTransferManagerEGL> egl_manager_;
82 scoped_ptr<AsyncPixelTransferManagerIdle> idle_manager_;
83
84 SharedState shared_state_;
85 };
86
87 } // namespace gpu
88
89 #endif // GPU_COMMAND_BUFFER_SERVICE_ASYNC_PIXEL_TRANSFER_MANAGER_COMPRESSED_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698