5/20/2025 at 9:16:42 PM
That's from the period when there was no standardization of how the CPU talked to the graphics device. Triangles or quads? Shared memory or command queues? DMA from the CPU side or the graphics device side? Graphics as part of the CPU/memory system or as part of the display system? Can the GPU cause page faults which are serviced by the virtual memory system?Now we have Vulkan. Vulkan standardizes some things, but has a huge number of options because hardware design decisions are exposed at the Vulkan interface. You can transfer data from CPU to GPU via DMA or via shared memory. Memory can be mapped for bidirectional transfer, or for one-way transfer in either direction. Such transfers are slower than normal memory accesses. You can ask the GPU to read textures from CPU memory because GPU memory is full, which also carries a performance penalty. Or you can be on an "integrated graphics" machine where CPU and GPU share the same memory. Most hardware offers some, but not all, of those options.
This is why a lot of stuff still uses OpenGL, which hides all that.
(I spent a few years writing AutoCAD drivers for devices now best forgotten, and later trying to get 3D graphics to work on PCs in the 1990s. I got to see a lot of graphics boards best forgotten.)
by Animats
5/20/2025 at 9:26:15 PM
And that was an evolution of earlier 2D cards where you had a potential mixture of CPU-addressable framebuffer and various I/O ports to switch modes between text and raster graphics, adjust video modes in DACs, adjust color palette lookup tables, load fonts for text modes, and maybe address some 2D coprocessors for things like "blitting" (kind of like rectangular 2D DMA), line drawing, or even some basic polygonal rendering with funny options like dithering or stipple shading...by saltcured
5/21/2025 at 5:26:13 AM
It all started with the 8514/A... and maybe a bit of the VGA too.by userbinator
5/21/2025 at 10:39:45 AM
Did you ever play around with the Matrox Digisuite SDK for DirectX for real time video processing, that had a visual data flow programming language interface for its video processing nodes that would execute inside the gpu?https://video.matrox.com/en/about/history-of-innovation
>1996: Matrox launches the Matrox Genesis Series vision processor, and with its highly pipelined, parallel-processing architecture, establishes a new performance industry standard.
>The company also introduces Matrox DigiSuite, the first affordable all-digital system for real-time, non-linear editing. The award-winning DigiSuite breaks new ground in offering a full set of professional-quality editing and effects capabilities. DigiSuite becomes the world's best-selling professional video editing card.
by DonHopkins
5/21/2025 at 3:54:27 AM
And that is because of that low level exposure, and extension spaghetti, that Khronos finally acknowledged at Vulkanised 2025 that adoption didn't went on as expected, and there is now a roadmap being put into place on how to improve the whole situation.The talk being "The Road to The Future".
by pjmlp
5/21/2025 at 5:47:35 AM
Just looked at that roadmap.[1] Good to know they are thinking about that.I've discussed this in the context of Rust renderers. There are about four of them, and they all sit on top of Vulkan and export roughly similar APIs. The API is roughly comparable to three.js - meshes, textures, materials, lights, shadows, and updating are supported. They all get to the point where they can load static glTF scenes, and then the devs hit the hard concurrency problems and bail.
That's a much more comfortable level for users who need to get something done in 3D. Vulkan level belongs to people who write engines.
Getting off topic, though. This is not a retro problem. This is a current problem.
Further discussion on the Vulkan roadmap request for comments on Discord, here.[2]
[1] https://vulkan.org/user/pages/09.events/vulkanised-2025/T2-T...
[2] https://discord.com/channels/427551838099996672/115155677637...
by Animats
5/22/2025 at 7:16:46 PM
> This is why a lot of stuff still uses OpenGL, which hides all that.Kind of. If you go look, they usually load extensions, which expose more hardware functionality.
by nitwit005