| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2011 Google Inc. | 2  * Copyright 2011 Google Inc. | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #include "SkGpuDevice.h" | 8 #include "SkGpuDevice.h" | 
| 9 | 9 | 
| 10 #include "GrBlurUtils.h" | 10 #include "GrBlurUtils.h" | 
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 143     fContext = SkRef(rt->getContext()); | 143     fContext = SkRef(rt->getContext()); | 
| 144     fNeedClear = flags & kNeedClear_Flag; | 144     fNeedClear = flags & kNeedClear_Flag; | 
| 145 | 145 | 
| 146     fRenderTarget = SkRef(rt); | 146     fRenderTarget = SkRef(rt); | 
| 147 | 147 | 
| 148     SkImageInfo info = rt->surfacePriv().info().makeWH(width, height); | 148     SkImageInfo info = rt->surfacePriv().info().makeWH(width, height); | 
| 149     SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (info, rt)); | 149     SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (info, rt)); | 
| 150     fLegacyBitmap.setInfo(info); | 150     fLegacyBitmap.setInfo(info); | 
| 151     fLegacyBitmap.setPixelRef(pr)->unref(); | 151     fLegacyBitmap.setPixelRef(pr)->unref(); | 
| 152 | 152 | 
| 153     fDrawContext.reset(SkRef(fContext->drawContext(&this->getLeakyProperties()))
      ); | 153     fDrawContext.reset(SkRef(fContext->drawContext(&this->surfaceProps()))); | 
