Update Skia to chrome/m55 (aseprite-m55) branch

This commit is contained in:
David Capello 2016-10-31 19:50:32 -03:00
parent a911915aab
commit 151a302830
10 changed files with 53 additions and 60 deletions

View File

@ -210,7 +210,12 @@ if(WITH_WEBP_SUPPORT)
message(FATAL_ERROR "libwebp not found") message(FATAL_ERROR "libwebp not found")
endif() endif()
else() else()
set(WEBP_LIBRARIES webp) # Skia already includes webp library
if(NOT USE_SKIA_BACKEND)
set(WEBP_LIBRARIES webp)
else()
set(WEBP_LIBRARIES "")
endif()
set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src) set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src)
endif() endif()
include_directories(${WEBP_INCLUDE_DIR}) include_directories(${WEBP_INCLUDE_DIR})

View File

@ -226,7 +226,7 @@ Skia.
You can always check the You can always check the
[official Skia instructions](https://skia.org/user/quick) and select [official Skia instructions](https://skia.org/user/quick) and select
the OS you are building for. Aseprite uses the `aseprite-m53` Skia the OS you are building for. Aseprite uses the `aseprite-m55` Skia
branch from `https://github.com/aseprite/skia`. branch from `https://github.com/aseprite/skia`.
## Skia on Windows ## Skia on Windows
@ -249,7 +249,7 @@ Just ignore it.)
cd C:\deps cd C:\deps
git clone https://github.com/aseprite/skia.git git clone https://github.com/aseprite/skia.git
cd skia cd skia
git checkout aseprite-m53 git checkout aseprite-m55
python bin/sync-and-gyp python bin/sync-and-gyp
(The `bin/sync-and-gyp` will take some minutes because it downloads a (The `bin/sync-and-gyp` will take some minutes because it downloads a
@ -273,7 +273,7 @@ several minutes to finish:
git clone https://github.com/aseprite/skia.git git clone https://github.com/aseprite/skia.git
export PATH="${PWD}/depot_tools:${PATH}" export PATH="${PWD}/depot_tools:${PATH}"
cd skia cd skia
git checkout aseprite-m53 git checkout aseprite-m55
python bin/sync-and-gyp python bin/sync-and-gyp
ninja -C out/Release dm ninja -C out/Release dm

View File

@ -82,9 +82,8 @@ if(USE_SKIA_BACKEND)
find_library(SKIA_GIF_LIBRARY giflib PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_GIF_LIBRARY giflib PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_IMAGES_LIBRARY skia_images PATH "${SKIA_BUILD_OUT_DIR}") find_library(SKIA_IMAGES_LIBRARY skia_images PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_JPG_LIBRARY jpeg-turbo NAMES libjpeg-turbo PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_JPG_LIBRARY jpeg-turbo NAMES libjpeg-turbo PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_OPTS_AVX2_LIBRARY skia_opts_avx2 PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_OPTS_AVX_LIBRARY skia_opts_avx PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_OPTS_AVX_LIBRARY skia_opts_avx PATH "${SKIA_BUILD_OUT_DIR}") find_library(SKIA_OPTS_AVX_LIBRARY skia_opts_avx PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_OPTS_HSW_LIBRARY skia_opts_hsw PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_OPTS_LIBRARY skia_opts PATH "${SKIA_BUILD_OUT_DIR}") find_library(SKIA_OPTS_LIBRARY skia_opts PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_OPTS_SSE41_LIBRARY skia_opts_sse41 PATH "${SKIA_BUILD_OUT_DIR}") find_library(SKIA_OPTS_SSE41_LIBRARY skia_opts_sse41 PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_OPTS_SSE42_LIBRARY skia_opts_sse42 PATH "${SKIA_BUILD_OUT_DIR}") find_library(SKIA_OPTS_SSE42_LIBRARY skia_opts_sse42 PATH "${SKIA_BUILD_OUT_DIR}")
@ -97,7 +96,10 @@ if(USE_SKIA_BACKEND)
find_library(SKIA_SKKTX_LIBRARY SkKTX libSkKTX PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_SKKTX_LIBRARY SkKTX libSkKTX PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_UTILS_LIBRARY skia_utils PATH "${SKIA_BUILD_OUT_DIR}") find_library(SKIA_UTILS_LIBRARY skia_utils PATH "${SKIA_BUILD_OUT_DIR}")
find_library(SKIA_WEBP_DEC_LIBRARY webp_dec NAMES libwebp_dec PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_WEBP_DEC_LIBRARY webp_dec NAMES libwebp_dec PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_WEBP_DEMUX_LIBRARY webp_demux NAMES libwebp_demux PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_WEBP_DSP_LIBRARY webp_dsp NAMES libwebp_dsp PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_WEBP_DSP_LIBRARY webp_dsp NAMES libwebp_dsp PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_WEBP_DSP_ENC_LIBRARY webp_dsp_enc NAMES libwebp_dsp_enc PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_WEBP_ENC_LIBRARY webp_enc NAMES libwebp_enc PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_WEBP_UTILS_LIBRARY webp_utils NAMES libwebp_utils PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_WEBP_UTILS_LIBRARY webp_utils NAMES libwebp_utils PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
find_library(SKIA_ZLIB_LIBRARY zlib PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH) find_library(SKIA_ZLIB_LIBRARY zlib PATHS "${SKIA_BUILD_OUT_DIR}" "${SKIA_BUILD_OUT_DIR}/obj/gyp" NO_DEFAULT_PATH)
@ -153,8 +155,8 @@ if(USE_SKIA_BACKEND)
${SKIA_OPTS_SSSE3_LIBRARY} ${SKIA_OPTS_SSSE3_LIBRARY}
${SKIA_OPTS_SSE41_LIBRARY} ${SKIA_OPTS_SSE41_LIBRARY}
${SKIA_OPTS_SSE42_LIBRARY} ${SKIA_OPTS_SSE42_LIBRARY}
${SKIA_OPTS_HSW_LIBRARY}
${SKIA_OPTS_AVX_LIBRARY} ${SKIA_OPTS_AVX_LIBRARY}
${SKIA_OPTS_AVX2_LIBRARY}
${SKIA_PORTS_LIBRARY} ${SKIA_PORTS_LIBRARY}
${SKIA_EFFECTS_LIBRARY} ${SKIA_EFFECTS_LIBRARY}
${SKIA_CODEC_LIBRARY} ${SKIA_CODEC_LIBRARY}
@ -164,7 +166,10 @@ if(USE_SKIA_BACKEND)
${SKIA_GIF_LIBRARY} ${SKIA_GIF_LIBRARY}
${SKIA_JPG_LIBRARY} ${SKIA_JPG_LIBRARY}
${SKIA_WEBP_DEC_LIBRARY} ${SKIA_WEBP_DEC_LIBRARY}
${SKIA_WEBP_DEMUX_LIBRARY}
${SKIA_WEBP_DSP_LIBRARY} ${SKIA_WEBP_DSP_LIBRARY}
${SKIA_WEBP_DSP_ENC_LIBRARY}
${SKIA_WEBP_ENC_LIBRARY}
${SKIA_WEBP_UTILS_LIBRARY} ${SKIA_WEBP_UTILS_LIBRARY}
${SKIA_PNG_LIBRARY} ${SKIA_PNG_LIBRARY}
${SKIA_ZLIB_LIBRARY} ${SKIA_ZLIB_LIBRARY}
@ -183,6 +188,7 @@ if(USE_SKIA_BACKEND)
list(APPEND SHE_SOURCES list(APPEND SHE_SOURCES
skia/skia_display.cpp skia/skia_display.cpp
skia/skia_surface.cpp
skia/she.cpp) skia/she.cpp)
if(WIN32) if(WIN32)

View File

@ -59,7 +59,8 @@ public:
ASSERT(!m_surface); ASSERT(!m_surface);
if (!m_bitmap.tryAllocPixels( if (!m_bitmap.tryAllocPixels(
SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType))) SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType,
colorSpace())))
throw base::Exception("Cannot create Skia surface"); throw base::Exception("Cannot create Skia surface");
m_bitmap.eraseColor(SK_ColorTRANSPARENT); m_bitmap.eraseColor(SK_ColorTRANSPARENT);
@ -70,7 +71,7 @@ public:
ASSERT(!m_surface); ASSERT(!m_surface);
if (!m_bitmap.tryAllocPixels( if (!m_bitmap.tryAllocPixels(
SkImageInfo::MakeN32Premul(width, height))) SkImageInfo::MakeN32Premul(width, height, colorSpace())))
throw base::Exception("Cannot create Skia surface"); throw base::Exception("Cannot create Skia surface");
m_bitmap.eraseColor(SK_ColorTRANSPARENT); m_bitmap.eraseColor(SK_ColorTRANSPARENT);
@ -112,30 +113,30 @@ public:
void setClipBounds(const gfx::Rect& rc) override { void setClipBounds(const gfx::Rect& rc) override {
m_clip = rc; m_clip = rc;
m_canvas->clipRect(SkRect::Make(to_skia(m_clip)), SkRegion::kReplace_Op); m_canvas->clipRect(SkRect::Make(to_skia(m_clip)), kReplace_SkClipOp);
} }
bool intersectClipRect(const gfx::Rect& rc) override { bool intersectClipRect(const gfx::Rect& rc) override {
m_clip &= rc; m_clip &= rc;
m_canvas->clipRect(SkRect::Make(to_skia(m_clip)), SkRegion::kReplace_Op); m_canvas->clipRect(SkRect::Make(to_skia(m_clip)), kReplace_SkClipOp);
return !m_clip.isEmpty(); return !m_clip.isEmpty();
} }
void setDrawMode(DrawMode mode, int param) override { void setDrawMode(DrawMode mode, int param) override {
switch (mode) { switch (mode) {
case DrawMode::Solid: case DrawMode::Solid:
m_paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); m_paint.setBlendMode(SkBlendMode::kSrcOver);
m_paint.setShader(nullptr); m_paint.setShader(nullptr);
break; break;
case DrawMode::Xor: case DrawMode::Xor:
m_paint.setXfermodeMode(SkXfermode::kXor_Mode); m_paint.setBlendMode(SkBlendMode::kXor);
m_paint.setShader(nullptr); m_paint.setShader(nullptr);
break; break;
case DrawMode::Checked: { case DrawMode::Checked: {
m_paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); m_paint.setBlendMode(SkBlendMode::kSrcOver);
{ {
SkBitmap bitmap; SkBitmap bitmap;
if (!bitmap.tryAllocPixels(SkImageInfo::MakeN32Premul(8, 8))) if (!bitmap.tryAllocPixels(SkImageInfo::MakeN32Premul(8, 8, colorSpace())))
throw base::Exception("Cannot create temporary Skia surface"); throw base::Exception("Cannot create temporary Skia surface");
{ {
@ -184,7 +185,7 @@ public:
throw base::Exception("Cannot create temporary Skia surface to change scale"); throw base::Exception("Cannot create temporary Skia surface to change scale");
SkPaint paint; SkPaint paint;
paint.setXfermodeMode(SkXfermode::kSrc_Mode); paint.setBlendMode(SkBlendMode::kSrc);
SkCanvas canvas(result); SkCanvas canvas(result);
SkRect srcRect = SkRect::Make(SkIRect::MakeXYWH(0, 0, width(), height())); SkRect srcRect = SkRect::Make(SkIRect::MakeXYWH(0, 0, width(), height()));
@ -270,7 +271,7 @@ public:
SkColor c = 0; SkColor c = 0;
if (m_surface) { if (m_surface) {
SkImageInfo dstInfo = SkImageInfo::MakeN32Premul(1, 1); SkImageInfo dstInfo = SkImageInfo::MakeN32Premul(1, 1, colorSpace());
uint32_t dstPixels; uint32_t dstPixels;
if (m_canvas->readPixels(dstInfo, &dstPixels, 4, x, y)) if (m_canvas->readPixels(dstInfo, &dstPixels, 4, x, y))
c = dstPixels; c = dstPixels;
@ -324,7 +325,7 @@ public:
} }
void blitTo(Surface* dest, int srcx, int srcy, int dstx, int dsty, int width, int height) const override { void blitTo(Surface* dest, int srcx, int srcy, int dstx, int dsty, int width, int height) const override {
SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); SkImageInfo info = SkImageInfo::MakeN32Premul(width, height, colorSpace());
std::vector<uint32_t> pixels(width * height * 4); std::vector<uint32_t> pixels(width * height * 4);
m_canvas->readPixels(info, (void*)&pixels[0], 4*width, srcx, srcy); m_canvas->readPixels(info, (void*)&pixels[0], 4*width, srcx, srcy);
static_cast<SkiaSurface*>(dest) static_cast<SkiaSurface*>(dest)
@ -382,7 +383,7 @@ public:
SkRect dstRect = SkRect::Make(SkIRect::MakeXYWH(clip.dst.x, clip.dst.y, clip.size.w, clip.size.h)); SkRect dstRect = SkRect::Make(SkIRect::MakeXYWH(clip.dst.x, clip.dst.y, clip.size.w, clip.size.h));
SkPaint paint; SkPaint paint;
paint.setXfermodeMode(SkXfermode::kSrc_Mode); paint.setBlendMode(SkBlendMode::kSrc);
m_canvas->drawBitmapRect( m_canvas->drawBitmapRect(
((SkiaSurface*)src)->m_bitmap, srcRect, dstRect, &paint, ((SkiaSurface*)src)->m_bitmap, srcRect, dstRect, &paint,
@ -401,7 +402,7 @@ public:
SkRect dstRect = SkRect::Make(SkIRect::MakeXYWH(clip.dst.x, clip.dst.y, clip.size.w, clip.size.h)); SkRect dstRect = SkRect::Make(SkIRect::MakeXYWH(clip.dst.x, clip.dst.y, clip.size.w, clip.size.h));
SkPaint paint; SkPaint paint;
paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); paint.setBlendMode(SkBlendMode::kSrcOver);
m_canvas->drawBitmapRect( m_canvas->drawBitmapRect(
((SkiaSurface*)src)->m_bitmap, srcRect, dstRect, &paint, ((SkiaSurface*)src)->m_bitmap, srcRect, dstRect, &paint,
@ -417,7 +418,7 @@ public:
SkRect dstRect = SkRect::Make(SkIRect::MakeXYWH(clip.dst.x, clip.dst.y, clip.size.w, clip.size.h)); SkRect dstRect = SkRect::Make(SkIRect::MakeXYWH(clip.dst.x, clip.dst.y, clip.size.w, clip.size.h));
SkPaint paint; SkPaint paint;
paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); paint.setBlendMode(SkBlendMode::kSrcOver);
if (gfx::geta(bg) > 0) { if (gfx::geta(bg) > 0) {
SkPaint paint; SkPaint paint;
@ -447,6 +448,8 @@ public:
rebuild(); rebuild();
} }
static Surface* loadSurface(const char* filename);
private: private:
void rebuild() { void rebuild() {
ASSERT(!m_surface); ASSERT(!m_surface);
@ -456,12 +459,16 @@ private:
m_clip = gfx::Rect(0, 0, width(), height()); m_clip = gfx::Rect(0, 0, width(), height());
} }
static sk_sp<SkColorSpace> colorSpace();
SkBitmap m_bitmap; SkBitmap m_bitmap;
sk_sp<SkSurface> m_surface; sk_sp<SkSurface> m_surface;
SkCanvas* m_canvas; SkCanvas* m_canvas;
SkPaint m_paint; SkPaint m_paint;
gfx::Rect m_clip; gfx::Rect m_clip;
int m_lock; int m_lock;
static sk_sp<SkColorSpace> m_colorSpace;
}; };
} // namespace she } // namespace she

View File

@ -9,11 +9,6 @@
#pragma once #pragma once
#include "base/base.h" #include "base/base.h"
#include "base/file_handle.h"
#include "SkCodec.h"
#include "SkPixelRef.h"
#include "SkStream.h"
#include "she/common/system.h" #include "she/common/system.h"
#include "she/skia/skia_display.h" #include "she/skia/skia_display.h"
@ -32,6 +27,8 @@
#define SkiaSystemBase CommonSystem #define SkiaSystemBase CommonSystem
#endif #endif
#include "SkGraphics.h"
namespace she { namespace she {
EventQueueImpl g_queue; EventQueueImpl g_queue;
@ -41,9 +38,11 @@ public:
SkiaSystem() SkiaSystem()
: m_defaultDisplay(nullptr) : m_defaultDisplay(nullptr)
, m_gpuAcceleration(false) { , m_gpuAcceleration(false) {
SkGraphics::Init();
} }
~SkiaSystem() { ~SkiaSystem() {
SkGraphics::Term();
} }
void dispose() override { void dispose() override {
@ -129,28 +128,7 @@ public:
} }
Surface* loadSurface(const char* filename) override { Surface* loadSurface(const char* filename) override {
base::FileHandle fp(base::open_file_with_exception(filename, "rb")); return SkiaSurface::loadSurface(filename);
SkAutoTDelete<SkCodec> codec(
SkCodec::NewFromStream(
new SkFILEStream(fp.get(), SkFILEStream::kCallerRetains_Ownership)));
if (!codec)
return nullptr;
SkImageInfo info = codec->getInfo()
.makeColorType(kN32_SkColorType)
.makeAlphaType(kPremul_SkAlphaType);
SkBitmap bm;
if (!bm.tryAllocPixels(info))
return nullptr;
const SkCodec::Result r = codec->getPixels(info, bm.getPixels(), bm.rowBytes());
if (r != SkCodec::kSuccess)
return nullptr;
SkiaSurface* sur = new SkiaSurface();
sur->swapBitmap(bm);
return sur;
} }
Surface* loadRgbaSurface(const char* filename) override { Surface* loadRgbaSurface(const char* filename) override {

View File

@ -229,7 +229,6 @@ private:
m_skSurface.reset(nullptr); m_skSurface.reset(nullptr);
m_skSurfaceDirect.reset(nullptr); m_skSurfaceDirect.reset(nullptr);
m_grRenderTarget.reset(nullptr);
m_grCtx.reset(nullptr); m_grCtx.reset(nullptr);
m_glCtx.reset(nullptr); m_glCtx.reset(nullptr);
} }
@ -246,11 +245,10 @@ private:
desc.fSampleCnt = m_glCtx->getSampleCount(); desc.fSampleCnt = m_glCtx->getSampleCount();
desc.fStencilBits = m_glCtx->getStencilBits(); desc.fStencilBits = m_glCtx->getStencilBits();
desc.fRenderTargetHandle = 0; // direct frame buffer desc.fRenderTargetHandle = 0; // direct frame buffer
m_grRenderTarget.reset(m_grCtx->textureProvider()->wrapBackendRenderTarget(desc));
m_skSurface.reset(nullptr); // set m_skSurface comparing with the old m_skSurfaceDirect m_skSurface.reset(nullptr); // set m_skSurface comparing with the old m_skSurfaceDirect
m_skSurfaceDirect = m_skSurfaceDirect = SkSurface::MakeFromBackendRenderTarget(
SkSurface::MakeRenderTargetDirect(m_grRenderTarget.get()); m_grCtx.get(), desc, nullptr);
if (scale == 1) { if (scale == 1) {
m_skSurface = m_skSurfaceDirect; m_skSurface = m_skSurfaceDirect;
@ -330,7 +328,6 @@ private:
SkAutoTUnref<const GrGLInterface> m_glInterfaces; SkAutoTUnref<const GrGLInterface> m_glInterfaces;
NSOpenGLContext* m_nsGL; NSOpenGLContext* m_nsGL;
sk_sp<GrContext> m_grCtx; sk_sp<GrContext> m_grCtx;
sk_sp<GrRenderTarget> m_grRenderTarget;
sk_sp<SkSurface> m_skSurfaceDirect; sk_sp<SkSurface> m_skSurfaceDirect;
sk_sp<SkSurface> m_skSurface; sk_sp<SkSurface> m_skSurface;
gfx::Size m_lastSize; gfx::Size m_lastSize;

View File

@ -272,7 +272,6 @@ void SkiaWindow::detachGL()
m_skSurface.reset(nullptr); m_skSurface.reset(nullptr);
m_skSurfaceDirect.reset(nullptr); m_skSurfaceDirect.reset(nullptr);
m_grRenderTarget.reset(nullptr);
m_grCtx.reset(nullptr); m_grCtx.reset(nullptr);
m_glCtx.reset(nullptr); m_glCtx.reset(nullptr);
} }
@ -290,11 +289,10 @@ void SkiaWindow::createRenderTarget(const gfx::Size& size)
desc.fSampleCnt = m_sampleCount; desc.fSampleCnt = m_sampleCount;
desc.fStencilBits = m_stencilBits; desc.fStencilBits = m_stencilBits;
desc.fRenderTargetHandle = 0; // direct frame buffer desc.fRenderTargetHandle = 0; // direct frame buffer
m_grRenderTarget.reset(m_grCtx->textureProvider()->wrapBackendRenderTarget(desc));
m_skSurface.reset(nullptr); // set m_skSurface comparing with the old m_skSurfaceDirect m_skSurface.reset(nullptr); // set m_skSurface comparing with the old m_skSurfaceDirect
m_skSurfaceDirect = m_skSurfaceDirect = SkSurface::MakeFromBackendRenderTarget(
SkSurface::MakeRenderTargetDirect(m_grRenderTarget.get()); m_grCtx.get(), desc, nullptr);
if (scale == 1) { if (scale == 1) {
m_skSurface = m_skSurfaceDirect; m_skSurface = m_skSurfaceDirect;

View File

@ -54,7 +54,6 @@ private:
base::UniquePtr<GLContext> m_glCtx; base::UniquePtr<GLContext> m_glCtx;
SkAutoTUnref<const GrGLInterface> m_glInterfaces; SkAutoTUnref<const GrGLInterface> m_glInterfaces;
sk_sp<GrContext> m_grCtx; sk_sp<GrContext> m_grCtx;
sk_sp<GrRenderTarget> m_grRenderTarget;
sk_sp<SkSurface> m_skSurfaceDirect; sk_sp<SkSurface> m_skSurfaceDirect;
sk_sp<SkSurface> m_skSurface; sk_sp<SkSurface> m_skSurface;
int m_sampleCount; int m_sampleCount;

View File

@ -31,7 +31,10 @@ endif()
if(WITH_WEBP_SUPPORT) if(WITH_WEBP_SUPPORT)
if(NOT USE_SHARED_LIBWEBP) if(NOT USE_SHARED_LIBWEBP)
add_subdirectory(libwebp-cmake) # Skia already includes webp library
if(NOT USE_SKIA_BACKEND)
add_subdirectory(libwebp-cmake)
endif()
endif() endif()
endif() endif()

2
third_party/libwebp vendored

@ -1 +1 @@
Subproject commit 03fb75221c36ff773379eb5f018d7206f1ef30c9 Subproject commit 31b1e3434227c9614e441adf017baf6002d686ab