From 5e128bc73149c7370640cf7831d227794a0710f9 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Mon, 28 Nov 2022 07:06:47 +0100 Subject: [PATCH 1/2] Fix ClearType --- .../Avalonia.Browser/Skia/BrowserSkiaGpuRenderSession.cs | 3 ++- src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs | 5 +++-- src/Skia/Avalonia.Skia/Gpu/OpenGl/FboSkiaSurface.cs | 2 +- src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs | 2 +- src/Skia/Avalonia.Skia/Gpu/OpenGl/OpenGlBitmapImpl.cs | 2 +- src/Skia/Avalonia.Skia/SurfaceRenderTarget.cs | 4 ++-- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Browser/Avalonia.Browser/Skia/BrowserSkiaGpuRenderSession.cs b/src/Browser/Avalonia.Browser/Skia/BrowserSkiaGpuRenderSession.cs index 81b37da7bd..3e4cf31dda 100644 --- a/src/Browser/Avalonia.Browser/Skia/BrowserSkiaGpuRenderSession.cs +++ b/src/Browser/Avalonia.Browser/Skia/BrowserSkiaGpuRenderSession.cs @@ -9,7 +9,8 @@ namespace Avalonia.Browser.Skia public BrowserSkiaGpuRenderSession(BrowserSkiaSurface browserSkiaSurface, GRBackendRenderTarget renderTarget) { - _surface = SKSurface.Create(browserSkiaSurface.Context, renderTarget, browserSkiaSurface.Origin, browserSkiaSurface.ColorType); + _surface = SKSurface.Create(browserSkiaSurface.Context, renderTarget, browserSkiaSurface.Origin, + browserSkiaSurface.ColorType, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); GrContext = browserSkiaSurface.Context; diff --git a/src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs b/src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs index 8d35d27a81..9dbfd0f8d9 100644 --- a/src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs +++ b/src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs @@ -90,7 +90,8 @@ namespace Avalonia.Skia _currentFramebufferAddress = framebuffer.Address; - var surface = SKSurface.Create(desiredImageInfo, _currentFramebufferAddress, framebuffer.RowBytes); + var surface = SKSurface.Create(desiredImageInfo, _currentFramebufferAddress, + framebuffer.RowBytes, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); // If surface cannot be created - try to create a compatibility shim first if (surface == null) @@ -148,7 +149,7 @@ namespace Avalonia.Skia $"Unable to create pixel format shim for conversion from {bitmapColorType} to {destinationInfo.ColorType}"); } - Surface = SKSurface.Create(_bitmap.Info, _bitmap.GetPixels(), _bitmap.RowBytes); + Surface = SKSurface.Create(_bitmap.Info, _bitmap.GetPixels(), _bitmap.RowBytes, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); if (Surface == null) { diff --git a/src/Skia/Avalonia.Skia/Gpu/OpenGl/FboSkiaSurface.cs b/src/Skia/Avalonia.Skia/Gpu/OpenGl/FboSkiaSurface.cs index 984c1785b7..5cc338a469 100644 --- a/src/Skia/Avalonia.Skia/Gpu/OpenGl/FboSkiaSurface.cs +++ b/src/Skia/Avalonia.Skia/Gpu/OpenGl/FboSkiaSurface.cs @@ -87,7 +87,7 @@ namespace Avalonia.Skia var target = new GRBackendRenderTarget(pixelSize.Width, pixelSize.Height, 0, 8, new GRGlFramebufferInfo((uint)_fbo, SKColorType.Rgba8888.ToGlSizedFormat())); Surface = SKSurface.Create(_grContext, target, - surfaceOrigin, SKColorType.Rgba8888); + surfaceOrigin, SKColorType.Rgba8888, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); CanBlit = gl.IsBlitFramebufferAvailable; } diff --git a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs index 809f50ab8b..476ecc4a39 100644 --- a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs +++ b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs @@ -91,7 +91,7 @@ namespace Avalonia.Skia var renderTarget = new GRBackendRenderTarget(size.Width, size.Height, samples, disp.StencilSize, glInfo); var surface = SKSurface.Create(_grContext, renderTarget, glSession.IsYFlipped ? GRSurfaceOrigin.TopLeft : GRSurfaceOrigin.BottomLeft, - colorType); + colorType, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); success = true; diff --git a/src/Skia/Avalonia.Skia/Gpu/OpenGl/OpenGlBitmapImpl.cs b/src/Skia/Avalonia.Skia/Gpu/OpenGl/OpenGlBitmapImpl.cs index 857433f95f..5e02500bf0 100644 --- a/src/Skia/Avalonia.Skia/Gpu/OpenGl/OpenGlBitmapImpl.cs +++ b/src/Skia/Avalonia.Skia/Gpu/OpenGl/OpenGlBitmapImpl.cs @@ -42,7 +42,7 @@ namespace Avalonia.Skia GlConsts.GL_TEXTURE_2D, (uint)_surface.GetTextureId(), (uint)_surface.InternalFormat))) using (var surface = SKSurface.Create(context.GrContext, backendTexture, GRSurfaceOrigin.BottomLeft, - SKColorType.Rgba8888)) + SKColorType.Rgba8888, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal))) { // Again, silently ignore, if something went wrong it's not our fault if (surface == null) diff --git a/src/Skia/Avalonia.Skia/SurfaceRenderTarget.cs b/src/Skia/Avalonia.Skia/SurfaceRenderTarget.cs index d3231c92a5..74e3ebc51d 100644 --- a/src/Skia/Avalonia.Skia/SurfaceRenderTarget.cs +++ b/src/Skia/Avalonia.Skia/SurfaceRenderTarget.cs @@ -77,8 +77,8 @@ namespace Avalonia.Skia { var imageInfo = MakeImageInfo(width, height, format); if (gpu != null) - return SKSurface.Create(gpu, false, imageInfo); - return SKSurface.Create(imageInfo); + return SKSurface.Create(gpu, false, imageInfo, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); + return SKSurface.Create(imageInfo, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal)); } /// From 173f5e1b6e111383c67d1858131dd462e93c9ba2 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Mon, 28 Nov 2022 09:15:16 +0100 Subject: [PATCH 2/2] Update test file --- .../RestrictedHeight_VerticalAlign.expected.png | Bin 532 -> 518 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/TestFiles/Skia/Controls/TextBlock/RestrictedHeight_VerticalAlign.expected.png b/tests/TestFiles/Skia/Controls/TextBlock/RestrictedHeight_VerticalAlign.expected.png index a76c6a5b2a824ec785875d92dd0b38407e3049c3..e5a74cf0e61c1c217abd0be29aad19be9dd90bb3 100644 GIT binary patch delta 476 zcmbQj(#A5uq<*ibi(^Q|oVRyu!YHaeM2&jcMC`;pq+;tLXBFVL?&15(RDl zsXlXzYq5D}+pea_?87#LU6GRk9r#91J$voDs95L@9f|jQN{;Q@@@;#>(nJ3kSkEns zV_dQF2M6!}1y4f$rLSJFVCLk|I`OXy>f_3rn$}q!5LtaU;=8BZq&s4I>B6gjXdQpp zeCYht_@p(ZlU`4m7wlgwoqbGd_Ik(WL(_A&c7dfe-DY|*}1 zFBU$3m0f?b&h*pLcAyormhog+W_@c3{yII@Z27j|GmqYK-*>9#U*V;N%Uo?JvEqe%{*d`=8K%|3o$(%YDq!pJ2%R_g`e) z&98s2_LLf!hfQ0V=6Lp%1Jojs?K1!7^PvYg!;Cx9|6{jsO`ghZ50dkA^>bP0l+XkK D{=?ht delta 490 zcmZo;nZh!`r2e$0i(^Q|oVRy2=3NdDVSBJ&wEuv$!MDT&2QB@Bhr-z0<}n}J#~m#x zV9cy7AH2!*#t^W!g&*F4XF0eY|(Y z-Hlhy{bLl*{7~1xHNDuLA>*XOW|j4mr_?LoZf`rTx%5rbmlbP$+0v8OO}@jkH~8zK z4_|oxZqUftc_3u<{iyiKe|-M>yw5sobRl|;>653CuZwdcvvc;drM|fR<{o4Fw)4(h zrt7w{{t8|GYfJ2>88;?BjOPfxc8lrns>eF)v4$5)jymWcn6L7F@}C*M8`m5u{`)Fv z!S#I+e`nV}37_=4^VR#;JL8+hTD?;@TKSy+`|6Rfl$?*z1zqEXHI`?t{WkS{k};F> z{9OI$UA~{v-f!!7|F$=)lkcTY&*z(4Uo-Q` zyPmCCYb!UdiZ6BhZ}Bpu_{nKg{jjgA`%XB9^O!_m`84ZL@?@`-SNB|-KB>m4X#aiH z%IHb&jju@kmN{>CLFYhmc=-GL`;+!q1+Sfaw!l}>$GvTtHruRqA@ke6{Vzcaa0Z40 aZ~ifUY&ZSvnsam?NYc~Q&t;ucLK6Tm1Mcbo