aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2014-09-19 11:48:02 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-09-19 11:48:02 -0700
commit45725db1d82615d43408ec488549aec6218f80e4 (patch)
treea4c86b49d5ecdb458420c29d7605eb793f9367b5 /src/gpu
parent8483326704eff3b6a5fcce3f36d857a9779a4dd2 (diff)
Move IOType to GrGpuRef and rename that to GrIORef. Template GrPendingIORef on IOType.
BUG=skia:2889 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/579403003
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/GrDrawState.h2
-rw-r--r--src/gpu/GrGpuResource.cpp2
-rw-r--r--src/gpu/GrGpuResourceRef.cpp37
-rw-r--r--src/gpu/GrInOrderDrawBuffer.h32
-rw-r--r--src/gpu/GrRODrawState.cpp2
-rw-r--r--src/gpu/GrTextureAccess.cpp8
6 files changed, 33 insertions, 50 deletions
diff --git a/src/gpu/GrDrawState.h b/src/gpu/GrDrawState.h
index 4d720624aa..458fb958e6 100644
--- a/src/gpu/GrDrawState.h
+++ b/src/gpu/GrDrawState.h
@@ -405,7 +405,7 @@ public:
* @param target The render target to set.
*/
void setRenderTarget(GrRenderTarget* target) {
- fRenderTarget.set(SkSafeRef(target), GrGpuResourceRef::kWrite_IOType);
+ fRenderTarget.set(SkSafeRef(target), GrIORef::kWrite_IOType);
this->invalidateOptState();
}
diff --git a/src/gpu/GrGpuResource.cpp b/src/gpu/GrGpuResource.cpp
index a8d7bbf9f5..bba934e605 100644
--- a/src/gpu/GrGpuResource.cpp
+++ b/src/gpu/GrGpuResource.cpp
@@ -11,7 +11,7 @@
#include "GrResourceCache2.h"
#include "GrGpu.h"
-GrGpuRef::~GrGpuRef() {
+GrIORef::~GrIORef() {
SkASSERT(0 == fRefCnt);
SkASSERT(0 == fPendingReads);
SkASSERT(0 == fPendingWrites);
diff --git a/src/gpu/GrGpuResourceRef.cpp b/src/gpu/GrGpuResourceRef.cpp
index e2a702ef6d..7c521df462 100644
--- a/src/gpu/GrGpuResourceRef.cpp
+++ b/src/gpu/GrGpuResourceRef.cpp
@@ -6,16 +6,14 @@
*/
#include "GrGpuResourceRef.h"
-#include "GrGpuResource.h"
GrGpuResourceRef::GrGpuResourceRef() {
fResource = NULL;
fOwnRef = false;
fPendingIO = false;
- fIOType = kNone_IOType;
}
-GrGpuResourceRef::GrGpuResourceRef(GrGpuResource* resource, IOType ioType) {
+GrGpuResourceRef::GrGpuResourceRef(GrGpuResource* resource, GrIORef::IOType ioType) {
fResource = NULL;
fOwnRef = false;
fPendingIO = false;
@@ -29,16 +27,13 @@ GrGpuResourceRef::~GrGpuResourceRef() {
}
if (fPendingIO) {
switch (fIOType) {
- case kNone_IOType:
- SkFAIL("Shouldn't get here if fIOType is kNone.");
- break;
- case kRead_IOType:
+ case GrIORef::kRead_IOType:
fResource->completedRead();
break;
- case kWrite_IOType:
+ case GrIORef::kWrite_IOType:
fResource->completedWrite();
break;
- case kRW_IOType:
+ case GrIORef::kRW_IOType:
fResource->completedRead();
fResource->completedWrite();
break;
@@ -53,20 +48,17 @@ void GrGpuResourceRef::reset() {
fResource->unref();
fOwnRef = false;
fResource = NULL;
- fIOType = kNone_IOType;
}
}
-void GrGpuResourceRef::setResource(GrGpuResource* resource, IOType ioType) {
+void GrGpuResourceRef::setResource(GrGpuResource* resource, GrIORef::IOType ioType) {
SkASSERT(!fPendingIO);
SkASSERT(SkToBool(fResource) == fOwnRef);
SkSafeUnref(fResource);
if (NULL == resource) {
fResource = NULL;
fOwnRef = false;
- fIOType = kNone_IOType;
} else {
- SkASSERT(kNone_IOType != ioType);
fResource = resource;
fOwnRef = true;
fIOType = ioType;
@@ -80,16 +72,13 @@ void GrGpuResourceRef::markPendingIO() const {
SkASSERT(fResource);
fPendingIO = true;
switch (fIOType) {
- case kNone_IOType:
- SkFAIL("GrGpuResourceRef with neither reads nor writes?");
- break;
- case kRead_IOType:
+ case GrIORef::kRead_IOType:
fResource->addPendingRead();
break;
- case kWrite_IOType:
+ case GrIORef::kWrite_IOType:
fResource->addPendingWrite();
break;
- case kRW_IOType:
+ case GrIORef::kRW_IOType:
fResource->addPendingRead();
fResource->addPendingWrite();
break;
@@ -102,16 +91,13 @@ void GrGpuResourceRef::pendingIOComplete() const {
SkASSERT(fOwnRef);
SkASSERT(fPendingIO);
switch (fIOType) {
- case kNone_IOType:
- SkFAIL("GrGpuResourceRef with neither reads nor writes?");
- break;
- case kRead_IOType:
+ case GrIORef::kRead_IOType:
fResource->completedRead();
break;
- case kWrite_IOType:
+ case GrIORef::kWrite_IOType:
fResource->completedWrite();
break;
- case kRW_IOType:
+ case GrIORef::kRW_IOType:
fResource->completedRead();
fResource->completedWrite();
break;
@@ -125,7 +111,6 @@ void GrGpuResourceRef::removeRef() const {
// there is a pending execution.
SkASSERT(fOwnRef);
SkASSERT(fPendingIO);
- SkASSERT(kNone_IOType != fIOType);
SkASSERT(fResource);
fResource->unref();
fOwnRef = false;
diff --git a/src/gpu/GrInOrderDrawBuffer.h b/src/gpu/GrInOrderDrawBuffer.h
index 532b83f1d1..e6ed06eadb 100644
--- a/src/gpu/GrInOrderDrawBuffer.h
+++ b/src/gpu/GrInOrderDrawBuffer.h
@@ -102,30 +102,30 @@ private:
public:
Draw(const DrawInfo& info, const GrVertexBuffer* vb, const GrIndexBuffer* ib)
: DrawInfo(info)
- , fVertexBuffer(vb, GrGpuResourceRef::kRead_IOType)
- , fIndexBuffer(ib, GrGpuResourceRef::kRead_IOType) {}
+ , fVertexBuffer(vb)
+ , fIndexBuffer(ib) {}
const GrVertexBuffer* vertexBuffer() const { return fVertexBuffer.get(); }
const GrIndexBuffer* indexBuffer() const { return fIndexBuffer.get(); }
private:
- GrPendingIOResource<const GrVertexBuffer> fVertexBuffer;
- GrPendingIOResource<const GrIndexBuffer> fIndexBuffer;
+ GrPendingIOResource<const GrVertexBuffer, GrIORef::kRead_IOType> fVertexBuffer;
+ GrPendingIOResource<const GrIndexBuffer, GrIORef::kRead_IOType> fIndexBuffer;
};
struct StencilPath : public ::SkNoncopyable {
- StencilPath(const GrPath* path) : fPath(path, GrGpuResourceRef::kRead_IOType) {}
+ StencilPath(const GrPath* path) : fPath(path) {}
const GrPath* path() const { return fPath.get(); }
SkPath::FillType fFill;
private:
- GrPendingIOResource<const GrPath> fPath;
+ GrPendingIOResource<const GrPath, GrIORef::kRead_IOType> fPath;
};
struct DrawPath : public ::SkNoncopyable {
- DrawPath(const GrPath* path) : fPath(path, GrGpuResourceRef::kRead_IOType) {}
+ DrawPath(const GrPath* path) : fPath(path) {}
const GrPath* path() const { return fPath.get(); }
@@ -133,12 +133,12 @@ private:
GrDeviceCoordTexture fDstCopy;
private:
- GrPendingIOResource<const GrPath> fPath;
+ GrPendingIOResource<const GrPath, GrIORef::kRead_IOType> fPath;
};
struct DrawPaths : public ::SkNoncopyable {
DrawPaths(const GrPathRange* pathRange)
- : fPathRange(pathRange, GrGpuResourceRef::kRead_IOType) {}
+ : fPathRange(pathRange) {}
~DrawPaths() {
if (fTransforms) {
@@ -159,12 +159,12 @@ private:
GrDeviceCoordTexture fDstCopy;
private:
- GrPendingIOResource<const GrPathRange> fPathRange;
+ GrPendingIOResource<const GrPathRange, GrIORef::kRead_IOType> fPathRange;
};
// This is also used to record a discard by setting the color to GrColor_ILLEGAL
struct Clear : public ::SkNoncopyable {
- Clear(GrRenderTarget* rt) : fRenderTarget(rt, GrGpuResourceRef::kWrite_IOType) {}
+ Clear(GrRenderTarget* rt) : fRenderTarget(rt) {}
~Clear() { }
GrRenderTarget* renderTarget() const { return fRenderTarget.get(); }
@@ -173,13 +173,11 @@ private:
bool fCanIgnoreRect;
private:
- GrPendingIOResource<GrRenderTarget> fRenderTarget;
+ GrPendingIOResource<GrRenderTarget, GrIORef::kWrite_IOType> fRenderTarget;
};
struct CopySurface : public ::SkNoncopyable {
- CopySurface(GrSurface* dst, GrSurface* src)
- : fDst(dst, GrGpuResourceRef::kWrite_IOType)
- , fSrc(src, GrGpuResourceRef::kRead_IOType) {}
+ CopySurface(GrSurface* dst, GrSurface* src) : fDst(dst), fSrc(src) {}
GrSurface* dst() const { return fDst.get(); }
GrSurface* src() const { return fSrc.get(); }
@@ -188,8 +186,8 @@ private:
SkIRect fSrcRect;
private:
- GrPendingIOResource<GrSurface> fDst;
- GrPendingIOResource<GrSurface> fSrc;
+ GrPendingIOResource<GrSurface, GrIORef::kWrite_IOType> fDst;
+ GrPendingIOResource<GrSurface, GrIORef::kRead_IOType> fSrc;
};
struct Clip : public ::SkNoncopyable {
diff --git a/src/gpu/GrRODrawState.cpp b/src/gpu/GrRODrawState.cpp
index 4d35684e5c..fb4db2d09c 100644
--- a/src/gpu/GrRODrawState.cpp
+++ b/src/gpu/GrRODrawState.cpp
@@ -14,7 +14,7 @@
GrRODrawState::GrRODrawState(const GrRODrawState& drawState) : INHERITED() {
fRenderTarget.setResource(SkSafeRef(drawState.fRenderTarget.getResource()),
- GrGpuResourceRef::kWrite_IOType);
+ GrIORef::kWrite_IOType);
}
bool GrRODrawState::isEqual(const GrRODrawState& that) const {
diff --git a/src/gpu/GrTextureAccess.cpp b/src/gpu/GrTextureAccess.cpp
index 3e543ca75f..662ccd65f8 100644
--- a/src/gpu/GrTextureAccess.cpp
+++ b/src/gpu/GrTextureAccess.cpp
@@ -46,7 +46,7 @@ void GrTextureAccess::reset(GrTexture* texture,
SkASSERT(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
fParams = params;
- fTexture.set(SkRef(texture), GrGpuResourceRef::kRead_IOType);
+ fTexture.set(SkRef(texture), GrIORef::kRead_IOType);
this->setSwizzle(swizzle);
}
@@ -58,14 +58,14 @@ void GrTextureAccess::reset(GrTexture* texture,
SkASSERT(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
fParams.reset(tileXAndY, filterMode);
- fTexture.set(SkRef(texture), GrGpuResourceRef::kRead_IOType);
+ fTexture.set(SkRef(texture), GrIORef::kRead_IOType);
this->setSwizzle(swizzle);
}
void GrTextureAccess::reset(GrTexture* texture,
const GrTextureParams& params) {
SkASSERT(texture);
- fTexture.set(SkRef(texture), GrGpuResourceRef::kRead_IOType);
+ fTexture.set(SkRef(texture), GrIORef::kRead_IOType);
fParams = params;
memcpy(fSwizzle, "rgba", 5);
fSwizzleMask = kRGBA_GrColorComponentFlags;
@@ -75,7 +75,7 @@ void GrTextureAccess::reset(GrTexture* texture,
GrTextureParams::FilterMode filterMode,
SkShader::TileMode tileXAndY) {
SkASSERT(texture);
- fTexture.set(SkRef(texture), GrGpuResourceRef::kRead_IOType);
+ fTexture.set(SkRef(texture), GrIORef::kRead_IOType);
fParams.reset(tileXAndY, filterMode);
memcpy(fSwizzle, "rgba", 5);
fSwizzleMask = kRGBA_GrColorComponentFlags;