diff options
author | bsalomon <bsalomon@google.com> | 2015-02-02 13:00:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-02 13:00:10 -0800 |
commit | 37f9a2694c15f08e361ebda74fe9f0fffbf452aa (patch) | |
tree | 2bbbb36f91b31cc203fa375939ab2d4a4a5117f0 /src/effects | |
parent | 52edc4d05380c88de5b334479ad8e537ef2b4925 (diff) |
Move npot resizing out of GrContext and simplify GrContext texture functions.
Committed: https://skia.googlesource.com/skia/+/8a8100349105c8c6de39fcb34e47679da7a67f54
Committed: https://skia.googlesource.com/skia/+/6c96672491b04cb782bce8fee778124df66524a0
Review URL: https://codereview.chromium.org/882223003
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkBlurMaskFilter.cpp | 36 | ||||
-rw-r--r-- | src/effects/SkColorCubeFilter.cpp | 12 |
2 files changed, 25 insertions, 23 deletions
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp index 3487ae40b4..d284717f93 100644 --- a/src/effects/SkBlurMaskFilter.cpp +++ b/src/effects/SkBlurMaskFilter.cpp @@ -750,7 +750,6 @@ void GrGLRectBlurEffect::setData(const GrGLProgramDataManager& pdman, bool GrRectBlurEffect::CreateBlurProfileTexture(GrContext *context, float sigma, GrTexture **blurProfileTexture) { - GrTextureParams params; GrSurfaceDesc texDesc; unsigned int profileSize = SkScalarCeilToInt(6*sigma); @@ -768,18 +767,19 @@ bool GrRectBlurEffect::CreateBlurProfileTexture(GrContext *context, float sigma, uint8_t *profile = NULL; SkAutoTDeleteArray<uint8_t> ada(NULL); - *blurProfileTexture = context->findAndRefTexture(texDesc, key, ¶ms); + *blurProfileTexture = context->findAndRefCachedTexture(key); if (NULL == *blurProfileTexture) { SkBlurMask::ComputeBlurProfile(sigma, &profile); ada.reset(profile); - *blurProfileTexture = context->createTexture(¶ms, texDesc, key, profile, 0); + *blurProfileTexture = context->createTexture(texDesc, profile, 0); if (NULL == *blurProfileTexture) { return false; } + SkAssertResult(context->addResourceToCache(key, *blurProfileTexture)); } return true; @@ -925,21 +925,13 @@ GrFragmentProcessor* GrRRectBlurEffect::Create(GrContext* context, float sigma, builder[1] = cornerRadius; builder.finish(); - GrTextureParams params; - params.setFilterMode(GrTextureParams::kBilerp_FilterMode); - - unsigned int smallRectSide = 2*(blurRadius + cornerRadius) + 1; - unsigned int texSide = smallRectSide + 2*blurRadius; - GrSurfaceDesc texDesc; - texDesc.fWidth = texSide; - texDesc.fHeight = texSide; - texDesc.fConfig = kAlpha_8_GrPixelConfig; - - GrTexture *blurNinePatchTexture = context->findAndRefTexture(texDesc, key, ¶ms); + GrTexture *blurNinePatchTexture = context->findAndRefCachedTexture(key); if (NULL == blurNinePatchTexture) { SkMask mask; + unsigned int smallRectSide = 2*(blurRadius + cornerRadius) + 1; + mask.fBounds = SkIRect::MakeWH(smallRectSide, smallRectSide); mask.fFormat = SkMask::kA8_Format; mask.fRowBytes = mask.fBounds.width(); @@ -957,12 +949,22 @@ GrFragmentProcessor* GrRRectBlurEffect::Create(GrContext* context, float sigma, SkPath path; path.addRRect( smallRRect ); - SkDraw::DrawToMask(path, &mask.fBounds, NULL, NULL, &mask, SkMask::kJustRenderImage_CreateMode, SkPaint::kFill_Style); + SkDraw::DrawToMask(path, &mask.fBounds, NULL, NULL, &mask, + SkMask::kJustRenderImage_CreateMode, SkPaint::kFill_Style); SkMask blurred_mask; - SkBlurMask::BoxBlur(&blurred_mask, mask, sigma, kNormal_SkBlurStyle, kHigh_SkBlurQuality, NULL, true ); + SkBlurMask::BoxBlur(&blurred_mask, mask, sigma, kNormal_SkBlurStyle, kHigh_SkBlurQuality, + NULL, true ); + + unsigned int texSide = smallRectSide + 2*blurRadius; + GrSurfaceDesc texDesc; + texDesc.fWidth = texSide; + texDesc.fHeight = texSide; + texDesc.fConfig = kAlpha_8_GrPixelConfig; + + blurNinePatchTexture = context->createTexture(texDesc, blurred_mask.fImage, 0); + SkAssertResult(context->addResourceToCache(key, blurNinePatchTexture)); - blurNinePatchTexture = context->createTexture(¶ms, texDesc, key, blurred_mask.fImage, 0); SkMask::FreeImage(blurred_mask.fImage); } diff --git a/src/effects/SkColorCubeFilter.cpp b/src/effects/SkColorCubeFilter.cpp index bfe28396ff..f4ffefc889 100644 --- a/src/effects/SkColorCubeFilter.cpp +++ b/src/effects/SkColorCubeFilter.cpp @@ -354,12 +354,12 @@ GrFragmentProcessor* SkColorCubeFilter::asFragmentProcessor(GrContext* context) desc.fHeight = fCache.cubeDimension() * fCache.cubeDimension(); desc.fConfig = kRGBA_8888_GrPixelConfig; - GrSurface* surface = static_cast<GrSurface*>(context->findAndRefCachedResource(key)); - SkAutoTUnref<GrTexture> textureCube; - if (surface) { - textureCube.reset(surface->asTexture()); - } else { - textureCube.reset(context->createTexture(NULL, desc, key, fCubeData->data(), 0)); + SkAutoTUnref<GrTexture> textureCube(context->findAndRefCachedTexture(key)); + if (!textureCube) { + textureCube.reset(context->createTexture(desc, fCubeData->data(), 0)); + if (textureCube) { + SkAssertResult(context->addResourceToCache(key, textureCube)); + } } return textureCube ? GrColorCubeEffect::Create(textureCube) : NULL; |