Index: src/gpu/gl/GrGLGpu.h |
diff --git a/src/gpu/gl/GrGLGpu.h b/src/gpu/gl/GrGLGpu.h |
index c5103ebb1159bde79bdb1c4c8294bdccc8ae713a..3eea6e9ee61d1b7333edaee10c4513b9cf3fc4fe 100644 |
--- a/src/gpu/gl/GrGLGpu.h |
+++ b/src/gpu/gl/GrGLGpu.h |
@@ -283,7 +283,15 @@ private: |
bool createRenderTargetObjects(const GrSurfaceDesc&, bool budgeted, GrGLuint texID, |
GrGLRenderTarget::IDDesc*); |
- GrGLuint bindSurfaceAsFBO(GrSurface* surface, GrGLenum fboTarget, GrGLIRect* viewport); |
+ enum TempFBOTarget { |
+ kSrc_TempFBOTarget, |
+ kDst_TempFBOTarget |
+ }; |
+ |
+ GrGLuint bindSurfaceAsFBO(GrSurface* surface, GrGLenum fboTarget, GrGLIRect* viewport, |
+ TempFBOTarget tempFBOTarget); |
+ |
+ void unbindTextureFromFBO(GrGLenum fboTarget); |
GrGLContext fGLContext; |
@@ -303,6 +311,24 @@ private: |
kUnknown_TriState |
}; |
+ // Temp FBOs |
+ struct TempFBO { |
bsalomon
2015/02/02 21:33:01
Maybe it'd be better to just have explicit calls i
|
+ explicit TempFBO(GrGLGpu* gpu) : fID(0), fGpu(gpu) {} |
+ ~TempFBO() { |
+ if (0 != fID) { |
+ GR_GL_CALL(fGpu->glInterface(), DeleteFramebuffers(1, &fID)); |
+ } |
+ } |
+ GrGLuint fID; |
+ GrGLGpu* fGpu; |
+ |
+ void reset() { |
+ fID = 0; |
+ } |
+ }; |
+ TempFBO fTempSrcFBO; |
+ TempFBO fTempDstFBO; |
+ |
// last scissor / viewport scissor state seen by the GL. |
struct { |
TriState fEnabled; |