5 ms·
Good thing SPIR-V approach prevailed, despite Apple trying to derail it.
by shmerl 7y ago
Good thing SPIR-V approach prevailed, despite Apple trying to derail it.
- kvark 7y agoThere is no resolution for this question yet, too early to celebrate anything.
- shmerl 7y agoAh, I see, thanks for clarifying. I misread the post then, since it mentioned SPIR-V. Too bad Apple not only refuse to support Vulkan, but try to prevent using SPIR-V as well.
- kvark 7y agoThey just want to make sure we aren't depending on Khronos too much. It's a reasonable thing to want for the group. As for Firefox, the WebGPU implementation uses the infrastructure we have for Vulkan Portability, and so consuming SPIRV is natural.
- pjmlp 7y agoWhat I care about is having a modern shading language not stuck being a C dialect, and good GPGPU debugging. If whatever Apple does forces Khronos to be more innovative, moreso the better. Without CUDA's winning strategy regarding multi-language support, SPIR-V and SYSCL would never had happened.
- deleted 7y ago[deleted]
- pcwalton 7y agoMetal Shading Language is a C++ dialect. HLSL is as much of a C dialect as GLSL is. And I would argue that C++ provides no benefits over C for shading languages. I prefer GLSL to Metal Shading Language.
- pjmlp 7y agoThankfully all proprietary shading languages have moved on from GLSL. Indeed, I really appreciate MSL being a C++ dialect.
- shmerl 7y agoMoved but remained proprietary. So the problem is not solved. Language shouldn't be proprietary to begin with. It's an obsolete and invalid practice from the last century.
- pjmlp 7y agoApparently not, given the monthly occurrence of FOSS projects that decide to go dual license, or even back to proprietary, because this century practice doesn't cover their existence and life responsibilities.
- shmerl 7y agoFor languages? That's a dead end really. That's why whatever Apple will produce will also be dead, as long it's proprietary. Apple is stuck in that mentality and has hard time getting out of it.
- TazeTSchnitzel 7y ago> a modern shading language not stuck being a C dialect SPIR-V allows you to compile from whatever you want, and avoids the hideously complex beast that is C++ needing to be part of the browser's API.
- fulafel 7y agoThe track record of industry GPU language development is very poor (arguably even disastrous). I worry that we now just count on nice languages / compilers magically appearing deus ex machina, and we end up not having any. Big multiplatform frameworks like Unity will just put a SPIR-V backend on their existing tooling. The rest of us will be stuck with POC-quality GLSL transpiler tools, without the browser devtools and other tooling support that we slowly got over the ~10 years of WebGL history. (I'm not saying GLSL is that excellent, just that could be heading backwards from current almost-good-enough GLSL implementation quality in WebGL.)
- pjmlp 7y agoYou already see this with Vulkan, where many studios opt for middleware engines instead of having to deal with all boilerplate themselves. You see this on Android and Switch, where most Vulkan related stuff, is based on Unreal and Unity tutorials.
- deleted 7y ago[deleted]
- Jasper_ 7y agoDuring Metal Shading Language's development, there were multiple opportunities to engage for Apple to open up their shading language toolchain, and make MSL a standard that would be respected by multiple people. They ignored that advice, and now lots of people grumble about writing MSL. It is, in many people's eyes, a quite decent shading language, but it's "different enough" and for a niche enough platform (in the games world) that it pays the price heavily. Tooling is pretty abysmal, and GPU debugging in Xcode is not the greatest experience. Now, with that said, Apple did not propose MSL to the WebGPU working group either. Apple originally proposed a hilariously underspecified fork of HLSL called WHLSL which had three goals: 1. Be a safe shading language for the web, 2. Be compatible with existing HLSL content, 3. Add pointers. Nobody ever justified the existence of that last one to me or the rest of the group, other than making the Metal implementation slightly easier for Safari, since Metal's binding model is based on pointers, and coincidentally, the Safari pre-release only supported binding pointers, and not the standard HLSL way of doing things. But still, the WHLSL proposal was interesting to a lot of people because HLSL seemed like a good language to start from. After a lot of debate, Apple secretly went back to the drawing board, and released a revised version of the language, WSL, which dropped the goal of HLSL compatibility but still has pointers for some reason. Nobody has ever explained why it has pointers, despite everyone continuing to ask. The goals are still there if you want to read them [0]. https://github.com/gpuweb/wsl#goals https://github.com/gpuweb/wsl#goals
- pjmlp 7y agoGiven the quality of Khronos SDKs and stubborness to C bindings, that might not be a bad thing. As they have learned the hard way with OpenCL, most devs like to be pampered with modern toiling. Heck, it is thanks to Microsoft that we have glTF 2.0, and NVidia for any kind of usable C++ Vulkan bindings.
- shmerl 7y agoUsing C bindings you can plug in any language you want, C ABI is simple. Try that with C++ or anything of the sort, and you'll be in trouble. If you want to improve quality - anyone can contribute and improve, instead of like Apple trying to sabotage and derail.
- edflsafoiewq 7y agoIt's not so easy to contribute to Khronos.
- shmerl 7y agoSurely easier than collaborating with Apple who are extreme lock-in proponents. See for example projects like dxvk, which affected Vulkan spec: * https://www.youtube.com/watch?v=1fU4w2ZGxH4&t=12m21s https://www.youtube.com/watch?v=1fU4w2ZGxH4&t=12m21s * http://jason-blog.jlekstrand.net/2018/10/transform-feedback-is-terrible-so-why.html http://jason-blog.jlekstrand.net/2018/10/transform-feedback-... Good luck for such thing happening with anything Apple related.
- exDM69 7y agoSpec development? No. But for bug reports, debugging and fixing bugs in the shader compiler, validation layers, etc they are pretty responsive to issue reports and pull requests.
- deleted 7y ago[deleted]
- 7y ago
- AlexMax 7y agoDid SPIR-V actually "prevail", or is Apple going to continue implementing WSL regardless of where the standard goes?
- shmerl 7y agoNot sure really. Apparently it's not yet resolved, which means Apple are still trying to derail things.
- gfxgirl 7y agoI'm not entirely convinced spriv is good for webdev. imagine the only way to code in a browser was to use an offline compiler to emit byte code. some people might like that but I'd argue there have been many indirect benefits to having the text version of JavaScript be the default on the web. sure there will be workarounds like building your own DSL to spriv compiler and including it on your page but I'd argue a standard high level text format leads to more collaboration / standardization / interop / knowledge sharing I'm sure others would prefer the web had just started as sandboxed assembly
- shmerl 7y agoSPIR-V already has a lot of collaboration, and will provide natural synergy with non Web use cases, since it's the standard bytecode format for shaders there already. So collaboration argument goes for SPIR-V here. Human readability of the shader shipped from the page is a different argument, and it can have some merit, but the same could be argued against using WebAssembly for instance which is not very human readable in comparison with JavaScript. I don't think it's a strong argument against using it.
- Jasper_ 7y agoI've had enough experience with deploying GLSL on many Android devices and also WebGL to be disillusioned with it. There's no great modern textual shading language out there, GLSL is missing a lot of modern niceities, HLSL isn't really an "independent language" (could talk more about that), and Apple's WHLSL/WSL proposal is drastically underspec'd to the point of hilarity. I think if you want to compile shaders from source, you are free to include your favorite transpiler as WebAssembly, like glslang. That's currently what I'm doing for my WebGPU prototype project.
- tomjakubowski 7y agoAs someone who's only used GLSL of all the shader languages, what are some of the modern features it's missing?
- Jasper_ 7y ago
- deleted 7y ago[deleted]