Browse Source

Updated SkiaSharp to 1.68.0

pull/2173/head
Nikita Tsukanov 7 years ago
parent
commit
ea7dc760cc
  1. 2
      build/Magick.NET-Q16-AnyCPU.props
  2. 4
      build/SkiaSharp.props
  3. 5
      nukebuild/Build.cs
  4. 3
      src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs
  5. 23
      src/Skia/Avalonia.Skia/GlRenderTarget.cs
  6. 2
      src/Skia/Avalonia.Skia/WriteableBitmapImpl.cs
  7. 12
      tests/Avalonia.RenderTests/Controls/BorderTests.cs
  8. 1
      tests/Avalonia.RenderTests/TestBase.cs
  9. 21
      tests/Avalonia.RenderTests/TestSkip.cs

2
build/Magick.NET-Q16-AnyCPU.props

@ -1,5 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.0.6.102" /> <PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.9.0.2" />
</ItemGroup> </ItemGroup>
</Project> </Project>

4
build/SkiaSharp.props

@ -1,6 +1,6 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<PackageReference Include="SkiaSharp" Version="1.60.0" /> <PackageReference Include="SkiaSharp" Version="1.68.0" />
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="Avalonia.Skia.Linux.Natives" Version="1.60.0.1" /> <PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="SkiaSharp.NativeAssets.Linux" Version="1.68.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

5
nukebuild/Build.cs

@ -138,12 +138,13 @@ partial class Build : NukeBuild
}); });
Target RunRenderTests => _ => _ Target RunRenderTests => _ => _
.OnlyWhen(() => !Parameters.SkipTests && Parameters.IsRunningOnWindows) .OnlyWhen(() => !Parameters.SkipTests)
.DependsOn(Compile) .DependsOn(Compile)
.Executes(() => .Executes(() =>
{ {
RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", true); RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", true);
RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", true); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", true);
}); });
Target RunDesignerTests => _ => _ Target RunDesignerTests => _ => _

3
src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs

@ -42,7 +42,8 @@ namespace Avalonia.Skia
{ {
var framebuffer = _platformSurface.Lock(); var framebuffer = _platformSurface.Lock();
var framebufferImageInfo = new SKImageInfo(framebuffer.Size.Width, framebuffer.Size.Height, var framebufferImageInfo = new SKImageInfo(framebuffer.Size.Width, framebuffer.Size.Height,
framebuffer.Format.ToSkColorType(), SKAlphaType.Premul); framebuffer.Format.ToSkColorType(),
framebuffer.Format == PixelFormat.Rgb565 ? SKAlphaType.Opaque : SKAlphaType.Premul);
CreateSurface(framebufferImageInfo, framebuffer); CreateSurface(framebufferImageInfo, framebuffer);

23
src/Skia/Avalonia.Skia/GlRenderTarget.cs

@ -31,24 +31,18 @@ namespace Avalonia.Skia
var size = session.Size; var size = session.Size;
var scaling = session.Scaling; var scaling = session.Scaling;
GRBackendRenderTargetDesc desc = new GRBackendRenderTargetDesc gl.Viewport(0, 0, size.Width, size.Height);
{
Width = size.Width,
Height = size.Height,
SampleCount = disp.SampleCount,
StencilBits = disp.StencilSize,
Config = GRPixelConfig.Rgba8888,
Origin=GRSurfaceOrigin.BottomLeft,
RenderTargetHandle = new IntPtr(fb)
};
gl.Viewport(0, 0, desc.Width, desc.Height);
gl.ClearStencil(0); gl.ClearStencil(0);
gl.ClearColor(0, 0, 0, 0); gl.ClearColor(0, 0, 0, 0);
gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
var surface = SKSurface.Create(_grContext, desc); GRBackendRenderTarget renderTarget =
new GRBackendRenderTarget(size.Width, size.Height, disp.SampleCount, disp.StencilSize,
new GRGlFramebufferInfo((uint)fb, GRPixelConfig.Rgba8888.ToGlSizedFormat()));
var surface = SKSurface.Create(_grContext, renderTarget,
GRSurfaceOrigin.BottomLeft,
GRPixelConfig.Rgba8888.ToColorType());
var nfo = new DrawingContextImpl.CreateInfo var nfo = new DrawingContextImpl.CreateInfo
{ {
GrContext = _grContext, GrContext = _grContext,
@ -62,6 +56,7 @@ namespace Avalonia.Skia
{ {
surface.Canvas.Flush(); surface.Canvas.Flush();
surface.Dispose(); surface.Dispose();
renderTarget.Dispose();
session.Dispose(); session.Dispose();
})); }));
} }

2
src/Skia/Avalonia.Skia/WriteableBitmapImpl.cs

@ -41,7 +41,7 @@ namespace Avalonia.Skia
var nfo = new SKImageInfo(size.Width, size.Height, colorType, SKAlphaType.Premul); var nfo = new SKImageInfo(size.Width, size.Height, colorType, SKAlphaType.Premul);
var blob = runtimePlatform.AllocBlob(nfo.BytesSize); var blob = runtimePlatform.AllocBlob(nfo.BytesSize);
_bitmap.InstallPixels(nfo, blob.Address, nfo.RowBytes, null, s_releaseDelegate, blob); _bitmap.InstallPixels(nfo, blob.Address, nfo.RowBytes, s_releaseDelegate, blob);
} }
else else
{ {

12
tests/Avalonia.RenderTests/Controls/BorderTests.cs

@ -188,7 +188,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Centers_Content_Horizontally() public async Task Border_Centers_Content_Horizontally()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -215,7 +215,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Centers_Content_Vertically() public async Task Border_Centers_Content_Vertically()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -296,7 +296,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Left_Aligns_Content() public async Task Border_Left_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -323,7 +323,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Right_Aligns_Content() public async Task Border_Right_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -350,7 +350,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Top_Aligns_Content() public async Task Border_Top_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -377,7 +377,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Bottom_Aligns_Content() public async Task Border_Bottom_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator

1
tests/Avalonia.RenderTests/TestBase.cs

@ -46,6 +46,7 @@ namespace Avalonia.Direct2D1.RenderTests
public TestBase(string outputPath) public TestBase(string outputPath)
{ {
outputPath = outputPath.Replace('\\', Path.DirectorySeparatorChar);
var testPath = GetTestsDirectory(); var testPath = GetTestsDirectory();
var testFiles = Path.Combine(testPath, "TestFiles"); var testFiles = Path.Combine(testPath, "TestFiles");
#if AVALONIA_SKIA #if AVALONIA_SKIA

21
tests/Avalonia.RenderTests/TestSkip.cs

@ -0,0 +1,21 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using Xunit;
#if AVALONIA_SKIA
namespace Avalonia.Skia.RenderTests
#else
namespace Avalonia.Direct2D1.RenderTests
#endif
{
public class Win32Fact : FactAttribute
{
public Win32Fact(string message)
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
Skip = message;
}
}
}
Loading…
Cancel
Save