rename SkDevice::eraseColor to clear and make virtual.
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 14 Apr 2011 18:40:27 +0000 (18:40 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 14 Apr 2011 18:40:27 +0000 (18:40 +0000)
Properly flush in GrContext before calling GrGpu::clear()

Review URL: http://codereview.appspot.com/4419043/

git-svn-id: http://skia.googlecode.com/svn/trunk@1130 2bbb7eff-a529-9590-31e7-b0007b416f81

gpu/include/GrContext.h
gpu/include/GrGpu.h
gpu/src/GrContext.cpp
gpu/src/GrGpu.cpp
gpu/src/GrGpuGL.cpp
gpu/src/GrGpuGL.h
include/core/SkDevice.h
include/gpu/SkGpuDevice.h
src/core/SkDevice.cpp
src/gpu/SkGpuDevice.cpp

index 7b6803c..5eda2b7 100644 (file)
@@ -283,9 +283,9 @@ public:
     // Draws
 
     /**
-     *  Erase the entire render target, ignoring any clips
+     *  Clear the entire render target, ignoring any clips
      */
-    void eraseColor(GrColor color);
+    void clear(GrColor color);
 
     /**
      *  Draw everywhere (respecting the clip) with the paint.
index 61dae2c..7dd9959 100644 (file)
@@ -235,11 +235,11 @@ public:
     GrIndexBuffer* createIndexBuffer(uint32_t size, bool dynamic);
 
     /**
-     * Erase the entire render target, ignoring any clips/scissors.
+     * Clear the entire render target, ignoring any clips/scissors.
      *
      * This is issued to the GPU driver immediately.
      */
-    void eraseColor(GrColor color);
+    void clear(GrColor color);
 
     /**
      * Are 8 bit paletted textures supported.
@@ -498,8 +498,8 @@ protected:
     virtual GrIndexBuffer* onCreateIndexBuffer(uint32_t size,
                                                bool dynamic) = 0;
 
-    // overridden by API-specific derivated class to perform the erase.
-    virtual void onEraseColor(GrColor color) = 0;
+    // overridden by API-specific derivated class to perform the clear.
+    virtual void onClear(GrColor color) = 0;
 
     // overridden by API-specific derived class to perform the draw call.
     virtual void onDrawIndexed(GrPrimitiveType type,
@@ -539,7 +539,7 @@ protected:
     virtual void flushScissor(const GrIRect* rect) = 0;
 
     // GrGpu subclass removes the clip from the stencil buffer
-    virtual void eraseStencilClip(const GrIRect& rect) = 0;
+    virtual void clearStencilClip(const GrIRect& rect) = 0;
 
 private:
     GrContext*                  fContext; // not reffed (context refs gpu)
index 8017f73..f68564a 100644 (file)
@@ -325,8 +325,11 @@ void GrContext::setClip(const GrIRect& rect) {
 
 ////////////////////////////////////////////////////////////////////////////////
 
-void GrContext::eraseColor(GrColor color) {
-    fGpu->eraseColor(color);
+void GrContext::clear(GrColor color) {
+    // gpu flush call is immediate, must flush. 
+    // (could in theory skip draws to current render target.)
+    this->flush();
+    fGpu->clear(color);
 }
 
 void GrContext::drawPaint(const GrPaint& paint) {
index 43fe648..c8e2bc7 100644 (file)
@@ -173,9 +173,9 @@ GrIndexBuffer* GrGpu::createIndexBuffer(uint32_t size, bool dynamic) {
     return this->onCreateIndexBuffer(size, dynamic);
 }
 
-void GrGpu::eraseColor(GrColor color) {
+void GrGpu::clear(GrColor color) {
     this->handleDirtyContext();
-    this->onEraseColor(color);
+    this->onClear(color);
 }
 
 void GrGpu::forceRenderTargetFlush() {
@@ -423,7 +423,7 @@ bool GrGpu::setupClipAndFlushState(GrPrimitiveType type) {
             AutoInternalDrawGeomRestore aidgr(this);
 
             this->setViewMatrix(GrMatrix::I());
-            this->eraseStencilClip(clipRect);
+            this->clearStencilClip(clipRect);
             this->flushScissor(NULL);
 #if !VISUALIZE_COMPLEX_CLIP
             this->enableState(kNoColorWrites_StateBit);
index fe461cc..64431a3 100644 (file)
@@ -1080,7 +1080,7 @@ GrTexture* GrGpuGL::onCreateTexture(const TextureDesc& desc,
         if (!(desc.fFlags & kNoStencil_TextureFlag)) {
             GrRenderTarget* rtSave = fCurrDrawState.fRenderTarget;
             fCurrDrawState.fRenderTarget = rt;
-            eraseStencil(0, ~0);
+            this->clearStencil(0, ~0);
             fCurrDrawState.fRenderTarget = rtSave;
         }
     }
@@ -1165,7 +1165,7 @@ void GrGpuGL::flushScissor(const GrIRect* rect) {
     }
 }
 
-void GrGpuGL::onEraseColor(GrColor color) {
+void GrGpuGL::onClear(GrColor color) {
     if (NULL == fCurrDrawState.fRenderTarget) {
         return;
     }
@@ -1183,7 +1183,7 @@ void GrGpuGL::onEraseColor(GrColor color) {
     GR_GL(Clear(GR_GL_COLOR_BUFFER_BIT));
 }
 
-void GrGpuGL::eraseStencil(uint32_t value, uint32_t mask) {
+void GrGpuGL::clearStencil(uint32_t value, uint32_t mask) {
     if (NULL == fCurrDrawState.fRenderTarget) {
         return;
     }
@@ -1198,7 +1198,7 @@ void GrGpuGL::eraseStencil(uint32_t value, uint32_t mask) {
     fHWDrawState.fStencilSettings.invalidate();
 }
 
-void GrGpuGL::eraseStencilClip(const GrIRect& rect) {
+void GrGpuGL::clearStencilClip(const GrIRect& rect) {
     GrAssert(NULL != fCurrDrawState.fRenderTarget);
 #if 0
     GrGLint stencilBitCount = fCurrDrawState.fRenderTarget->stencilBits();
index eaeec5e..08edb27 100644 (file)
@@ -87,7 +87,7 @@ protected:
                                                  int width, int height);
     virtual GrRenderTarget* onCreateRenderTargetFrom3DApiState();
 
-    virtual void onEraseColor(GrColor color);
+    virtual void onClear(GrColor color);
 
     virtual void onForceRenderTargetFlush();
 
@@ -104,8 +104,8 @@ protected:
                                       uint32_t vertexCount,
                                       uint32_t numVertices);
     virtual void flushScissor(const GrIRect* rect);
-    void eraseStencil(uint32_t value, uint32_t mask);
-    virtual void eraseStencilClip(const GrIRect& rect);
+    void clearStencil(uint32_t value, uint32_t mask);
+    virtual void clearStencilClip(const GrIRect& rect);
 
     // binds texture unit in GL
     void setTextureUnit(int unitIdx);
index 8889fb4..5755e95 100644 (file)
@@ -115,10 +115,15 @@ public:
     */
     const SkBitmap& accessBitmap(bool changePixels);
 
-    /** Helper to erase the entire device to the specified color (including
-        alpha).
-    */
-    void eraseColor(SkColor eraseColor);
+    /** Clears the entire device to the specified color (including alpha).
+     *  Ignores the clip.
+     */
+    virtual void clear(SkColor color);
+
+    /**
+     * Deprecated name for clear.
+     */
+    void eraseColor(SkColor eraseColor) { this->clear(eraseColor); }
 
     /** Called when this device is installed into a Canvas. Balanaced by a call
         to unlockPixels() when the device is removed from a Canvas.
index fbe5929..ff1bb0d 100644 (file)
@@ -75,6 +75,7 @@ public:
 
     // overrides from SkDevice
 
+    virtual void clear(SkColor color);
     virtual bool readPixels(const SkIRect& srcRect, SkBitmap* bitmap);
     virtual void writePixels(const SkBitmap& bitmap, int x, int y);
 
index 69d0c1c..6305e19 100644 (file)
@@ -65,8 +65,8 @@ bool SkDevice::intersects(const SkIRect& r, SkIRect* sect) const {
     return sect ? sect->intersect(r, bounds) : SkIRect::Intersects(r, bounds);
 }
 
-void SkDevice::eraseColor(SkColor eraseColor) {
-    fBitmap.eraseColor(eraseColor);
+void SkDevice::clear(SkColor color) {
+    fBitmap.eraseColor(color);
 }
 
 void SkDevice::onAccessBitmap(SkBitmap* bitmap) {}
index 723c635..f89d4b1 100644 (file)
@@ -323,7 +323,7 @@ void SkGpuDevice::gainFocus(SkCanvas* canvas, const SkMatrix& matrix,
     convert_matrixclip(fContext, matrix, clipStack, clip, this->getOrigin());
 
     if (fNeedClear) {
-        fContext->eraseColor(0x0);
+        fContext->clear(0x0);
         fNeedClear = false;
     }
 }
@@ -591,6 +591,10 @@ private:
 
 ///////////////////////////////////////////////////////////////////////////////
 
+void SkGpuDevice::clear(SkColor color) {
+    fContext->clear(color);
+}
+
 void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
     CHECK_SHOULD_DRAW(draw);