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

Side by Side Diff: include/gpu/GrGpuResourceRef.h

Issue 737723003: drawinfo carries bufferinfo (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: feedback inc Created 6 years, 1 month 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
« no previous file with comments | « no previous file | src/gpu/GrDrawTarget.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrGpuResourceRef_DEFINED 8 #ifndef GrGpuResourceRef_DEFINED
9 #define GrGpuResourceRef_DEFINED 9 #define GrGpuResourceRef_DEFINED
10 10
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 private: 152 private:
153 typedef GrGpuResourceRef INHERITED; 153 typedef GrGpuResourceRef INHERITED;
154 }; 154 };
155 155
156 /** 156 /**
157 * This is similar to GrTGpuResourceRef but can only be in the pending IO state. It never owns a 157 * This is similar to GrTGpuResourceRef but can only be in the pending IO state. It never owns a
158 * ref. 158 * ref.
159 */ 159 */
160 template <typename T, GrIOType IO_TYPE> class GrPendingIOResource : SkNoncopyabl e { 160 template <typename T, GrIOType IO_TYPE> class GrPendingIOResource : SkNoncopyabl e {
161 public: 161 public:
162 GrPendingIOResource(T* resource) : fResource(resource) { 162 GrPendingIOResource(T* resource = NULL) : fResource(NULL) {
163 if (NULL != fResource) { 163 this->reset(resource);
164 }
165
166 void reset(T* resource) {
167 if (resource) {
164 switch (IO_TYPE) { 168 switch (IO_TYPE) {
165 case kRead_GrIOType: 169 case kRead_GrIOType:
166 fResource->addPendingRead(); 170 resource->addPendingRead();
167 break; 171 break;
168 case kWrite_GrIOType: 172 case kWrite_GrIOType:
169 fResource->addPendingWrite(); 173 resource->addPendingWrite();
170 break; 174 break;
171 case kRW_GrIOType: 175 case kRW_GrIOType:
172 fResource->addPendingRead(); 176 resource->addPendingRead();
173 fResource->addPendingWrite(); 177 resource->addPendingWrite();
174 break; 178 break;
175 } 179 }
176 } 180 }
181 this->release();
182 fResource = resource;
177 } 183 }
178 184
179 ~GrPendingIOResource() { 185 ~GrPendingIOResource() {
180 if (NULL != fResource) { 186 this->release();
187 }
188
189 T* get() const { return fResource; }
190
191 private:
192 void release() {
193 if (fResource) {
181 switch (IO_TYPE) { 194 switch (IO_TYPE) {
182 case kRead_GrIOType: 195 case kRead_GrIOType:
183 fResource->completedRead(); 196 fResource->completedRead();
184 break; 197 break;
185 case kWrite_GrIOType: 198 case kWrite_GrIOType:
186 fResource->completedWrite(); 199 fResource->completedWrite();
187 break; 200 break;
188 case kRW_GrIOType: 201 case kRW_GrIOType:
189 fResource->completedRead(); 202 fResource->completedRead();
190 fResource->completedWrite(); 203 fResource->completedWrite();
191 break; 204 break;
192 } 205 }
193 } 206 }
194 } 207 }
195 208
196 T* get() const { return fResource; }
197
198 private:
199 T* fResource; 209 T* fResource;
200 }; 210 };
201 #endif 211 #endif
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrDrawTarget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698