aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar herb <herb@google.com>2016-03-23 09:00:33 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-23 09:00:33 -0700
commit6eff52afb458bf6702a715d88611fd571544ef73 (patch)
treea2ffdedd2b0b1fe888dbc3faff6b1f894803f5c2 /gm
parent0b8321e19b565f3a13af85b55f046c0a74396a7d (diff)
WIP: experimental bilerp pipeline.
Diffstat (limited to 'gm')
-rw-r--r--gm/SkLinearBitmapPipelineGM.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/gm/SkLinearBitmapPipelineGM.cpp b/gm/SkLinearBitmapPipelineGM.cpp
index 51fd2cfd46..f5e01ca737 100644
--- a/gm/SkLinearBitmapPipelineGM.cpp
+++ b/gm/SkLinearBitmapPipelineGM.cpp
@@ -60,12 +60,16 @@ static void draw_rect_orig(SkCanvas* canvas, const SkRect& r, SkColor c, const S
sk_sp<SkImage> image(SkImage::MakeRasterCopy(SkPixmap(info, pmsrc.addr32(), pmsrc.rowBytes())));
SkPaint paint;
int32_t storage[300];
- paint.setShader(image->makeShader(SkShader::kClamp_TileMode, SkShader::kClamp_TileMode));
+
+ sk_sp<SkShader> shader = image->makeShader(SkShader::kRepeat_TileMode,
+ SkShader::kRepeat_TileMode);
+
if (useBilerp) {
paint.setFilterQuality(SkFilterQuality::kLow_SkFilterQuality);
} else {
paint.setFilterQuality(SkFilterQuality::kNone_SkFilterQuality);
}
+ paint.setShader(std::move(shader));
const SkShader::ContextRec rec(paint, *mat, nullptr,
SkBlitter::PreferredShaderDest(pmsrc.info()));
SkASSERT(paint.getShader()->contextSize(rec) <= sizeof(storage));
@@ -79,7 +83,6 @@ static void draw_rect_orig(SkCanvas* canvas, const SkRect& r, SkColor c, const S
canvas->drawBitmap(bmdst, r.left(), r.top(), nullptr);
ctx->~Context();
-
}
static void draw_rect_fp(SkCanvas* canvas, const SkRect& r, SkColor c, const SkMatrix* mat, bool useBilerp) {
@@ -117,7 +120,7 @@ static void draw_rect_fp(SkCanvas* canvas, const SkRect& r, SkColor c, const SkM
SkLinearBitmapPipeline pipeline{
inv, filterQuality,
- SkShader::kClamp_TileMode, SkShader::kClamp_TileMode, pmsrc};
+ SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode, 1.0f, pmsrc};
for (int y = 0; y < ir.height(); y++) {
pipeline.shadeSpan4f(0, y, dstBits, ir.width());
@@ -161,9 +164,9 @@ DEF_SIMPLE_GM(linear_pipeline, canvas, 580, 2200) {
SkMatrix mt2;
mt2.setTranslate(-18, -18);
SkMatrix ms;
- ms.setScale(2.7f, 2.7f);
+ ms.setScale(2.7f, 2.7f, -1.5f, 0);
SkMatrix ms2;
- ms2.setScale(-0.2f, 0.2f);
+ ms2.setScale(-0.4f, 0.4f);
SkMatrix mr;
mr.setRotate(10);