Revert of Factor GrTexture into public GrTexture and private GrTextureImpl. (https://codereview.chromium.org/275903002/)

Reason for revert:
Breaks chrome build.

Original issue's description:
> Factor GrTexture into public GrTexture and private GrTextureImpl.
>
> Committed: http://code.google.com/p/skia/source/detail?r=14680

R=jvanverth@google.com, robertphillips@google.com
TBR=jvanverth@google.com, robertphillips@google.com
NOTREECHECKS=true
NOTRY=true

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/278073002

git-svn-id: http://skia.googlecode.com/svn/trunk@14681 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/GrResourceCacheBench.cpp b/bench/GrResourceCacheBench.cpp
index b2a5d1e..6767ca1 100644
--- a/bench/GrResourceCacheBench.cpp
+++ b/bench/GrResourceCacheBench.cpp
@@ -62,7 +62,7 @@
     }
 
     static GrResourceKey ComputeKey(const GrTextureDesc& desc) {
-        return GrTextureImpl::ComputeScratchKey(desc);
+        return GrTexture::ComputeScratchKey(desc);
     }
 
     int fID;
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index b28c444..73a01b2 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -1098,7 +1098,7 @@
         // lets go of the ref and the ref count goes to 0 internal_dispose will see this flag is
         // set and re-ref the texture, thereby restoring the cache's ref.
         SkASSERT(texture->getRefCnt() > 1);
-        texture->impl()->setFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit);
+        texture->setFlag((GrTextureFlags) GrTexture::kReturnToCache_FlagBit);
         texture->unref();
         SkASSERT(NULL != texture->getCacheEntry());
 
diff --git a/include/gpu/GrTexture.h b/include/gpu/GrTexture.h
index 03ea058..ac31f51 100644
--- a/include/gpu/GrTexture.h
+++ b/include/gpu/GrTexture.h
@@ -15,98 +15,12 @@
 
 class GrResourceKey;
 class GrTextureParams;
-class GrTextureImpl;
 
 class GrTexture : public GrSurface {
+
 public:
-    /**
-     *  Approximate number of bytes used by the texture
-     */
-    virtual size_t gpuMemorySize() const SK_OVERRIDE;
-
-    // GrSurface overrides
-    virtual bool readPixels(int left, int top, int width, int height,
-                            GrPixelConfig config,
-                            void* buffer,
-                            size_t rowBytes = 0,
-                            uint32_t pixelOpsFlags = 0) SK_OVERRIDE;
-
-    virtual void writePixels(int left, int top, int width, int height,
-                             GrPixelConfig config,
-                             const void* buffer,
-                             size_t rowBytes = 0,
-                             uint32_t pixelOpsFlags = 0) SK_OVERRIDE;
-
-    virtual GrTexture* asTexture() SK_OVERRIDE { return this; }
-    virtual const GrTexture* asTexture() const SK_OVERRIDE { return this; }
-    virtual GrRenderTarget* asRenderTarget() SK_OVERRIDE { return fRenderTarget.get(); }
-    virtual const GrRenderTarget* asRenderTarget() const SK_OVERRIDE { return fRenderTarget.get(); }
-
-    /**
-     * Convert from texels to normalized texture coords for POT textures only. Please don't add
-     * new callsites for these functions. They are slated for removal.
-     */
-    SkFixed normalizeFixedX(SkFixed x) const {
-        SkASSERT(GrIsPow2(fDesc.fWidth));
-        return x >> fShiftFixedX;
-    }
-    SkFixed normalizeFixedY(SkFixed y) const {
-        SkASSERT(GrIsPow2(fDesc.fHeight));
-        return y >> fShiftFixedY;
-    }
-
-    /**
-     *  Return the native ID or handle to the texture, depending on the
-     *  platform. e.g. on OpenGL, return the texture ID.
-     */
-    virtual GrBackendObject getTextureHandle() const = 0;
-
-#ifdef SK_DEBUG
-    void validate() const {
-        this->INHERITED::validate();
-
-        this->validateDesc();
-    }
-#endif
-
-    GrTextureImpl* impl() { return reinterpret_cast<GrTextureImpl*>(this); }
-    const GrTextureImpl* impl() const { return reinterpret_cast<const GrTextureImpl*>(this); }
-
-protected:
-    // A texture refs its rt representation but not vice-versa. It is up to
-    // the subclass constructor to initialize this pointer.
-    SkAutoTUnref<GrRenderTarget> fRenderTarget;
-
-    GrTexture(GrGpu* gpu, bool isWrapped, const GrTextureDesc& desc)
-    : INHERITED(gpu, isWrapped, desc)
-    , fRenderTarget(NULL) {
-        // only make sense if alloc size is pow2
-        fShiftFixedX = 31 - SkCLZ(fDesc.fWidth);
-        fShiftFixedY = 31 - SkCLZ(fDesc.fHeight);
-    }
-
-    virtual ~GrTexture();
-
-    // GrResource overrides
-    virtual void onRelease() SK_OVERRIDE;
-    virtual void onAbandon() SK_OVERRIDE;
-
-    void validateDesc() const;
-
-private:
-    virtual void internal_dispose() const SK_OVERRIDE;
-
-    // these two shift a fixed-point value into normalized coordinates
-    // for this texture if the texture is power of two sized.
-    int                 fShiftFixedX;
-    int                 fShiftFixedY;
-
-    typedef GrSurface INHERITED;
-};
-
-class GrTextureImpl : public GrTexture {
-public:
-    SK_DECLARE_INST_COUNT(GrTextureImpl)
+    SK_DECLARE_INST_COUNT(GrTexture)
+    // from GrResource
     /**
      * Informational texture flags
      */
@@ -136,9 +50,63 @@
         return kValid_MipMapsStatus != fMipMapsStatus;
     }
 
