Option to force sw skia in viewer
Diffs=
0bd986562 Fix format.
3c8a69240 Option to force sw skia in viewer
diff --git a/.rive_head b/.rive_head
index 508d525..86c5b0e 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-dc76fda7d2436c453a2016212d656d17a90c1ad4
+0bd9865621d71264d8119353bc27a35df7cdc109
diff --git a/viewer/src/skia/skia_host.cpp b/viewer/src/skia/skia_host.cpp
index fe433bb..e88e82e 100644
--- a/viewer/src/skia/skia_host.cpp
+++ b/viewer/src/skia/skia_host.cpp
@@ -29,6 +29,8 @@
// Experimental flag, until we complete coregraphics_host
//#define TEST_CG_RENDERER
+//#define SW_SKIA_MODE
+
#ifdef TEST_CG_RENDERER
#include "cg_factory.hpp"
#include "cg_renderer.hpp"
@@ -75,7 +77,7 @@
#elif defined(SK_GL)
// Skia commands are issued to the same GL context before Sokol, so we need
// to make sure Sokol does not clear the buffer.
- *action = (sg_pass_action){.colors[0] = {.action = SG_ACTION_DONTCARE}};
+ *action = (sg_pass_action){.colors[0] = {.action = SG_ACTION_DONTCARE }};
#endif
m_context = makeSkiaContext();
@@ -95,6 +97,13 @@
if (content) {
#ifdef TEST_CG_RENDERER
render_with_cg(canvas, m_dimensions.width(), m_dimensions.height(), content, elapsed);
+#elif defined(SW_SKIA_MODE)
+ auto info = SkImageInfo::MakeN32Premul(m_dimensions.width(), m_dimensions.height());
+ auto swsurf = SkSurface::MakeRaster(info);
+ rive::SkiaRenderer skiaRenderer(swsurf->getCanvas());
+ content->handleDraw(&skiaRenderer, elapsed);
+ auto img = swsurf->makeImageSnapshot();
+ canvas->drawImage(img, 0, 0, SkSamplingOptions(SkFilterMode::kNearest), nullptr);
#else
rive::SkiaRenderer skiaRenderer(canvas);
content->handleDraw(&skiaRenderer, elapsed);