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

Unified Diff: include/gpu/GrGpuResourceRef.h

Issue 579403003: Move IOType to GrGpuRef and rename that to GrIORef. Template GrPendingIORef on IOType. (Closed) Base URL: https://skia.googlesource.com/skia.git@ref
Patch Set: rebase again Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/gpu/GrGpuResource.h ('k') | src/gpu/GrDrawState.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/gpu/GrGpuResourceRef.h
diff --git a/include/gpu/GrGpuResourceRef.h b/include/gpu/GrGpuResourceRef.h
index d178908f93b2250291352f1654220aa2c2a4293c..6b3937b5c73066e393a5110327ec1512e633d12f 100644
--- a/include/gpu/GrGpuResourceRef.h
+++ b/include/gpu/GrGpuResourceRef.h
@@ -8,10 +8,9 @@
#ifndef GrGpuResourceRef_DEFINED
#define GrGpuResourceRef_DEFINED
+#include "GrGpuResource.h"
#include "SkRefCnt.h"
-class GrGpuResource;
-
/**
* This class is intended only for internal use in core Gr code.
*
@@ -37,14 +36,6 @@ class GrGpuResourceRef : SkNoncopyable {
public:
SK_DECLARE_INST_COUNT_ROOT(GrGpuResourceRef);
- enum IOType {
- kRead_IOType,
- kWrite_IOType,
- kRW_IOType,
-
- kNone_IOType, // For internal use only, don't specify to constructor or setResource().
- };
-
~GrGpuResourceRef();
GrGpuResource* getResource() const { return fResource; }
@@ -61,11 +52,11 @@ protected:
/** Adopts a ref from the caller. ioType expresses what type of IO operations will be marked as
pending on the resource when markPendingIO is called. */
- GrGpuResourceRef(GrGpuResource*, IOType);
+ GrGpuResourceRef(GrGpuResource*, GrIORef::IOType);
/** Adopts a ref from the caller. ioType expresses what type of IO operations will be marked as
pending on the resource when markPendingIO is called. */
- void setResource(GrGpuResource*, IOType);
+ void setResource(GrGpuResource*, GrIORef::IOType);
private:
/** Called by owning GrProgramElement when the program element is first scheduled for
@@ -90,7 +81,7 @@ private:
GrGpuResource* fResource;
mutable bool fOwnRef;
mutable bool fPendingIO;
- IOType fIOType;
+ GrIORef::IOType fIOType;
typedef SkNoncopyable INHERITED;
};
@@ -104,13 +95,13 @@ public:
/** Adopts a ref from the caller. ioType expresses what type of IO operations will be marked as
pending on the resource when markPendingIO is called. */
- GrTGpuResourceRef(T* resource, IOType ioType) : INHERITED(resource, ioType) {}
+ GrTGpuResourceRef(T* resource, GrIORef::IOType ioType) : INHERITED(resource, ioType) {}
T* get() const { return static_cast<T*>(this->getResource()); }
/** Adopts a ref from the caller. ioType expresses what type of IO operations will be marked as
pending on the resource when markPendingIO is called. */
- void set(T* resource, IOType ioType) { this->setResource(resource, ioType); }
+ void set(T* resource, GrIORef::IOType ioType) { this->setResource(resource, ioType); }
private:
typedef GrGpuResourceRef INHERITED;
@@ -120,22 +111,18 @@ private:
* This is similar to GrTGpuResourceRef but can only be in the pending IO state. It never owns a
* ref.
*/
-template <typename T> class GrPendingIOResource : SkNoncopyable {
+template <typename T, GrIORef::IOType IO_TYPE> class GrPendingIOResource : SkNoncopyable {
public:
- typedef GrGpuResourceRef::IOType IOType;
- GrPendingIOResource(T* resource, IOType ioType) : fResource(resource), fIOType(ioType) {
+ GrPendingIOResource(T* resource) : fResource(resource) {
if (NULL != fResource) {
- switch (fIOType) {
- case GrGpuResourceRef::kNone_IOType:
- SkFAIL("GrPendingIOResource with neither reads nor writes?");
- break;
- case GrGpuResourceRef::kRead_IOType:
+ switch (IO_TYPE) {
+ case GrIORef::kRead_IOType:
fResource->addPendingRead();
break;
- case GrGpuResourceRef::kWrite_IOType:
+ case GrIORef::kWrite_IOType:
fResource->addPendingWrite();
break;
- case GrGpuResourceRef::kRW_IOType:
+ case GrIORef::kRW_IOType:
fResource->addPendingRead();
fResource->addPendingWrite();
break;
@@ -145,17 +132,14 @@ public:
~GrPendingIOResource() {
if (NULL != fResource) {
- switch (fIOType) {
- case GrGpuResourceRef::kNone_IOType:
- SkFAIL("GrPendingIOResource with neither reads nor writes?");
- break;
- case GrGpuResourceRef::kRead_IOType:
+ switch (IO_TYPE) {
+ case GrIORef::kRead_IOType:
fResource->completedRead();
break;
- case GrGpuResourceRef::kWrite_IOType:
+ case GrIORef::kWrite_IOType:
fResource->completedWrite();
break;
- case GrGpuResourceRef::kRW_IOType:
+ case GrIORef::kRW_IOType:
fResource->completedRead();
fResource->completedWrite();
break;
@@ -167,6 +151,5 @@ public:
private:
T* fResource;
- IOType fIOType;
};
#endif
« no previous file with comments | « include/gpu/GrGpuResource.h ('k') | src/gpu/GrDrawState.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698