-    bool hasMipMaps() const {
-        return kNotAllocated_MipMapsStatus != fMipMapsStatus;
+    /**
+     *  Approximate number of bytes used by the texture
+     */
+    virtual size_t gpuMemorySize() const SK_OVERRIDE;
+
+    // GrSurface overrides
+    virtual bool readPixels(int left, int top, int width, int height,
+                            GrPixelConfig config,
+                            void* buffer,
+                            size_t rowBytes = 0,
+                            uint32_t pixelOpsFlags = 0) SK_OVERRIDE;
+
+    virtual void writePixels(int left, int top, int width, int height,
+                             GrPixelConfig config,
+                             const void* buffer,
+                             size_t rowBytes = 0,
+                             uint32_t pixelOpsFlags = 0) SK_OVERRIDE;
+
+    /**
+     * @return this texture
+     */
+    virtual GrTexture* asTexture() SK_OVERRIDE { return this; }
+    virtual const GrTexture* asTexture() const SK_OVERRIDE { return this; }
+
+    /**
+     * Retrieves the render target underlying this texture that can be passed to
+     * GrGpu::setRenderTarget().
+     *
+     * @return    handle to render target or NULL if the texture is not a
+     *            render target
+     */
+    virtual GrRenderTarget* asRenderTarget() SK_OVERRIDE {
+        return fRenderTarget.get();
     }
+    virtual const GrRenderTarget* asRenderTarget() const SK_OVERRIDE {
+        return fRenderTarget.get();
+    }
+
+    // GrTexture
+    /**
+     * Convert from texels to normalized texture coords for POT textures
+     * only.
+     */
+    SkFixed normalizeFixedX(SkFixed x) const {
+        SkASSERT(GrIsPow2(fDesc.fWidth));
+        return x >> fShiftFixedX;
+    }
+    SkFixed normalizeFixedY(SkFixed y) const {
+        SkASSERT(GrIsPow2(fDesc.fHeight));
+        return y >> fShiftFixedY;
+    }
+
+    /**
+     *  Return the native ID or handle to the texture, depending on the
+     *  platform. e.g. on OpenGL, return the texture ID.
+     */
+    virtual GrBackendObject getTextureHandle() const = 0;
 
     /**
      *  Call this when the state of the native API texture object is
@@ -146,6 +114,14 @@
      */
     virtual void invalidateCachedState() = 0;
 
+#ifdef SK_DEBUG
+    void validate() const {
+        this->INHERITED::validate();
+
+        this->validateDesc();
+    }
+#endif
+
     static GrResourceKey ComputeKey(const GrGpu* gpu,
                                     const GrTextureParams* params,
                                     const GrTextureDesc& desc,
@@ -155,10 +131,26 @@
     static bool NeedsBilerp(const GrResourceKey& key);
 
 protected:
-    GrTextureImpl(GrGpu* gpu, bool isWrapped, const GrTextureDesc& desc)
+    // A texture refs its rt representation but not vice-versa. It is up to
+    // the subclass constructor to initialize this pointer.
+    SkAutoTUnref<GrRenderTarget> fRenderTarget;
+
+    GrTexture(GrGpu* gpu, bool isWrapped, const GrTextureDesc& desc)
     : INHERITED(gpu, isWrapped, desc)
+    , fRenderTarget(NULL)
     , fMipMapsStatus(kNotAllocated_MipMapsStatus) {
+
+        // only make sense if alloc size is pow2
+        fShiftFixedX = 31 - SkCLZ(fDesc.fWidth);
+        fShiftFixedY = 31 - SkCLZ(fDesc.fHeight);
     }
+    virtual ~GrTexture();
+
+    // GrResource overrides
+    virtual void onRelease() SK_OVERRIDE;
+    virtual void onAbandon() SK_OVERRIDE;
+
+    void validateDesc() const;
 
 private:
     enum MipMapsStatus {
@@ -167,9 +159,16 @@
         kValid_MipMapsStatus
     };
 
+    // these two shift a fixed-point value into normalized coordinates
+    // for this texture if the texture is power of two sized.
+    int                 fShiftFixedX;
+    int                 fShiftFixedY;
+
     MipMapsStatus       fMipMapsStatus;
 
-    typedef GrTexture INHERITED;
+    virtual void internal_dispose() const SK_OVERRIDE;
+
+    typedef GrSurface INHERITED;
 };
 
 /**
@@ -205,7 +204,6 @@
         fTexture.reset(SkSafeRef(texture));
         return texture;
     }
-
 private:
     SkAutoTUnref<GrTexture> fTexture;
     SkIPoint                fOffset;
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 4b37c60..cd96def 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -237,7 +237,7 @@
 GrTexture* GrContext::findAndRefTexture(const GrTextureDesc& desc,
                                         const GrCacheID& cacheID,
                                         const GrTextureParams* params) {
-    GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, cacheID);
+    GrResourceKey resourceKey = GrTexture::ComputeKey(fGpu, params, desc, cacheID);
     GrCacheable* resource = fResourceCache->find(resourceKey);
     SkSafeRef(resource);
     return static_cast<GrTexture*>(resource);
@@ -246,7 +246,7 @@
 bool GrContext::isTextureInCache(const GrTextureDesc& desc,
                                  const GrCacheID& cacheID,
                                  const GrTextureParams* params) const {
-    GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, cacheID);
+    GrResourceKey resourceKey = GrTexture::ComputeKey(fGpu, params, desc, cacheID);
     return fResourceCache->hasKey(resourceKey);
 }
 
@@ -383,13 +383,13 @@
                                     void* srcData,
                                     size_t rowBytes,
                                     GrResourceKey* cacheKey) {
-    GrResourceKey resourceKey = GrTextureImpl::ComputeKey(fGpu, params, desc, cacheID);
+    GrResourceKey resourceKey = GrTexture::ComputeKey(fGpu, params, desc, cacheID);
 
     GrTexture* texture;
-    if (GrTextureImpl::NeedsResizing(resourceKey)) {
+    if (GrTexture::NeedsResizing(resourceKey)) {
         texture = this->createResizedTexture(desc, cacheID,
                                              srcData, rowBytes,
-                                             GrTextureImpl::NeedsBilerp(resourceKey));
+                                             GrTexture::NeedsBilerp(resourceKey));
     } else {
         texture= fGpu->createTexture(desc, srcData, rowBytes);
     }
@@ -413,7 +413,7 @@
                                          const GrTextureDesc& desc) {
     GrTexture* texture = gpu->createTexture(desc, NULL, 0);
     if (NULL != texture) {
-        GrResourceKey key = GrTextureImpl::ComputeScratchKey(texture->desc());
+        GrResourceKey key = GrTexture::ComputeScratchKey(texture->desc());
         // Adding a resource could put us overbudget. Try to free up the
         // necessary space before adding it.
         resourceCache->purgeAsNeeded(1, texture->gpuMemorySize());
@@ -453,7 +453,7 @@
     int origHeight = desc.fHeight;
 
     do {
-        GrResourceKey key = GrTextureImpl::ComputeScratchKey(desc);
+        GrResourceKey key = GrTexture::ComputeScratchKey(desc);
         // Ensure we have exclusive access to the texture so future 'find' calls don't return it
         resource = fResourceCache->find(key, GrResourceCache::kHide_OwnershipFlag);
         if (NULL != resource) {
@@ -543,7 +543,7 @@
             // Instead, give up the cache's ref and leave the decision up to
             // addExistingTextureToCache once its ref count reaches 0. For
             // this to work we need to leave it in the exclusive list.
-            texture->impl()->setFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit);
+            texture->setFlag((GrTextureFlags) GrTexture::kReturnToCache_FlagBit);
             // Give up the cache's ref to the texture
             texture->unref();
         }
diff --git a/src/gpu/GrTexture.cpp b/src/gpu/GrTexture.cpp
index 8651d10..3186d89 100644
--- a/src/gpu/GrTexture.cpp
+++ b/src/gpu/GrTexture.cpp
@@ -26,12 +26,13 @@
  * textures back in the texture cache when their ref count goes to zero.
  */
 void GrTexture::internal_dispose() const {
-    if (this->impl()->isSetFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit) &&
+
+    if (this->isSetFlag((GrTextureFlags) kReturnToCache_FlagBit) &&
         NULL != this->INHERITED::getContext()) {
         GrTexture* nonConstThis = const_cast<GrTexture *>(this);
         this->fRefCnt = 1;      // restore ref count to initial setting
 
-        nonConstThis->impl()->resetFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit);
+        nonConstThis->resetFlag((GrTextureFlags) kReturnToCache_FlagBit);
         nonConstThis->INHERITED::getContext()->addExistingTextureToCache(nonConstThis);
 
         // Note: "this" texture might be freed inside addExistingTextureToCache
@@ -43,7 +44,7 @@
     this->INHERITED::internal_dispose();
 }
 
-void GrTextureImpl::dirtyMipMaps(bool mipMapsDirty) {
+void GrTexture::dirtyMipMaps(bool mipMapsDirty) {
     if (mipMapsDirty) {
         if (kValid_MipMapsStatus == fMipMapsStatus) {
             fMipMapsStatus = kAllocated_MipMapsStatus;
@@ -62,7 +63,7 @@
     size_t textureSize =  (size_t) fDesc.fWidth *
                                    fDesc.fHeight *
                                    GrBytesPerPixel(fDesc.fConfig);
-    if (this->impl()->hasMipMaps()) {
+    if (kNotAllocated_MipMapsStatus != fMipMapsStatus) {
         // We don't have to worry about the mipmaps being a different size than
         // we'd expect because we never change fDesc.fWidth/fHeight.
         textureSize *= 2;
@@ -99,7 +100,7 @@
 }
 
 void GrTexture::onRelease() {
-    SkASSERT(!this->impl()->isSetFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit));
+    SkASSERT(!this->isSetFlag((GrTextureFlags) kReturnToCache_FlagBit));
     INHERITED::onRelease();
 }
 
@@ -129,8 +130,6 @@
     }
 }
 
-//////////////////////////////////////////////////////////////////////////////
-
 // These flags need to fit in a GrResourceKey::ResourceFlags so they can be folded into the texture
 // key
 enum TextureFlags {
@@ -187,9 +186,7 @@
 }
 }
 
-//////////////////////////////////////////////////////////////////////////////
-
-GrResourceKey GrTextureImpl::ComputeKey(const GrGpu* gpu,
+GrResourceKey GrTexture::ComputeKey(const GrGpu* gpu,
                                     const GrTextureParams* params,
                                     const GrTextureDesc& desc,
                                     const GrCacheID& cacheID) {
@@ -197,7 +194,7 @@
     return GrResourceKey(cacheID, texture_resource_type(), flags);
 }
 
-GrResourceKey GrTextureImpl::ComputeScratchKey(const GrTextureDesc& desc) {
+GrResourceKey GrTexture::ComputeScratchKey(const GrTextureDesc& desc) {
     GrCacheID::Key idKey;
     // Instead of a client-provided key of the texture contents we create a key from the
     // descriptor.
@@ -216,10 +213,10 @@
     return GrResourceKey(cacheID, texture_resource_type(), 0);
 }
 
-bool GrTextureImpl::NeedsResizing(const GrResourceKey& key) {
+bool GrTexture::NeedsResizing(const GrResourceKey& key) {
     return SkToBool(key.getResourceFlags() & kStretchToPOT_TextureFlag);
 }
 
-bool GrTextureImpl::NeedsBilerp(const GrResourceKey& key) {
+bool GrTexture::NeedsBilerp(const GrResourceKey& key) {
     return SkToBool(key.getResourceFlags() & kBilerp_TextureFlag);
 }
diff --git a/src/gpu/gl/GrGLTexture.h b/src/gpu/gl/GrGLTexture.h
index 0b364ac..62052fd 100644
--- a/src/gpu/gl/GrGLTexture.h
+++ b/src/gpu/gl/GrGLTexture.h
@@ -45,7 +45,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 
-class GrGLTexture : public GrTextureImpl {
+class GrGLTexture : public GrTexture {
 
 public:
     struct TexParams {
@@ -105,7 +105,7 @@
               const Desc& textureDesc,
               const GrGLRenderTarget::Desc* rtDesc);
 
-    typedef GrTextureImpl INHERITED;
+    typedef GrTexture INHERITED;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
index a670eae..1a1bad7 100644
--- a/src/gpu/gl/GrGpuGL.cpp
+++ b/src/gpu/gl/GrGpuGL.cpp
@@ -479,7 +479,7 @@
     if (this->uploadTexData(desc, false,
                             left, top, width, height,
                             config, buffer, rowBytes)) {
-        texture->impl()->dirtyMipMaps(true);
+        texture->dirtyMipMaps(true);
         return true;
     } else {
         return false;
@@ -1583,8 +1583,8 @@
     }
 
     GrTexture *texture = rt->asTexture();
-    if (NULL != texture) {
-        texture->impl()->dirtyMipMaps(true);
+    if (texture) {
+        texture->dirtyMipMaps(true);
     }
 }