| 154 } | 154 } | 
| 155 | 155 | 
| 156 GrRenderTarget* SkGpuDevice::CreateRenderTarget(GrContext* context, SkSurface::B
      udgeted budgeted, | 156 GrRenderTarget* SkGpuDevice::CreateRenderTarget(GrContext* context, SkSurface::B
      udgeted budgeted, | 
| 157                                                 const SkImageInfo& origInfo, int
       sampleCount) { | 157                                                 const SkImageInfo& origInfo, int
       sampleCount) { | 
| 158     if (kUnknown_SkColorType == origInfo.colorType() || | 158     if (kUnknown_SkColorType == origInfo.colorType() || | 
| 159         origInfo.width() < 0 || origInfo.height() < 0) { | 159         origInfo.width() < 0 || origInfo.height() < 0) { | 
| 160         return NULL; | 160         return NULL; | 
| 161     } | 161     } | 
| 162 | 162 | 
| 163     if (!context) { | 163     if (!context) { | 
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 328 | 328 | 
| 329     SkASSERT(fRenderTarget != newRT); | 329     SkASSERT(fRenderTarget != newRT); | 
| 330 | 330 | 
| 331     fRenderTarget->unref(); | 331     fRenderTarget->unref(); | 
| 332     fRenderTarget = newRT.detach(); | 332     fRenderTarget = newRT.detach(); | 
| 333 | 333 | 
| 334     SkASSERT(fRenderTarget->surfacePriv().info() == fLegacyBitmap.info()); | 334     SkASSERT(fRenderTarget->surfacePriv().info() == fLegacyBitmap.info()); | 
| 335     SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (fRenderTarget->surfacePriv().info
      (), fRenderTarget)); | 335     SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (fRenderTarget->surfacePriv().info
      (), fRenderTarget)); | 
| 336     fLegacyBitmap.setPixelRef(pr)->unref(); | 336     fLegacyBitmap.setPixelRef(pr)->unref(); | 
| 337 | 337 | 
| 338     fDrawContext.reset(SkRef(fRenderTarget->getContext()->drawContext(&this->get
      LeakyProperties()))); | 338     fDrawContext.reset(SkRef(fRenderTarget->getContext()->drawContext(&this->sur
      faceProps()))); | 
| 339 } | 339 } | 
| 340 | 340 | 
| 341 /////////////////////////////////////////////////////////////////////////////// | 341 /////////////////////////////////////////////////////////////////////////////// | 
| 342 | 342 | 
| 343 void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) { | 343 void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) { | 
| 344     CHECK_SHOULD_DRAW(draw); | 344     CHECK_SHOULD_DRAW(draw); | 
| 345     GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawPaint", fContext); | 345     GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawPaint", fContext); | 
| 346 | 346 | 
| 347     GrPaint grPaint; | 347     GrPaint grPaint; | 
| 348     if (!SkPaint2GrPaint(this->context(), fRenderTarget, paint, *draw.fMatrix, t
      rue, &grPaint)) { | 348     if (!SkPaint2GrPaint(this->context(), fRenderTarget, paint, *draw.fMatrix, t
      rue, &grPaint)) { | 
| (...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1224 | 1224 | 
| 1225 bool SkGpuDevice::filterTexture(GrContext* context, GrTexture* texture, | 1225 bool SkGpuDevice::filterTexture(GrContext* context, GrTexture* texture, | 
| 1226                                 int width, int height, | 1226                                 int width, int height, | 
| 1227                                 const SkImageFilter* filter, | 1227                                 const SkImageFilter* filter, | 
| 1228                                 const SkImageFilter::Context& ctx, | 1228                                 const SkImageFilter::Context& ctx, | 
| 1229                                 SkBitmap* result, SkIPoint* offset) { | 1229                                 SkBitmap* result, SkIPoint* offset) { | 
| 1230     SkASSERT(filter); | 1230     SkASSERT(filter); | 
| 1231 | 1231 | 
| 1232     // FIXME: plumb actual surface props such that we don't have to lie about th
      e flags here | 1232     // FIXME: plumb actual surface props such that we don't have to lie about th
      e flags here | 
| 1233     //        (https://code.google.com/p/skia/issues/detail?id=3148). | 1233     //        (https://code.google.com/p/skia/issues/detail?id=3148). | 
| 1234     SkImageFilter::Proxy proxy(this, SkSurfaceProps(0, getLeakyProperties().pixe
      lGeometry())); | 1234     SkImageFilter::Proxy proxy(this, SkSurfaceProps(0, this->surfaceProps().pixe
      lGeometry())); | 
| 1235 | 1235 | 
| 1236     if (filter->canFilterImageGPU()) { | 1236     if (filter->canFilterImageGPU()) { | 
| 1237         return filter->filterImageGPU(&proxy, wrap_texture(texture, width, heigh
      t), | 1237         return filter->filterImageGPU(&proxy, wrap_texture(texture, width, heigh
      t), | 
| 1238                                       ctx, result, offset); | 1238                                       ctx, result, offset); | 
| 1239     } else { | 1239     } else { | 
| 1240         return false; | 1240         return false; | 
| 1241     } | 1241     } | 
| 1242 } | 1242 } | 
| 1243 | 1243 | 
| 1244 void SkGpuDevice::drawSprite(const SkDraw& draw, const SkBitmap& bitmap, | 1244 void SkGpuDevice::drawSprite(const SkDraw& draw, const SkBitmap& bitmap, | 
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1677     unsigned flags = cinfo.fInfo.isOpaque() ? 0 : kNeedClear_Flag; | 1677     unsigned flags = cinfo.fInfo.isOpaque() ? 0 : kNeedClear_Flag; | 
| 1678 | 1678 | 
| 1679     // layers are never draw in repeat modes, so we can request an approx | 1679     // layers are never draw in repeat modes, so we can request an approx | 
| 1680     // match and ignore any padding. | 1680     // match and ignore any padding. | 
| 1681     const GrTextureProvider::ScratchTexMatch match = (kNever_TileUsage == cinfo.
      fTileUsage) ? | 1681     const GrTextureProvider::ScratchTexMatch match = (kNever_TileUsage == cinfo.
      fTileUsage) ? | 
| 1682                                                   GrTextureProvider::kApprox_Scr
      atchTexMatch : | 1682                                                   GrTextureProvider::kApprox_Scr
      atchTexMatch : | 
| 1683                                                   GrTextureProvider::kExact_Scra
      tchTexMatch; | 1683                                                   GrTextureProvider::kExact_Scra
      tchTexMatch; | 
| 1684     texture.reset(fContext->textureProvider()->refScratchTexture(desc, match)); | 1684     texture.reset(fContext->textureProvider()->refScratchTexture(desc, match)); | 
| 1685 | 1685 | 
| 1686     if (texture) { | 1686     if (texture) { | 
| 1687         SkSurfaceProps props(this->getLeakyProperties().flags(), cinfo.fPixelGeo
      metry); | 1687         SkSurfaceProps props(this->surfaceProps().flags(), cinfo.fPixelGeometry)
      ; | 
| 1688         return SkGpuDevice::Create( | 1688         return SkGpuDevice::Create( | 
| 1689             texture->asRenderTarget(), cinfo.fInfo.width(), cinfo.fInfo.height()
      , &props, flags); | 1689             texture->asRenderTarget(), cinfo.fInfo.width(), cinfo.fInfo.height()
      , &props, flags); | 
| 1690     } else { | 1690     } else { | 
| 1691         SkErrorInternals::SetError( kInternalError_SkError, | 1691         SkErrorInternals::SetError( kInternalError_SkError, | 
| 1692                                     "---- failed to create gpu device texture [%
      d %d]\n", | 1692                                     "---- failed to create gpu device texture [%
      d %d]\n", | 
| 1693                                     cinfo.fInfo.width(), cinfo.fInfo.height()); | 1693                                     cinfo.fInfo.width(), cinfo.fInfo.height()); | 
| 1694         return NULL; | 1694         return NULL; | 
| 1695     } | 1695     } | 
| 1696 } | 1696 } | 
| 1697 | 1697 | 
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1769 #endif | 1769 #endif | 
| 1770 } | 1770 } | 
| 1771 | 1771 | 
| 1772 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() { | 1772 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() { | 
| 1773     // We always return a transient cache, so it is freed after each | 1773     // We always return a transient cache, so it is freed after each | 
| 1774     // filter traversal. | 1774     // filter traversal. | 
| 1775     return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize); | 1775     return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize); | 
| 1776 } | 1776 } | 
| 1777 | 1777 | 
| 1778 #endif | 1778 #endif | 
| OLD | NEW | 
|---|