diff --git a/build/premake5.lua b/build/premake5.lua
index a0e55fa..7ed2b6c 100644
--- a/build/premake5.lua
+++ b/build/premake5.lua
@@ -51,7 +51,7 @@
         defines {"DEBUG"}
         symbols "On"
 
-    configuration "with-low-level-rendering"
+    filter "options:with-low-level-rendering"
         defines("LOW_LEVEL_RENDERING")
         defines("CONTOUR_RECURSIVE")
 
diff --git a/include/rive/math/mat2d.hpp b/include/rive/math/mat2d.hpp
index bbb5092..2ab92cc 100644
--- a/include/rive/math/mat2d.hpp
+++ b/include/rive/math/mat2d.hpp
@@ -2,6 +2,7 @@
 #define _RIVE_MAT2D_HPP_
 
 #include <cstddef>
+#include <stdio.h>
 
 namespace rive
 {
diff --git a/renderer/library/include/low_level/low_level_renderer.hpp b/renderer/library/include/low_level/low_level_renderer.hpp
index 17682e9..a4a315c 100644
--- a/renderer/library/include/low_level/low_level_renderer.hpp
+++ b/renderer/library/include/low_level/low_level_renderer.hpp
@@ -59,6 +59,7 @@
 
 		virtual RenderPaint* makeRenderPaint() = 0;
 		virtual RenderPath* makeRenderPath() = 0;
+		virtual RenderImage* makeRenderImage() = 0;
 		virtual bool initialize(void* data) = 0;
 		bool initialize() { return initialize(nullptr); }
 
diff --git a/renderer/library/include/metal/metal_renderer.hpp b/renderer/library/include/metal/metal_renderer.hpp
index 4db6dc4..f35d846 100644
--- a/renderer/library/include/metal/metal_renderer.hpp
+++ b/renderer/library/include/metal/metal_renderer.hpp
@@ -14,6 +14,15 @@
 
 namespace rive
 {
+	class MetalRenderImage : public RenderImage
+	{
+	public:
+		bool decode(const uint8_t* bytes, std::size_t size) override
+		{
+			return true;
+		}
+	};
+
 	class MetalRenderer : public LowLevelRenderer
 	{
 	public:
@@ -24,12 +33,15 @@
 		void transform(const Mat2D& transform) override;
 		void drawPath(RenderPath* path, RenderPaint* paint) override;
 		void clipPath(RenderPath* path) override;
+		void
+		drawImage(RenderImage* image, BlendMode value, float opacity) override;
 
 		void startFrame() override;
 		void endFrame() override;
 
 		RenderPaint* makeRenderPaint() override;
 		RenderPath* makeRenderPath() override;
+		RenderImage* makeRenderImage() override;
 		bool initialize(void* data) override;
 
 		virtual id<MTLDevice> acquireDevice() = 0;
diff --git a/renderer/library/include/opengl/opengl_renderer.hpp b/renderer/library/include/opengl/opengl_renderer.hpp
index 2b779e6..02d2e68 100644
--- a/renderer/library/include/opengl/opengl_renderer.hpp
+++ b/renderer/library/include/opengl/opengl_renderer.hpp
@@ -8,6 +8,15 @@
 
 namespace rive
 {
+	class OpenGLRenderImage : public RenderImage
+	{
+	public:
+		bool decode(const uint8_t* bytes, std::size_t size) override
+		{
+			return true;
+		}
+	};
+
 	class OpenGLRenderer : public LowLevelRenderer
 	{
 	private:
@@ -38,12 +47,15 @@
 		OpenGLRenderer();
 		~OpenGLRenderer();
 		void drawPath(RenderPath* path, RenderPaint* paint) override;
+		void
+		drawImage(RenderImage* image, BlendMode value, float opacity) override;
 
 		void startFrame() override;
 		void endFrame() override;
 
 		RenderPaint* makeRenderPaint() override;
 		RenderPath* makeRenderPath() override;
+		RenderImage* makeRenderImage() override;
 
 		bool initialize(void* data) override;
 
diff --git a/renderer/library/src/graphics_api.cpp b/renderer/library/src/graphics_api.cpp
index 579af1f..cd73925 100644
--- a/renderer/library/src/graphics_api.cpp
+++ b/renderer/library/src/graphics_api.cpp
@@ -76,4 +76,10 @@
 		assert(g_GraphicsApi != nullptr);
 		return g_GraphicsApi->makeRenderPath();
 	}
+
+	RenderImage* makeRenderImage()
+	{
+		assert(g_GraphicsApi != nullptr);
+		return g_GraphicsApi->makeRenderImage();
+	}
 } // namespace rive
\ No newline at end of file
diff --git a/renderer/library/src/metal/metal_renderer.mm b/renderer/library/src/metal/metal_renderer.mm
index 18651f3..e690004 100644
--- a/renderer/library/src/metal/metal_renderer.mm
+++ b/renderer/library/src/metal/metal_renderer.mm
@@ -8,6 +8,11 @@
 void MetalRenderer::restore() {}
 void MetalRenderer::transform(const Mat2D& transform) {}
 void MetalRenderer::drawPath(RenderPath* path, RenderPaint* paint) {}
+void MetalRenderer::drawImage(RenderImage* image,
+                              BlendMode value,
+                              float opacity)
+{
+}
 void MetalRenderer::clipPath(RenderPath* path) {}
 
 void MetalRenderer::startFrame() {}
@@ -15,6 +20,7 @@
 
 RenderPaint* MetalRenderer::makeRenderPaint() { return new MetalRenderPaint(); }
 RenderPath* MetalRenderer::makeRenderPath() { return new MetalRenderPath(); }
+RenderImage* MetalRenderer::makeRenderImage() { return new MetalRenderImage(); }
 
 static const char kShaderSource[] =
     "#include <metal_stdlib>\n"
diff --git a/renderer/library/src/opengl/opengl_renderer.cpp b/renderer/library/src/opengl/opengl_renderer.cpp
index e7bfbda..98059f5 100644
--- a/renderer/library/src/opengl/opengl_renderer.cpp
+++ b/renderer/library/src/opengl/opengl_renderer.cpp
@@ -115,6 +115,13 @@
 	return true;
 }
 
+void OpenGLRenderer::drawImage(RenderImage* image,
+                               BlendMode value,
+                               float opacity)
+{
+	// TODO: implement drawImage
+}
+
 void OpenGLRenderer::drawPath(RenderPath* path, RenderPaint* paint)
 {
 	auto glPaint = static_cast<OpenGLRenderPaint*>(paint);
@@ -315,6 +322,10 @@
 	return new OpenGLRenderPaint();
 }
 RenderPath* OpenGLRenderer::makeRenderPath() { return new OpenGLRenderPath(); }
+RenderImage* OpenGLRenderer::makeRenderImage()
+{
+	return new OpenGLRenderImage();
+}
 
 void OpenGLRenderer::updateIndexBuffer(std::size_t contourLength)
 {
