Live data from Hacker News

The first conformant M1 GPU driver

rosenzweig.io

681–690 of 699 posts

Re: The first conformant M1 GPU driver

#681

Earlier quoted context omitted.

> If you go fullscreen in a WSL terminal, at least the ads can't hurt you. Ads? What ads?

The regular Windows ones. Nag notifications, Edge updates, search bar intrusion, that sorta thing. Nothing in the terminal app itself; the recent rewrite did a world of good for it.

> The regular Windows ones. Nag notifications, Edge updates, search bar intrusion, that sorta thing.

I still have no clue what you are referring to. I don't see any of that.

Re: The first conformant M1 GPU driver

#682
post #495

Earlier quoted context omitted.

> If you go fullscreen in a WSL terminal, at least the ads can't hurt you. Ads? What ads?

Apparently, there are ads everywhere in macOS. By which, they mean the notifications in settings that upsell iCloud, or when News or Apple Music opens, there is a prompt to subscribe to the service. Can they be invasive? I suppose so, but I believe the GP is exaggerating somewhat. There are far more egregious examples in Google and Microsoft properties (cue something about Apple being the richest...) There also appea…

> There are far more egregious examples in Google and Microsoft properties

I keep hearing about ads in Windows, but I have yet to experience anything like people claim.

Re: The first conformant M1 GPU driver

#683
post #675

Earlier quoted context omitted.

My personal experience: - MacOS user experience: Terrible. It feels like Linux did 10 years ago. Bugs and inconsistencies everywhere. But hey, they are competing with W11 so, no need to improve it either. Forced updates and restarts. And, did I mention bugs and inconsistencies everywhere? - M2 Computational performance: It feels like my laptop 10 years ago. - M2 Batterly life performance: It is absolutely brilliant,…

I honestly can’t take you seriously when you write shit like “Linux did 10 years ago”..

Let's see:

- Alt+Tab is bugged. You need a third party app to bring consistent behaviour.

- Closing a window with window decorator very often minimizes it instead, no consistency.

- Recording or capturing screenshot is tedious without a third party app

- Homebrew is underwhelming as a package manager. It feels like Linux package managers did around 20 year ago.

- No global shortcut key to trigger arbitrary commands (you need a third party app). Like, starting a terminal.

- Bad support for external keyboard. Dead keys everywhere that have otherwise consistent meaning (delete, home, end, etc). The kinda stuff that could happen on Linux 10 years ago.

- No sensible support for external mouse, such as scrolling behaviour is stuck to what would make sense for the trackpad, and feels bad on a mouse. You need to install a third party app to handle this.

- No copy/cut paste in file manager. You need to drag and drop like a primate.

- Oh, and finder, in general, is bad at almost all the things a file manager should be good at. But, someone somewhere at apple decided that labels trumps hierarchical file structures, to navigate a hierarchical file system.

- Built in advertisements for apple products pop up from time to time.

- "I guess I won't start working right now because MacOS is installing a mandatory update" has already happened.

- Bypassing security check to launch app, as in the "open anyway" is bugged since 2016, but it's still there. And you can click on it without it doing anything. You have to google the command to disable the whole app audit thing and run it in a terminal. (You know, the kind of stuff you had to do on Linux 10 years ago).

- Moving windows around is tedious without a third party app.

- Accessing the root file system through Finder requires googling how and running a command on the terminal (you know, the kind of stuff you had to do on Linux 10 years ago).

This list is just the annoyances noticed this week, and I'm sure I've forgotten quite a few. It feels like crap, and it's not because "apple bad, buu huu". I don't care about your team/my team. I just want things to work and not be annoying. Windows 10 and 11 is crap for many of the same reasons as MacOS. Just a different collection of bad designs. The "it just works" has been Linux for at least the last 5 years.

Re: The first conformant M1 GPU driver

#684
post #349

Earlier quoted context omitted.

RCS as a baseline standard is proprietary, but google then slapped a bunch of proprietary extensions onto it that it refuses to license, so no, it's not. https://arstechnica.com/gadgets/2022/08/new-google-site-begs... > Google's version of RCS—the one promoted on the website with Google-exclusive features like optional encryption—is definitely proprietary, by the way. If this is supposed to be a standard, there's no…

