SkiaSharp 和 GPU 加速

Posted

技术标签:

【中文标题】SkiaSharp 和 GPU 加速【英文标题】:SkiaSharp and GPU acceleration 【发布时间】:2018-02-21 14:56:03 【问题描述】:

我正在评估 SkiaSharp 库(来自 nuget,版本 1.59.3)。一切都渲染得很好。但似乎 Skia 并没有使用 GPU 进行加速渲染。 Windows 10 任务管理器未检测到我的测试应用程序对 GPU 的任何使用。我正在使用下一个命令来创建 SKCanvas:

 using (SKBitmap bitmap = new SKBitmap(gWidth, gHeight, SKColorType.Bgra8888, alphaType))
 using (SKCanvas canvas = new SKCanvas(bitmap))
  ... 

GPU 加速是否需要一些特殊的方式来初始化 SkiaSharp ?

我已经尝试了下一个命令:

GRContext context = GRContext.Create(GRBackend.OpenGL);

但它返回 null。

【问题讨论】:

【参考方案1】:

啊,GPU。

您需要在现有的 OpenGL/ANGLE 上下文中。

我正在这样做: https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.UWP/SKSwapChainPanel.cs

但是,在我真正初始化 SkiaSharp 之前,我首先必须手动创建 ANGLE 上下文: https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.UWP/AngleSwapChainPanel.cs

这对所有平台都是一样的,先设置好OpenGL/ANGLE上下文,然后当是当前上下文时,启动SkiaSharp GRContext。

这也是我为单元测试所做的事情: https://github.com/mono/SkiaSharp/blob/master/tests/Tests/GlContexts/Wgl/WglContext.cs

如果您不喜欢所有这些 setup-y 代码,这并不总是最好的代码,但您可以使用其他一些库来编写所有样板代码。只要有一个有效的 OpenGL/ANGLE 上下文,你就很好。

【讨论】:

以上是关于SkiaSharp 和 GPU 加速的主要内容,如果未能解决你的问题,请参考以下文章

用GPU加速Linux Kernel?

Chrome 的 GPU 加速问题。

matlab如何gpu加速

tensorflow怎么gpu加速

装keras时需不需要装gpu加速

gpu、旧硬件、3d 加速和一个库