diff options
-rw-r--r-- | core/jni/android/graphics/Paint.cpp | 2 | ||||
-rw-r--r-- | core/jni/android/graphics/Shader.cpp | 4 | ||||
-rw-r--r-- | core/jni/android_view_HardwareLayer.cpp | 2 | ||||
-rw-r--r-- | libs/hwui/Glop.h | 1 | ||||
-rw-r--r-- | libs/hwui/GlopBuilder.cpp | 8 | ||||
-rw-r--r-- | libs/hwui/Program.h | 22 | ||||
-rw-r--r-- | libs/hwui/ProgramCache.cpp | 6 | ||||
-rw-r--r-- | libs/hwui/ProgramCache.h | 2 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvasProxy.cpp | 7 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvasProxy.h | 4 | ||||
-rw-r--r-- | libs/hwui/SkiaShader.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/SkiaShader.h | 1 | ||||
-rw-r--r-- | libs/hwui/tests/unit/RecordingCanvasTests.cpp | 2 | ||||
-rw-r--r-- | libs/hwui/tests/unit/SkiaBehaviorTests.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/utils/PaintUtils.h | 1 | ||||
-rw-r--r-- | libs/input/PointerController.cpp | 2 | ||||
-rw-r--r-- | libs/input/SpriteController.cpp | 1 |
18 files changed, 36 insertions, 42 deletions
diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp index 38452bbf5159..e10fdbdb2845 100644 --- a/core/jni/android/graphics/Paint.cpp +++ b/core/jni/android/graphics/Paint.cpp @@ -32,7 +32,7 @@ #include "SkPathEffect.h" #include "SkRasterizer.h" #include "SkShader.h" -#include "SkXfermode.h" +#include "SkBlendMode.h" #include "unicode/uloc.h" #include "unicode/ushape.h" #include "utils/Blur.h" diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp index a2416df8ee0b..6c688a4fbcb0 100644 --- a/core/jni/android/graphics/Shader.cpp +++ b/core/jni/android/graphics/Shader.cpp @@ -2,7 +2,7 @@ #include "SkGradientShader.h" #include "SkImagePriv.h" #include "SkShader.h" -#include "SkXfermode.h" +#include "SkBlendMode.h" #include "core_jni_helpers.h" #include <Caches.h> @@ -237,7 +237,7 @@ static jlong ComposeShader_create(JNIEnv* env, jobject o, SkBlendMode mode = static_cast<SkBlendMode>(xfermodeHandle); SkShader* shader = SkShader::MakeComposeShader(sk_ref_sp(shaderA), sk_ref_sp(shaderB), - (SkXfermode::Mode)mode).release(); + mode).release(); return reinterpret_cast<jlong>(shader); } diff --git a/core/jni/android_view_HardwareLayer.cpp b/core/jni/android_view_HardwareLayer.cpp index 4e0b924e801f..65c1590f6c8e 100644 --- a/core/jni/android_view_HardwareLayer.cpp +++ b/core/jni/android_view_HardwareLayer.cpp @@ -29,7 +29,7 @@ #include <SkBitmap.h> #include <SkCanvas.h> #include <SkMatrix.h> -#include <SkXfermode.h> +#include <SkBlendMode.h> #include <DeferredLayerUpdater.h> #include <SkiaShader.h> diff --git a/libs/hwui/Glop.h b/libs/hwui/Glop.h index b396e22431f6..34c7934db198 100644 --- a/libs/hwui/Glop.h +++ b/libs/hwui/Glop.h @@ -25,7 +25,6 @@ #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> -#include <SkXfermode.h> namespace android { namespace uirenderer { diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp index 3b5fc718a036..34e6d39c9104 100644 --- a/libs/hwui/GlopBuilder.cpp +++ b/libs/hwui/GlopBuilder.cpp @@ -257,7 +257,7 @@ void GlopBuilder::setFill(int color, float alphaScale, // If the blend mode cannot be implemented using shaders, fall // back to the default SrcOver blend mode instead if (CC_UNLIKELY(mCaches.extensions().hasFramebufferFetch())) { - mDescription.framebufferMode = (SkXfermode::Mode)mode; + mDescription.framebufferMode = mode; mDescription.swapSrcDst = (modeUsage == Blend::ModeOrderSwap::Swap); // blending in shader, don't enable } else { @@ -271,11 +271,11 @@ void GlopBuilder::setFill(int color, float alphaScale, if (colorFilter) { SkColor color; - SkXfermode::Mode xmode; + SkBlendMode bmode; SkScalar srcColorMatrix[20]; - if (colorFilter->asColorMode(&color, &xmode)) { + if (colorFilter->asColorMode(&color, &bmode)) { mOutGlop->fill.filterMode = mDescription.colorOp = ProgramDescription::ColorFilterMode::Blend; - mDescription.colorMode = xmode; + mDescription.colorMode = bmode; mOutGlop->fill.filter.color.set(color); } else if (colorFilter->asColorMatrix(srcColorMatrix)) { mOutGlop->fill.filterMode = mDescription.colorOp = ProgramDescription::ColorFilterMode::Matrix; diff --git a/libs/hwui/Program.h b/libs/hwui/Program.h index f5beb62a84ed..e410d71e9676 100644 --- a/libs/hwui/Program.h +++ b/libs/hwui/Program.h @@ -22,7 +22,7 @@ #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> -#include <SkXfermode.h> +#include <SkBlendMode.h> #include "Debug.h" #include "FloatColor.h" @@ -142,7 +142,7 @@ struct ProgramDescription { Gradient gradientType; bool isSimpleGradient; - SkXfermode::Mode shadersMode; + SkBlendMode shadersMode; bool isBitmapFirst; GLenum bitmapWrapS; @@ -150,11 +150,11 @@ struct ProgramDescription { // Color operations ColorFilterMode colorOp; - SkXfermode::Mode colorMode; + SkBlendMode colorMode; // Framebuffer blending (requires Extensions.hasFramebufferFetch()) - // Ignored for all values < SkXfermode::kPlus_Mode - SkXfermode::Mode framebufferMode; + // Ignored for all values < SkBlendMode::kPlus + SkBlendMode framebufferMode; bool swapSrcDst; bool hasDebugHighlight; @@ -186,16 +186,16 @@ struct ProgramDescription { gradientType = kGradientLinear; isSimpleGradient = false; - shadersMode = SkXfermode::kClear_Mode; + shadersMode = SkBlendMode::kClear; isBitmapFirst = false; bitmapWrapS = GL_CLAMP_TO_EDGE; bitmapWrapT = GL_CLAMP_TO_EDGE; colorOp = ColorFilterMode::None; - colorMode = SkXfermode::kClear_Mode; + colorMode = SkBlendMode::kClear; - framebufferMode = SkXfermode::kClear_Mode; + framebufferMode = SkBlendMode::kClear; swapSrcDst = false; hasDebugHighlight = false; @@ -244,7 +244,7 @@ struct ProgramDescription { key |= programid(gradientType) << PROGRAM_GRADIENT_TYPE_SHIFT; if (isBitmapFirst) key |= PROGRAM_KEY_BITMAP_FIRST; if (hasBitmap && hasGradient) { - key |= (shadersMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_SHADER_SHIFT; + key |= ((int)shadersMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_SHADER_SHIFT; } switch (colorOp) { case ColorFilterMode::Matrix: @@ -252,12 +252,12 @@ struct ProgramDescription { break; case ColorFilterMode::Blend: key |= PROGRAM_KEY_COLOR_BLEND; - key |= (colorMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_COLOR_OP_SHIFT; + key |= ((int)colorMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_COLOR_OP_SHIFT; break; case ColorFilterMode::None: break; } - key |= (framebufferMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_FRAMEBUFFER_SHIFT; + key |= ((int)framebufferMode & PROGRAM_MAX_XFERMODE) << PROGRAM_XFERMODE_FRAMEBUFFER_SHIFT; if (swapSrcDst) key |= PROGRAM_KEY_SWAP_SRC_DST; if (modulate) key |= programid(0x1) << PROGRAM_MODULATE_SHIFT; if (hasVertexAlpha) key |= programid(0x1) << PROGRAM_HAS_VERTEX_ALPHA_SHIFT; diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp index 4ef6b85de9ad..1afc97839b44 100644 --- a/libs/hwui/ProgramCache.cpp +++ b/libs/hwui/ProgramCache.cpp @@ -572,7 +572,7 @@ static bool shaderOp(const ProgramDescription& description, String8& shader, String8 ProgramCache::generateFragmentShader(const ProgramDescription& description) { String8 shader(gFS_Header_Start); - const bool blendFramebuffer = description.framebufferMode >= SkXfermode::kPlus_Mode; + const bool blendFramebuffer = description.framebufferMode >= SkBlendMode::kPlus; if (blendFramebuffer) { shader.append(gFS_Header_Extension_FramebufferFetch); } @@ -809,12 +809,12 @@ String8 ProgramCache::generateFragmentShader(const ProgramDescription& descripti return shader; } -void ProgramCache::generateBlend(String8& shader, const char* name, SkXfermode::Mode mode) { +void ProgramCache::generateBlend(String8& shader, const char* name, SkBlendMode mode) { shader.append("\nvec4 "); shader.append(name); shader.append("(vec4 src, vec4 dst) {\n"); shader.append(" "); - shader.append(gBlendOps[mode]); + shader.append(gBlendOps[(int)mode]); shader.append("}\n"); } diff --git a/libs/hwui/ProgramCache.h b/libs/hwui/ProgramCache.h index 292ecdfdc2b6..c2f715de70c3 100644 --- a/libs/hwui/ProgramCache.h +++ b/libs/hwui/ProgramCache.h @@ -51,7 +51,7 @@ private: Program* generateProgram(const ProgramDescription& description, programid key); String8 generateVertexShader(const ProgramDescription& description); String8 generateFragmentShader(const ProgramDescription& description); - void generateBlend(String8& shader, const char* name, SkXfermode::Mode mode); + void generateBlend(String8& shader, const char* name, SkBlendMode mode); void generateTextureWrap(String8& shader, GLenum wrapS, GLenum wrapT); void printLongString(const String8& shader) const; diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index b6ac48f2edc5..7c97e770b723 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -546,7 +546,7 @@ void SkiaCanvas::drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount, #endif const int ptCount = vertexCount >> 1; mCanvas->drawVertices(vertexMode, ptCount, (SkPoint*)verts, (SkPoint*)texs, - (SkColor*)colors, NULL, indices, indexCount, paint); + (SkColor*)colors, indices, indexCount, paint); } // ---------------------------------------------------------------------------- @@ -670,7 +670,7 @@ void SkiaCanvas::drawBitmapMesh(Bitmap& hwuiBitmap, int meshWidth, int meshHeigh tmpPaint.setShader(image->makeShader(SkShader::kClamp_TileMode, SkShader::kClamp_TileMode)); mCanvas->drawVertices(SkCanvas::kTriangles_VertexMode, ptCount, (SkPoint*)vertices, - texs, (const SkColor*)colors, NULL, indices, + texs, (const SkColor*)colors, indices, indexCount, tmpPaint); } diff --git a/libs/hwui/SkiaCanvasProxy.cpp b/libs/hwui/SkiaCanvasProxy.cpp index 863146e36d29..f67408698426 100644 --- a/libs/hwui/SkiaCanvasProxy.cpp +++ b/libs/hwui/SkiaCanvasProxy.cpp @@ -140,8 +140,9 @@ void SkiaCanvasProxy::onDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& ce } void SkiaCanvasProxy::onDrawVertices(VertexMode mode, int vertexCount, const SkPoint vertices[], - const SkPoint texs[], const SkColor colors[], SkXfermode*, const uint16_t indices[], + const SkPoint texs[], const SkColor colors[], SkBlendMode, const uint16_t indices[], int indexCount, const SkPaint& paint) { + // TODO: should we pass through blendmode if (mFilterHwuiCalls) { return; } @@ -374,7 +375,7 @@ void SkiaCanvasProxy::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScala } void SkiaCanvasProxy::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], - const SkPoint texCoords[4], SkXfermode* xmode, const SkPaint& paint) { + const SkPoint texCoords[4], SkBlendMode bmode, const SkPaint& paint) { if (mFilterHwuiCalls) { return; } @@ -388,7 +389,7 @@ void SkiaCanvasProxy::onDrawPatch(const SkPoint cubics[12], const SkColor colors // If it fails to generate the vertices, then we do not draw. if (SkPatchUtils::getVertexData(&data, cubics, colors, texCoords, lod.width(), lod.height())) { this->drawVertices(SkCanvas::kTriangles_VertexMode, data.fVertexCount, data.fPoints, - data.fTexCoords, data.fColors, xmode, data.fIndices, data.fIndexCount, + data.fTexCoords, data.fColors, bmode, data.fIndices, data.fIndexCount, paint); } } diff --git a/libs/hwui/SkiaCanvasProxy.h b/libs/hwui/SkiaCanvasProxy.h index 3ee8c6eed16b..01118150a8f0 100644 --- a/libs/hwui/SkiaCanvasProxy.h +++ b/libs/hwui/SkiaCanvasProxy.h @@ -67,7 +67,7 @@ protected: virtual void onDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint*) override; virtual void onDrawVertices(VertexMode, int vertexCount, const SkPoint vertices[], - const SkPoint texs[], const SkColor colors[], SkXfermode*, + const SkPoint texs[], const SkColor colors[], SkBlendMode, const uint16_t indices[], int indexCount, const SkPaint&) override; @@ -87,7 +87,7 @@ protected: const SkPaint& paint) override; virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], - const SkPoint texCoords[4], SkXfermode* xmode, + const SkPoint texCoords[4], SkBlendMode, const SkPaint& paint) override; virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override; diff --git a/libs/hwui/SkiaShader.cpp b/libs/hwui/SkiaShader.cpp index 489a306c13d1..971c2a314d4c 100644 --- a/libs/hwui/SkiaShader.cpp +++ b/libs/hwui/SkiaShader.cpp @@ -309,10 +309,7 @@ bool tryStoreCompose(Caches& caches, const SkShader& shader, const Matrix4& mode storeCompose(caches, *rec.fShaderB, *rec.fShaderA, transform, textureUnit, description, outData); } - if (!SkXfermode::AsMode(rec.fMode, &description->shadersMode)) { - // TODO: Support other modes. - description->shadersMode = SkXfermode::kSrcOver_Mode; - } + description->shadersMode = rec.fBlendMode; return true; } diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h index 5854289f49a7..d2f37cda9cb3 100644 --- a/libs/hwui/SkiaShader.h +++ b/libs/hwui/SkiaShader.h @@ -22,7 +22,6 @@ #include <GLES2/gl2.h> #include <SkShader.h> -#include <SkXfermode.h> #include <cutils/compiler.h> namespace android { diff --git a/libs/hwui/tests/unit/RecordingCanvasTests.cpp b/libs/hwui/tests/unit/RecordingCanvasTests.cpp index 134497c63eaa..dda432ea03ed 100644 --- a/libs/hwui/tests/unit/RecordingCanvasTests.cpp +++ b/libs/hwui/tests/unit/RecordingCanvasTests.cpp @@ -776,7 +776,7 @@ TEST(RecordingCanvas, refBitmapInShader_composeShader) { SkShader::TileMode::kRepeat_TileMode); sk_sp<SkShader> composeShader = SkShader::MakeComposeShader(std::move(shader1), std::move(shader2), - SkXfermode::kMultiply_Mode); + SkBlendMode::kMultiply); paint.setShader(std::move(composeShader)); canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); }); diff --git a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp index 49c4da6e62b2..3f80d6ec6577 100644 --- a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp +++ b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp @@ -69,10 +69,10 @@ TEST(SkiaBehavior, lightingColorFilter_simplify) { SkColorMatrixFilter::MakeLightingFilter(0x11223344, 0)); SkColor observedColor; - SkXfermode::Mode observedMode; + SkBlendMode observedMode; ASSERT_TRUE(filter->asColorMode(&observedColor, &observedMode)); EXPECT_EQ(0xFF223344, observedColor); - EXPECT_EQ(SkXfermode::Mode::kModulate_Mode, observedMode); + EXPECT_EQ(SkBlendMode::kModulate, observedMode); } { diff --git a/libs/hwui/utils/PaintUtils.h b/libs/hwui/utils/PaintUtils.h index 710e06382772..845a3eac35f8 100644 --- a/libs/hwui/utils/PaintUtils.h +++ b/libs/hwui/utils/PaintUtils.h @@ -21,7 +21,6 @@ #include <SkColorFilter.h> #include <SkDrawLooper.h> #include <SkShader.h> -#include <SkXfermode.h> namespace android { namespace uirenderer { diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 89b4fb2345d0..0b22ad5ba470 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -31,7 +31,7 @@ #include <SkCanvas.h> #include <SkColor.h> #include <SkPaint.h> -#include <SkXfermode.h> +#include <SkBlendMode.h> #pragma GCC diagnostic pop namespace android { diff --git a/libs/input/SpriteController.cpp b/libs/input/SpriteController.cpp index 6941dba28d6f..18ebd47558bc 100644 --- a/libs/input/SpriteController.cpp +++ b/libs/input/SpriteController.cpp @@ -30,7 +30,6 @@ #include <SkCanvas.h> #include <SkColor.h> #include <SkPaint.h> -#include <SkXfermode.h> #pragma GCC diagnostic pop #include <android/native_window.h> |