vfbb 277 Posted May 10 @Hans♫ Is this an image or a path? (we have to understand if the arrow is being drawn or resized) Can you share the source of this icon? Share this post Link to post
Hans♫ 73 Posted May 10 Its a path. Our code looks like this (simplified): fStroke := TStrokeBrush.Create(TBrushKind.Solid, claSilver); fStroke.Thickness := 1.5; fPath := TPathData.Create; fPath.AddEllipse(RectF(-12, -12, 12, 12)); ... Canvas.DrawPath(fPath, 1, fStroke); Share this post Link to post
vfbb 277 Posted May 12 @Hans♫ Do you have a blank project simulating this? I drew directly in the form's OnPaint using your example on a blank project and got the same result for all renders, except for the FMX GPU without Skia which seems to be bugged. scale 1x: scale 2.25x: Share this post Link to post
Hans♫ 73 Posted May 14 On 5/12/2024 at 9:06 PM, vfbb said: Do you have a blank project simulating this? Yes, I can reproduce this in a blank project. You did not see it because you used gray in gray. When using white on black, then you can see it: <No Skia | Skia + Vulkan > Enlarged: <No Skia | Skia + Vulkan > This is produced with an empty app with only this code: GlobalUseSkia := true; GlobalUseSkiaRasterWhenAvailable := false; GlobalUseVulkan := true; ... procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); var lStroke: TStrokeBrush; lPath: TPathData; begin lStroke := TStrokeBrush.Create(TBrushKind.Solid, claWhite); lStroke.Thickness := 1.5; lPath := TPathData.Create; lPath.AddEllipse(RectF(-12, -12, 12, 12)); lPath.Translate(50,50); Canvas.Fill.Color := claBlack; Canvas.FillRect(RectF(0,0,100,100), 0, 0, [], 1); Canvas.DrawPath(lPath, 1, lStroke); lStroke.Free; lPath.Free; end; Share this post Link to post
Anders Melander 1655 Posted May 14 4 hours ago, Hans♫ said: Wow... 2 bit color depth. This looks like a really bad attempt at supersampling. Or someone got the order of gamma correction mixed up so instead of sRGB->Linear->sRGB they are doing Linear->sRGB->Linear. But that wouldn't explain the 2 bits. Share this post Link to post
vfbb 277 Posted May 14 @Hans♫ I used the same code you provided and got satisfactory results. Look: <No Skia> | <Skia + Vulkan> (Scale 100%) It is difficult to deduce what is happening if the same code is producing different results. That's why I think it would be interesting if we could test it on more machines. The project I used is attached: testVulkan.7z 1 Share this post Link to post
DelphiUdIT 133 Posted May 14 (edited) This is mine, same project of @vfbb but with 2 graphics surface from the same PC (always with vulkan enable): Intel Nvidia Intel: Intel(R) Iris(R) Xe Graphics Nvidia: NVIDIA GeForce RTX 3070 Ti Laptop GPU P.S.: Vulkan version 1.3.277 Edited May 14 by DelphiUdIT 1 Share this post Link to post
Rafal.B 2 Posted May 14 (edited) NVIDIA RTX 3000 graphics card In both cases, GlobalUseSkiaRasterWhenAvailable=False and GlobalUseVulkan=True. In my opinion, it looks better when GlobalUseSkia = False; Edited Wednesday at 09:18 AM by Rafal.B 1 Share this post Link to post
Lars Fosdal 1739 Posted Wednesday at 07:00 AM S = GlobalUseSkia V = GlobalUseVulcan GlobalUseSkiaRasterWhenAvailable = False HW: Lenovo P16 Name NVIDIA RTX A4500 Laptop GPU PNP Device ID PCI\VEN_10DE&DEV_24BA&SUBSYS_22DB17AA&REV_A1\4&35D2CA85&0&0008 Adapter Type NVIDIA RTX A4500 Laptop GPU, NVIDIA compatible Adapter Description NVIDIA RTX A4500 Laptop GPU Name Intel(R) UHD Graphics PNP Device ID PCI\VEN_8086&DEV_4688&SUBSYS_22FB17AA&REV_0C\3&11583659&0&10 Adapter Type Intel(R) UHD Graphics Family, Intel Corporation compatible Adapter Description Intel(R) UHD Graphics 1 Share this post Link to post