Thanks, glad I asked - I genuinely was not sure.

Sorry, it sounded snarky/pointed, that was more adversarial than was ideal. It really is hard to ask a question these days, if it's political...

Re: The first conformant M1 GPU driver

#685
post #611

Earlier quoted context omitted.

Why do people want her to stop working on Asahi so much?

Apple is not Google. She could hack on OSX AND Linux(in sparetime)

Even if that was true, most probably but she wouldn't.

But who knows, perhaps she might. I don't claim any privilege to her decisions, just offering probabilities around human endurance.

Re: The first conformant M1 GPU driver

#686
post #666
post #662

Earlier quoted context omitted.

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 functiona…

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"?

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.

Re: The first conformant M1 GPU driver

#687
post #592

Earlier quoted context omitted.

Apple's strategy for cross-platform GPU is WebGPU, which they are actively involved in. OpenGL has been obsolete for a while and Apple has no interest in supporting Vulkan (for multiple reasons). The core philosophy of Vulkan — which is designed as a least common denominator abstraction to facilitate fast driver development, with no regards to end developer convenience — is at odds with what Apple wanted (a compact,…

I was unaware that Apple was helping implement WebGPU! I actually love WebGPU, it looks great and pairs very nicely with three.js which is a favourite hobby tool of mine to use on pet projects. I can tell you have strong opinions on Vulkan. I don't disagree with your general view that it's hard to work with development wise as it's very tied down to driver and hardware implementation specifics. What I can say though,…

> I was unaware that Apple was helping implement WebGPU!

WebGPU is pretty much a combined Google/Apple effort (of course, with other contributors). If I remember correctly it was Apple engineers who proposed the name "WebGPU" in the first place.

> I can tell you have strong opinions on Vulkan

I really do, and I know that my rhetorics can appear somewhat volatile. It's just that I find this entire situation very frustrating. I was deeply invested in the OpenGL community back in the day and decades of watching the committees failing at stuff made me a bit bitter when it comes to this topic. We had a great proposal to revitalise open platform graphics back in 2007(!!!) with OpenGL Longs Peak, but the Khronos Group successfully botched it (we will probably never know why but my suspicion having conversed with multiple people involved into the process is that Nvidia was fearing to lose their competitive advantage if the API were simplified). Then we saw similar things happening to OpenCL (a standard Apple has developed and donated to Khronos btw.).

I am not surprised that Apple engineers (who are very passionate about GPUs) don't want anything to do with Khronos anymore after all this.

> What I can say though, is that I've met several pipeline rendering engineers (think folks who invent render engines for film and write low level game engine code) who seem to love Vulkan. They appreciate being able to really get down to the bare metal of the drivers and eke out the performance and conformity they need for the rest of the game or render engine.

But of course they are. OpenGL was a disaster, and it's incredibly frustrating to program a system without having a way to know whether you will be hitting a fast path or a slow path. We bitterly needed a lower level GPU API. It's just that one can design a low level API in a different ways. Metal gives you basically the same level of control as Vulkan, but you also have an option of uploading a texture with a single function call and have it's lifetime managed by the driver, while in Vulkan you need to write three pages of code that creates a dozen of objects and manually moves data from one heap to another. I mean, even C gives you malloc().

Vulkan gives me an impression that it was designed by a group of elite game engine hackers as an exercise to abstract as much hardware as possible. Let's take for example the new VK_EXT_descriptor_buffer extension. This allows you to put resource descriptors into regular memory buffers, which makes the binding system much more flexible. But the size of descriptors can be different on different platforms, which means you have to do dynamic size and offset calculation to populate these buffers. This really discourages one from using more complex buffer layouts. They could have fixed the descriptor size to say, 16 bytes, and massively simplified the entire thing while still supporting 99% of hardware out there. Yes, it would waste some space (like few MB for a buffer with one million resource attachment points), and it won't be able to support some mobile GPUs where a data pointer seems to require 64 bytes (64 bytes for a pointer!!! really? You make an API extremely complicated just because of some niche Qualcomm GPU?) And the best part: most hardware out there does not support standalone descriptors at all, these descriptors are just integer indices into some hidden resource table that is managed by the driver anyway (AMD is the only exception I am aware of).

