Hacker News new | ask | show | jobs
by yoklov 4405 days ago
The reason for this is that graphics cards have evolved to be enormously complex.

Every (well, hopefully) graphics engineer knows how the data goes over the wire into the graphics card, and understands the stages of the graphics pipeline (or at least the ones that matter for the version of OpenGL/D3D they're targetting).

Yes, the relative complexity of the graphics pipeline means that there's much more potential for errors from the driver, but I'm not sure it's productive to say 'this is too complex' when there isn't a simpler way to get the same results.

1 comments

IMO the complexity is only half the problem- humans are really not very good at thinking like a GPU. Most people have to be trained to be able to think massively parallel, and it's also hard to work with a device that is so bad at conditional branching.

So, one of the roles of the API is a sort of a deserializer, converting our human, linear, serial way of thinking to the GPU's parallel world.

I don't think OpenGL or D3D or 3D programmers deal with 'parallelization' much. There are very common things that have to be done that in reality are mathematically parallel, but are basically one unit in the API, such a texture, or geometry surface and transformations. It is true complexity, in multi-graph fashion. So, even if we didn't have massively paralle GPUs, we would still come up with same exact abstractions, not because we are not good at thinking massively parallel, but because there is no need to rewrite a loop over a matrix a billion times.