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

Side by Side Diff: gpu/command_buffer/service/async_pixel_transfer_manager_sync.cc

Issue 16175005: GPU: Replace AsyncPixelTransferState with AsyncPixelTransferDelegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 6 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/async_pixel_transfer_manager_sync.h" 5 #include "gpu/command_buffer/service/async_pixel_transfer_manager_sync.h"
6 6
7 #include "gpu/command_buffer/service/async_pixel_transfer_delegate.h" 7 #include "gpu/command_buffer/service/async_pixel_transfer_delegate.h"
8 8
9 namespace gpu { 9 namespace gpu {
10 10
11 namespace {
12
13 class AsyncPixelTransferStateImpl : public AsyncPixelTransferState {
14 public:
15 AsyncPixelTransferStateImpl() {}
16
17 // Implement AsyncPixelTransferState:
18 virtual bool TransferIsInProgress() OVERRIDE {
19 return false;
20 }
21
22 private:
23 virtual ~AsyncPixelTransferStateImpl() {}
24 };
25
26 } // namespace
27
28 // Class which handles async pixel transfers synchronously. 11 // Class which handles async pixel transfers synchronously.
29 class AsyncPixelTransferDelegateSync : public AsyncPixelTransferDelegate { 12 class AsyncPixelTransferDelegateSync : public AsyncPixelTransferDelegate {
30 public: 13 public:
31 explicit AsyncPixelTransferDelegateSync( 14 explicit AsyncPixelTransferDelegateSync(
32 AsyncPixelTransferManagerSync::SharedState* shared_state); 15 AsyncPixelTransferManagerSync::SharedState* shared_state);
33 virtual ~AsyncPixelTransferDelegateSync(); 16 virtual ~AsyncPixelTransferDelegateSync();
34 17
35 // Implement AsyncPixelTransferDelegate: 18 // Implement AsyncPixelTransferDelegate:
36 virtual AsyncPixelTransferState* CreatePixelTransferState(
37 GLuint texture_id,
38 const AsyncTexImage2DParams& define_params) OVERRIDE;
39 virtual void AsyncTexImage2D( 19 virtual void AsyncTexImage2D(
40 AsyncPixelTransferState* state,
41 const AsyncTexImage2DParams& tex_params, 20 const AsyncTexImage2DParams& tex_params,
42 const AsyncMemoryParams& mem_params, 21 const AsyncMemoryParams& mem_params,
43 const base::Closure& bind_callback) OVERRIDE; 22 const base::Closure& bind_callback) OVERRIDE;
44 virtual void AsyncTexSubImage2D( 23 virtual void AsyncTexSubImage2D(
45 AsyncPixelTransferState* transfer_state,
46 const AsyncTexSubImage2DParams& tex_params, 24 const AsyncTexSubImage2DParams& tex_params,
47 const AsyncMemoryParams& mem_params) OVERRIDE; 25 const AsyncMemoryParams& mem_params) OVERRIDE;
48 virtual void WaitForTransferCompletion( 26 virtual bool TransferIsInProgress() OVERRIDE;
49 AsyncPixelTransferState* state) OVERRIDE; 27 virtual void WaitForTransferCompletion() OVERRIDE;
50 28
51 private: 29 private:
52 // Safe to hold a raw pointer because SharedState is owned by the Manager 30 // Safe to hold a raw pointer because SharedState is owned by the Manager
53 // which owns the Delegate. 31 // which owns the Delegate.
54 AsyncPixelTransferManagerSync::SharedState* shared_state_; 32 AsyncPixelTransferManagerSync::SharedState* shared_state_;
55 33
56 DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferDelegateSync); 34 DISALLOW_COPY_AND_ASSIGN(AsyncPixelTransferDelegateSync);
57 }; 35 };
58 36
59 AsyncPixelTransferDelegateSync::AsyncPixelTransferDelegateSync( 37 AsyncPixelTransferDelegateSync::AsyncPixelTransferDelegateSync(
60 AsyncPixelTransferManagerSync::SharedState* shared_state) 38 AsyncPixelTransferManagerSync::SharedState* shared_state)
61 : shared_state_(shared_state) {} 39 : shared_state_(shared_state) {}
62 40
63 AsyncPixelTransferDelegateSync::~AsyncPixelTransferDelegateSync() {} 41 AsyncPixelTransferDelegateSync::~AsyncPixelTransferDelegateSync() {}
64 42
65 AsyncPixelTransferState* AsyncPixelTransferDelegateSync::
66 CreatePixelTransferState(GLuint texture_id,
67 const AsyncTexImage2DParams& define_params) {
68 return new AsyncPixelTransferStateImpl;
69 }
70
71 void AsyncPixelTransferDelegateSync::AsyncTexImage2D( 43 void AsyncPixelTransferDelegateSync::AsyncTexImage2D(
72 AsyncPixelTransferState* transfer_state,
73 const AsyncTexImage2DParams& tex_params, 44 const AsyncTexImage2DParams& tex_params,
74 const AsyncMemoryParams& mem_params, 45 const AsyncMemoryParams& mem_params,
75 const base::Closure& bind_callback) { 46 const base::Closure& bind_callback) {
76 // Save the define params to return later during deferred 47 // Save the define params to return later during deferred
77 // binding of the transfer texture. 48 // binding of the transfer texture.
78 DCHECK(transfer_state);
79 void* data = GetAddress(mem_params); 49 void* data = GetAddress(mem_params);
80 glTexImage2D( 50 glTexImage2D(
81 tex_params.target, 51 tex_params.target,
82 tex_params.level, 52 tex_params.level,
83 tex_params.internal_format, 53 tex_params.internal_format,
84 tex_params.width, 54 tex_params.width,
85 tex_params.height, 55 tex_params.height,
86 tex_params.border, 56 tex_params.border,
87 tex_params.format, 57 tex_params.format,
88 tex_params.type, 58 tex_params.type,
89 data); 59 data);
90 // The texture is already fully bound so just call it now. 60 // The texture is already fully bound so just call it now.
91 bind_callback.Run(); 61 bind_callback.Run();
92 } 62 }
93 63
94 void AsyncPixelTransferDelegateSync::AsyncTexSubImage2D( 64 void AsyncPixelTransferDelegateSync::AsyncTexSubImage2D(
95 AsyncPixelTransferState* transfer_state,
96 const AsyncTexSubImage2DParams& tex_params, 65 const AsyncTexSubImage2DParams& tex_params,
97 const AsyncMemoryParams& mem_params) { 66 const AsyncMemoryParams& mem_params) {
98 void* data = GetAddress(mem_params); 67 void* data = GetAddress(mem_params);
99 DCHECK(transfer_state);
100 base::TimeTicks begin_time(base::TimeTicks::HighResNow()); 68 base::TimeTicks begin_time(base::TimeTicks::HighResNow());
101 glTexSubImage2D( 69 glTexSubImage2D(
102 tex_params.target, 70 tex_params.target,
103 tex_params.level, 71 tex_params.level,
104 tex_params.xoffset, 72 tex_params.xoffset,
105 tex_params.yoffset, 73 tex_params.yoffset,
106 tex_params.width, 74 tex_params.width,
107 tex_params.height, 75 tex_params.height,
108 tex_params.format, 76 tex_params.format,
109 tex_params.type, 77 tex_params.type,
110 data); 78 data);
111 shared_state_->texture_upload_count++; 79 shared_state_->texture_upload_count++;
112 shared_state_->total_texture_upload_time += 80 shared_state_->total_texture_upload_time +=
113 base::TimeTicks::HighResNow() - begin_time; 81 base::TimeTicks::HighResNow() - begin_time;
114 } 82 }
115 83
116 void AsyncPixelTransferDelegateSync::WaitForTransferCompletion( 84 bool AsyncPixelTransferDelegateSync::TransferIsInProgress() {
117 AsyncPixelTransferState* state) { 85 // Already done.
86 return false;
87 }
88
89 void AsyncPixelTransferDelegateSync::WaitForTransferCompletion() {
118 // Already done. 90 // Already done.
119 } 91 }
120 92
121 AsyncPixelTransferManagerSync::SharedState::SharedState() 93 AsyncPixelTransferManagerSync::SharedState::SharedState()
122 : texture_upload_count(0) {} 94 : texture_upload_count(0) {}
123 95
124 AsyncPixelTransferManagerSync::SharedState::~SharedState() {} 96 AsyncPixelTransferManagerSync::SharedState::~SharedState() {}
125 97
126 AsyncPixelTransferManagerSync::AsyncPixelTransferManagerSync() 98 AsyncPixelTransferManagerSync::AsyncPixelTransferManagerSync() {}
127 : delegate_(new AsyncPixelTransferDelegateSync(&shared_state_)) {}
128 99
129 AsyncPixelTransferManagerSync::~AsyncPixelTransferManagerSync() {} 100 AsyncPixelTransferManagerSync::~AsyncPixelTransferManagerSync() {}
130 101
131 void AsyncPixelTransferManagerSync::BindCompletedAsyncTransfers() { 102 void AsyncPixelTransferManagerSync::BindCompletedAsyncTransfers() {
132 // Everything is already bound. 103 // Everything is already bound.
133 } 104 }
134 105
135 void AsyncPixelTransferManagerSync::AsyncNotifyCompletion( 106 void AsyncPixelTransferManagerSync::AsyncNotifyCompletion(
136 const AsyncMemoryParams& mem_params, 107 const AsyncMemoryParams& mem_params,
137 const CompletionCallback& callback) { 108 const CompletionCallback& callback) {
138 callback.Run(mem_params); 109 callback.Run(mem_params);
139 } 110 }
140 111
141 uint32 AsyncPixelTransferManagerSync::GetTextureUploadCount() { 112 uint32 AsyncPixelTransferManagerSync::GetTextureUploadCount() {
142 return shared_state_.texture_upload_count; 113 return shared_state_.texture_upload_count;
143 } 114 }
144 115
145 base::TimeDelta AsyncPixelTransferManagerSync::GetTotalTextureUploadTime() { 116 base::TimeDelta AsyncPixelTransferManagerSync::GetTotalTextureUploadTime() {
146 return shared_state_.total_texture_upload_time; 117 return shared_state_.total_texture_upload_time;
147 } 118 }
148 119
149 void AsyncPixelTransferManagerSync::ProcessMorePendingTransfers() { 120 void AsyncPixelTransferManagerSync::ProcessMorePendingTransfers() {
150 } 121 }
151 122
152 bool AsyncPixelTransferManagerSync::NeedsProcessMorePendingTransfers() { 123 bool AsyncPixelTransferManagerSync::NeedsProcessMorePendingTransfers() {
153 return false; 124 return false;
154 } 125 }
155 126
156 AsyncPixelTransferDelegate* 127 AsyncPixelTransferDelegate*
157 AsyncPixelTransferManagerSync::GetAsyncPixelTransferDelegate() { 128 AsyncPixelTransferManagerSync::CreatePixelTransferDelegateImpl(
158 return delegate_.get(); 129 gles2::TextureRef* ref,
130 const AsyncTexImage2DParams& define_params) {
131 return new AsyncPixelTransferDelegateSync(&shared_state_);
159 } 132 }
160 133
161 } // namespace gpu 134 } // namespace gpu
162
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/async_pixel_transfer_manager_sync.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698