logoalt Hacker News

xatttlast Wednesday at 12:49 PM5 repliesview on HN

Tangential, but was this not the goal of Quartz 2D? The idea of everyday things running on the GPU seemed very attractive.

There is some context in this 13-year-old discussion: https://news.ycombinator.com/item?id=5345905#5346541

I am curious if the equation of CPU-determined graphics being faster than being done on the GPU has changed in the last decade.

Did Quartz 2D ever become enabled on macOS?


Replies

kllrnohjlast Wednesday at 1:10 PM

When things like this (or Vello or piet-gpu or etc...) talk about "vector graphics on GPU" they are near exclusively talking only about essentially a full solve solution. A generic solution that handles fonts and svgs and arbitrarily complex paths with strokes and fills and the whole shebang.

These are great goals, but also largely inconsequential with nearly all UI designs. The majority of systems today (like skia) are hybrids. Things like simple shapes (eg, round rects) have analytical shaders on the GPU and complex paths (like fronts) are just done on the CPU once and cached on the GPU in a texture. It's a very robust, fast approach to the wholistic problem, at the cost of not being as "clean" of a solution like a pure GPU renderer would be.

jacobp100last Wednesday at 1:40 PM

> I am curious if the equation of CPU-determined graphics being faster than being done on the GPU has changed in the last decade

If you look at Blend2D (a CPU rasterizer), they seem to outperform every other rasterizer including GPU-based ones - according to their own benchmarks at least

show 2 replies
pjmlplast Wednesday at 3:21 PM

Not sure what you mean, it can make use of accelerated graphics,

https://developer.apple.com/library/archive/documentation/Gr...

show 1 reply
willtemperleylast Wednesday at 3:39 PM

Quartz 2D is now CoreGraphics. It's hard to find information about the backend, presumably for commercial reasons. I do know it uses the GPU for some operations like magnifyEffect.

Today I was smoothly panning and zooming 30K vertex polygons with SwiftUI Canvas and it was barely touching the CPU so I suspect it uses the GPU heavily. Either way it's getting very good. There's barely any need to use render caches.

samivlast Wednesday at 2:57 PM

The issue is not performance the issue is that pixel precise operations are difficult on the GPU using graphics features such as shaders.

You don't normally work with pixels but you work with polygonal geometry (triangles) and the GPU does the pixel (fragment) rasterization.

show 1 reply