In the meantime, structured memory buffers have been the primary way to do resource binding in Metal for years, and all resources are represented as 64bit pointers. Setting up a complex binding graph is as simple as defining a C struct and setting its fields. Best part: the struct definition is shared between your CPU code and the GPU shader code, with GPU shaders fully supporting pointer arithmetics and all the goodies. Minimal boilerplate, maximal functionality, you can focus on developing the actual functionality of your application instead of playing cumbersome and error-prone data ping pong. Why Vulkan couldn't pursue a similar approaches beyond me (ah right, I remember, because of Qualcomm GPUs that absolutely need their 64-byte pointers).

The thing is, this all works for a middleware developer, because these are usually very skilled people who already have to deal with a lot of abstractions, so throwing some API weirdness in the mix can be ok. But it essentially removes access from the end developer (who is passionate but probably less skilled in low-level C), making large middlewares the only way to access the GPU for most. This is just a breeding ground for mediocrity.

Re: The first conformant M1 GPU driver

#688
post #211

Earlier quoted context omitted.

> In my experience, Apple doesn't like any standards it doesn't control with an iron fist I would add some nuance to this statement: "Apple likes open standards when it is weak." The iMac and early OS X went big on open standards, and Jobs made a point of pointing this out: USB for the iMac, JPEG, MPG, mp3, Postscript etc for OSX. IP/TCP built in. They even paid the danegeld for .rtf. Then as they clawed their way ba…

You might actually expand "Apple likes open standards when it is weak" to "companies likes open standards when they are weak." Generally speaking you get standards consortiums when there is a clear winner that is mopping up the space. Here's an example that's happening right now: Nvidia-NvLink-Infiniband. Nvidia owns the highspeed interconnect inside the chassis (HGX), the NICs (Mellanox), the inter-host interconnect…

> losers joining together to compete

You are saying it like it is something bad. Competition is good for consumers, and I cheer any means to spin up, sustain and heat competition.

Re: The first conformant M1 GPU driver

#689
post #237

Have been eying a MacBook Air 15-in (M2), and wondering on the possibility of running Linux on it. Anyone had success, or failure, on doing this themselves? And, how hard will it be to port this M1 GPU driver to the M2?

I am running Asahi on a 13” MacBook Air M2. The only real show stoppers are that the speakers and sleep/hibernation don’t work. Otherwise completely usable. WiFi, Bluetooth and all they keyboard functions like setting screen brightness work. There is no support for TouchID, either, which is somewhat obvious.

In my opinion it’s ready to be a daily driver if you can stand using Arch or Fedora. I’m waiting for a Debian version, personally (there’s some instructions on getting it going already but I haven’t tried yet).

Re: The first conformant M1 GPU driver

#690
post #603

Earlier quoted context omitted.

> There is basically no point plugging an iPhone in to a computer ...if your computer runs MacOS. I was surprised to see how unnecessarily annoying it is to transfer videos and photos from an iPhone to a Windows PC.

It’s pretty easy to move files on and off the iPhone using a usb/portable ssd and the files, hardest part would be you need a usb to lightning otg cable which is somewhat uncommon. It’s the kind of thing you don’t really do if you follow the apple flow though. You’d either stream the video from whatever service, or you sync it with apple photos and it will be available on your phone.

When I plugged in the iPhone via cable to my Windows PC, I could only extract pictures which were taken recently, god knows why.

Apple officially recommends to install iCloud on the PC and download the files from there, but they didn't let me disable the upload of the files on my PC, so I uninstalled iCloud again.

Then the recommendation was to just download it from iCloud Web. Which I did. But for some reason iCloud downloads default to a lower resolution (720p video in my case) instead of the full resolution. To do this I had to click on a small button, which then gave me the option to download my own files in full res.

Of course I only noticed that I'd downloaded a lower res after editing a video for 5 hours. All in all, an extremely subpar experience. Every Android phone ever can just transfer files over cable to any PC, for some reason just iPhones have to be complicated...

Post reply on HN