News for hackers. Stuff that matters.
Re:The first conformant M1 GPU driver by memefrog on Tuesday August 22, 2023 @05:32PM (#37228806)
Vulkan is way better than Metal. Metal is simpler to learn. That is about it.
Re:The first conformant M1 GPU driver by nicce on Tuesday August 22, 2023 @06:18PM (#37229311)
Can someone give concrete examples, why? Let’s exclude the learning.
Re:The first conformant M1 GPU driver by WhereIsTheTruth on Tuesday August 22, 2023 @09:08PM (#37230677)
Apple have less constraints so their API is more straightforward (less abstractions) and less verbose, Vulkan give you more control, but at the expense of a more convoluted, verbose and complex API, people like to joke about the amount of code one need to write in order to render a triangle with Vulkan
Re:The first conformant M1 GPU driver by rendaw on Wednesday August 23, 2023 @12:00AM (#37231706)
These are still very abstract differences.
Re:The first conformant M1 GPU driver by kaba0 on Wednesday August 23, 2023 @12:45AM (#37231970)
Though arguably, going from first triangle to a semi-complex scene is relatively few additional lines, for what it’s worth.
Re:The first conformant M1 GPU driver by ribit on Wednesday August 23, 2023 @01:17PM (#37239174)
I am not convinced that Vulkan gives you more control. Metal is adaptive in the sense that it can manage some state and configuration for you, but that is strictly opt-out. You still get your manual memory management and low-level event synchronisation.

On the topic of control, Metal has precise control over display intervals and presentation timing (I think Vulkan recently introduced something similar, not sure).

Re:The first conformant M1 GPU driver by ribit on Wednesday August 23, 2023 @01:14PM (#37239128)
Nonsense. Feature-wise, they are mostly equivalent (Metal has better support for GPU driven pipelines and shader authoring). Metal is much simpler and more flexible. The only way Vulkan is "better" if you measure lines of codes.
Re:The first conformant M1 GPU driver by anaki on Thursday August 24, 2023 @01:49AM (#37245453)
Vulkan is surely more flexible. One example off the top of my head is mailbox presentation mode in Vulkan for minimal input delay without tearing.
Re:The first conformant M1 GPU driver by ribit on Thursday August 24, 2023 @05:03AM (#37246591)
Metal allows you to present surfaces at exact times. You have access to the display refresh timing information and it's your job to synchronise your drawing rate to (potentially variable) display presentation interval. Vulkan presentation modes are workarounds over the fact that Vulkan provides no fine-grained control over presentation intervals.

There is the VK_GOOGLE_display_timing extension that provides functionality similar to Metal, but it doesn't seem like it's well supported on desktop. The equivalent official extension seems to be stuck in limbo somewhere.

Re:The first conformant M1 GPU driver by anaki on Thursday August 24, 2023 @07:57AM (#37247785)
Sounds really fine-grained, but does this mean I have to invent my own "mailbox" every time I want "unlimited refresh rate with minimal input lag, but without tearing"?
Re:The first conformant M1 GPU driver by ribit on Friday August 25, 2023 @04:53AM (#37259543)
I think it should be as easy as not presenting a drawable if you detect that the previous frame is still rendering. Should be solvable by adding a single conditional guard to the command buffer completion handler. Never did that myself as I don't have a use case for it, so I might be underestimating the challenge.

Note that mailbox approach does not really give you unlimited refresh rate, as you are bound by the number of drawables/swapchain images your driver can supply. If your drawing is very fast these resources become the bottleneck. If you truly need unlimited framerate (e.g. for benchmarking) the best approach is probably to render to a texture and then blit the last one to a drawable for presentation. And if your goal is "minimal input lag", then you might as well do it right and decouple your simulation and rendering threads.