11 ms·
Raspberry Pi 4 V3DV graphics driver achieves Vulkan 1.0 conformance
- zeckalpha 6y ago> Vulkan 1.0 conformance means the V3DV Mesa driver has passed all tests from Khronos CTS and should be compatible with most applications using this version of the API.
- rixrax 6y agoNoob question - is there a quick summary somewhere why Vulkan is better than e.g. OpenGL? Whats different? And what kind of performance enhancements one should expect when using Vulkan?
- cgufus 6y agoIsn't Vulkan just the new name for the efforts that historically went into OpenGL?
- pja 6y agoIt’s a clean slate API by the same industry group that’s lower level than OpenGL.
- tarruda 6y agoAnswer from another noob: AFAIK it is not about being better, but lower level. Being closer to how GPUs work underneath gives developers more flexibility for optimizing.
- GreenHeuristics 6y agoOften it has been that Vulkan is closer to how GPUs work simply due to GPU manufacturers having to change their GPUs to work well with Vulkan. To for example add a co-processor to the GPU so that it can do job scheduling in a more Vulkanish way. Vulkan was after all a spec from one GPU manufacturer (AMD), there are a handfull others with their own archs developed with their own assumptions.
- cma 6y agoMantle was the single GPU manufacturer API, Vulkan was based on Mantle, but its creation had input from all the major vendors including Nvidia.
- GreenHeuristics 6y ago'had input' = can be accepted, not 'is also based on'
- grishka 6y agoAs I understand it, Vulkan allows the application much more control over the rendering pipeline, whereas OpenGL has a lot of internal state you control indirectly.
- gchadwick 6y agoOne issue with OpenGL is it was originally designed in the 90s when modern GPUs didn't exist. Whilst the API has evolved since then there was a reticence to chunk it all away and start again with a clean slate, or at least have a radical resdesign (something DirectX didn't shy away from). Vulkan is built based on modern GPU architecture as well as being lower level then OpenGL. This makes it easier to get the best out of the hardware.
- jpm48 6y agoOpenGL is single threaded with a single state machine (ok there are some atomic supports via extensions). Vulkan allows you to manage the stream so you can multi-thread. This allows you to update more that 1 state at a time, for example in OpenGL loading textures and mesh data at the same time can't happen easily. In vulkan you can tune this yourself. (this is a very simplistic example). I usually say that Vulkan is more akin to you writing the graphics driver. Where as OpenGL gives you the driver.
- GreenHeuristics 6y agoOpenGL supports multi-threading via creation of multiple contexts, sharing resources (textures, shaders etc) between them.
- jpm48 6y agoVertex array objects are not which can be a bit of a pain.
- chubs 6y agoThis is what sets the raspberry pi apart from all other SBCs in my experience: software support. Kudos, this is fantastic stuff! Will love to see the ecosystem of stuff that springs up that takes advantage of this.
- StreamBright 6y agoI wish there was a multi CPU RPI board with M2 option. Sort of like this one: https://www.solid-run.com/nxp-lx2160a-family/clearfog-cx-lx2160-carrier/ https://www.solid-run.com/nxp-lx2160a-family/clearfog-cx-lx2...
- MisterTea 6y agowe're pretty much there. The new pi 4 compute module breaks out the pcie bus. The official pi4 compute base board routes that to a standard pcie x1 slot instead of USB 3.0 which is a massive win in my book (hello more ethernet/sata/fpga/nvme/etc). It's a baby Arm mobo with pci and I'm a little excited :-) I have a pi4 compute + base board on pre-order plus I just bought a pcie x1 m.2 M-key card off amazon. I plan to use the SD card (emmc on my model) to boot a kernel and use the m.2 card for storage. I think the pi foundation finally realizes that the pi has the potential of becoming an affordable and accessible SoM (system on Module) with a huge community behind it.
- StreamBright 6y agoAlmost! :) Not sure about the IO performance of this solution. > The official pi4 compute base board routes that to a standard pcie x1 slot instead of USB 3.0 Do you have more info on this? I am not sure how it works.
- aseipp 6y agohttps://www.raspberrypi.org/products/compute-module-4-io-board/ https://www.raspberrypi.org/products/compute-module-4-io-boa...
- 6y ago
- jimduk 6y agoDumb question - if I want to do simple image processing on a pi4 (2d ffts, small kernels, summing 2d arrays in one dimension, finding Maxima), and I care about performance, is this a reasonable stack to use,with decent prospects or is it faster/safer to stick on the Arm, despite the GPU. 1k x1k monochrome images, at 3-10 fps ( or more)? Jetson nano seems to be the obvious commodity but pricier alternative with GPU access, but smaller ecosystem.
- Const-me 6y agoAn extremely rough estimate, FFT (prolly the most expensive one of what you mentioned) needs 5N*Log2(N) operations. If you have 1M source floats and want 60 FPS, translates to only 6 GFlops. On Pi4, on paper the GPU can do 32 GFlops. Again on paper, the CPU can do 8 FLOPs/cycle which translates (4 cores at 1.5 GHz) to 48 GFlops. That’s assuming you know what you’re doing, writing manually-vectorized C++ http://const.me/articles/simd/NEON.pdf http://const.me/articles/simd/NEON.pdf abusing FMA, using OpenMP or similar for parallelism, and have a heat sink and ideally a fan. So you’re probably good with both CPU and GPU. Personally, I would have started with NEON for that. C++ compilers have really good support for a decade now. These Vulkan drivers are brand new, and GLES 3.1 which added GPGPU is not much older, I would expect bugs in both compiler and runtime, these can get very expensive to workaround. While I don’t have any experience with Jetson, on paper it’s awesome, with 472 GFlops. Despite the community is way smaller, nVidia is doing better job supplying libraries, CUDA toolkit has lots of good stuff, see e.g. cuFFT piece (I did use CUDA, cuFFT and other parts, just not on Jetson).
- gary_0 6y agoIt still gives me a giggle that the flops numbers you're talking about were supercomputer-level when I was a kid, and now I can buy that kind of power with beer money and lose it in the back of a drawer.
- Const-me 6y agoOn the other hand, it’s sad how we failed the software. We have devices capable of many GFlops in our pockets and many TFlops on our desks, yet we pay by hours to use computers operated by companies like Amazon or Microsoft.
- qwerty456127 6y agoWhat games can I play on it this way?
- nacnud 6y agoGood question, does this mean my family's holy grail of performant Minecraft on a Pi is coming closer?
- qwerty456127 6y agoI actually wish there was a more powerful Raspberry PI. Whenever you say you want more powerful the answer is the current way it's primary goal is to be affordable and its primary target audience are schools etc. E.g. The standard version of the Pi 400 with 4 GB covers most (consumer / school children / students) application purposes. 8 GB are rather needed in the area of video editing / prosumer / server, and would bring the price significantly above the „magic“ 100 € limit.[1] The vendor just doesn't want to acknowledge the real role of Raspberry Pi is not limited to being a cheap tinkerer board anymore, it has became a standard (for an ARM PC and a hackable set-top-box/console in particular) and a vibrant ecosystem has grown around it - there are plenty reasons to still want a Raspberry Pi original (rather than something the competitors offer) when you don't need it to be so cheap (or even so small) but actually need more power, faster IO, more ports, more GPIO pins etc. [1] https://pi3g.com/2020/11/04/will-the-raspberry-pi-400-be-available-in-an-8gb-version/ https://pi3g.com/2020/11/04/will-the-raspberry-pi-400-be-ava...
- rcarmo 6y ago"The vendor" is a foundation that has education at the center of its charter. https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation They are not doing this for profit, although they are self-financing at this point (from what I've read).
- mondoshawan 6y agoOstensibly, yes. But consider that Eben Upton is an ex-Broadcom guy that helped build videocore and that they get everything at cost, and it looks like an incredibly powerful PR move for Broadcom with side benefits.
- kzrdude 6y agoWhat software already supports vulkan (so that it in theory can just be "switched on" for rpi)?
- Const-me 6y agoThis GPU abstraction library can do that: https://diligentgraphics.com/diligent-engine/ https://diligentgraphics.com/diligent-engine/ Haven’t tested their Vulkan support, but I did GLES 3.1, D3D 11 and D3D 12, all 3 worked great for me.
- pjmlp 6y agoGreat! Now it just needs to support the extension salad up to 1.2.161. https://vulkan.gpuinfo.org/ https://vulkan.gpuinfo.org/
- m463 6y agoI've played around with the pi and pygame. Is there a way this will help with accelerated pygame graphics? (last I tried, all blits were in software)
- zurn 6y agoPygame still has no GPU/3d API support. But it can leverage NumPy arrays IIRC so that's accelerated (compared to pure Python code at least). At some point we'll have to migrate to new terms for "in hardware" for offloaded operations since we are no longer using fixed function hardware :)
- notpygame 6y agoYes, pygame can use the Pi graphics hardware. It supports vulkan, OpenGL, OpenGL ES, and some other modes through SDL2. Note, the CPUs on the Pi are faster than the gfx hardware, and gfx is usually memory bandwidth limited.
- hwc 6y agoThat's great! Is the driver also performant?
- zamadatix 6y agoQuake3 runs about 40% faster on this Vulkan driver vs the OpenGL driver. Not sure if that's particularly impressive for Vulkan or not but it does seem more performant than previous options on the Pi 4.
- pp19dd 6y agoDoes anyone have a good solid modern guide or pointers on making easy 3D stuff in text/CLI mode (not x-windows, etc), and hopefully using a convenient library? I'm trying to make a simple fast-booting instrumentation display. I picked up a Pi zero and muddled my way through what I could in C/C++ from piecemeal guides, and from text boot mode managed to initiate a graphics mode and draw a spinning triangle. Think I threw darts at the board for linking libraries in the compilation. I have no idea what I'm doing, and of course, the level of scaffolding that had to be put into a simple spinning triangle was just astounding. My prior experience was using three.js and BabylonJS, and poorly. Is there something convenient to use library-wise in text mode, or is a safer bet doing windows -> firefox -> three.js?
- erichocean 6y agoImGui [0] Immediate-mode UIs are by far the easiest for quick and dirty work. Near trivial to get stuff up on screen you can interact with. [0] https://github.com/ocornut/imgui https://github.com/ocornut/imgui
- pp19dd 6y agoThanks for the pointer, will check it out.
- Const-me 6y agoIf you’re OK with .NET, you can try my library: https://github.com/Const-me/Vrmac/ https://github.com/Const-me/Vrmac/ The library supports both X windows, and bare OS kernel DRM/KMS. Spinning textured cube: https://github.com/Const-me/Vrmac/tree/master/RenderSamples/03-Texturing https://github.com/Const-me/Vrmac/tree/master/RenderSamples/... Spinning teapot with lightning, inertia, mouse and keyboard input, etc: https://github.com/Const-me/Vrmac/tree/master/RenderSamples/04-Teapot https://github.com/Const-me/Vrmac/tree/master/RenderSamples/... Dependencies: https://github.com/Const-me/Vrmac/blob/master/Installation.md#raspberry-pi https://github.com/Const-me/Vrmac/blob/master/Installation.m...
- pp19dd 6y ago