Index: src/gpu/gl/GrGLGpu.h |
diff --git a/src/gpu/gl/GrGLGpu.h b/src/gpu/gl/GrGLGpu.h |
index 0ec69c0660beecd556b593a50f24c6486f6bf9c5..b93080b70037d2b5a624b0b9996dc7b798adad12 100644 |
--- a/src/gpu/gl/GrGLGpu.h |
+++ b/src/gpu/gl/GrGLGpu.h |
@@ -246,25 +246,9 @@ |
// ensures that such operations don't negatively interact with tracking bound textures. |
void setScratchTextureUnit(); |
- // Binds the render target, sets the viewport, tracks dirty are for resolve, and tracks whether |
- // mip maps need rebuilding. bounds is region that may be modified by the draw. NULL means whole |
- // target. Can be an empty rect. |
- void prepareToDrawToRenderTarget(GrGLRenderTarget*, const SkIRect* bounds); |
- |
- // On older GLs there may not be separate FBO bindings for draw and read. In that case these |
- // alias each other. |
- enum FBOBinding { |
- kDraw_FBOBinding, // drawing or dst of blit |
- kRead_FBOBinding, // src of blit, read pixels. |
- |
- kLast_FBOBinding = kRead_FBOBinding |
- }; |
- static const int kFBOBindingCnt = kLast_FBOBinding + 1; |
- |
- // binds the FBO and returns the GL enum of the framebuffer target it was bound to. |
- GrGLenum bindFBO(FBOBinding, const GrGLFBO*); |
- |
- void setViewport(const GrGLIRect& viewport); |
+ // bounds is region that may be modified and therefore has to be resolved. |
+ // NULL means whole target. Can be an empty rect. |
+ void flushRenderTarget(GrGLRenderTarget*, const SkIRect* bounds); |
void flushStencil(const GrStencilSettings&); |
void flushHWAAState(GrRenderTarget* rt, bool useHWAA, bool isLineDraw); |
@@ -297,14 +281,15 @@ |
bool createRenderTargetObjects(const GrSurfaceDesc&, bool budgeted, GrGLuint texID, |
GrGLRenderTarget::IDDesc*); |
- static const FBOBinding kInvalidFBOBinding = static_cast<FBOBinding>(-1); |
- |
- // Binds a surface as an FBO. A temporary FBO ID may be used if the surface is not already |
- // a render target. Afterwards unbindSurfaceAsFBOForCopy must be called with the value returned. |
- FBOBinding bindSurfaceAsFBOForCopy(GrSurface*, FBOBinding, GrGLIRect* viewport); |
- |
- // Must be matched with bindSurfaceAsFBOForCopy. |
- void unbindSurfaceAsFBOForCopy(FBOBinding); |
+ enum TempFBOTarget { |
+ kSrc_TempFBOTarget, |
+ kDst_TempFBOTarget |
+ }; |
+ |
+ GrGLuint bindSurfaceAsFBO(GrSurface* surface, GrGLenum fboTarget, GrGLIRect* viewport, |
+ TempFBOTarget tempFBOTarget); |
+ |
+ void unbindTextureFromFBO(GrGLenum fboTarget); |
GrGLContext fGLContext; |
@@ -324,9 +309,10 @@ |
kUnknown_TriState |
}; |
- SkAutoTUnref<GrGLFBO> fTempSrcFBO; |
- SkAutoTUnref<GrGLFBO> fTempDstFBO; |
- SkAutoTUnref<GrGLFBO> fStencilClearFBO; |
+ GrGLuint fTempSrcFBOID; |
+ GrGLuint fTempDstFBOID; |
+ |
+ GrGLuint fStencilClearFBOID; |
// last scissor / viewport scissor state seen by the GL. |
struct { |
@@ -472,13 +458,8 @@ |
GrPipelineBuilder::DrawFace fHWDrawFace; |
TriState fHWWriteToColor; |
TriState fHWDitherEnabled; |
+ uint32_t fHWBoundRenderTargetUniqueID; |
SkTArray<uint32_t, true> fHWBoundTextureUniqueIDs; |
- |
- // Track fbo binding state. |
- struct HWFBOBinding { |
- SkAutoTUnref<const GrGLFBO> fFBO; |
- void invalidate() { fFBO.reset(NULL); } |
- } fHWFBOBinding[kFBOBindingCnt]; |
///@} |