View Full Version : Suggestion by a poster named efikkan

02-18-2015, 08:17 AM

Quote Originally Posted by Szzz View Post
I'm interested in how much will it be "and compute", may it also be a replacement for OpenCL as well?
GLSL currently have like 6 different shader types, and then we have OpenCL. There is really no reason why we should have so many of these, so in essence what we really need is a C GPU language you can use for anything, either graphics, compute, audio, DB, etc. The problem with Direct3D, OpenGL, Mantle and OpenCL is that they rely on massive amounts of API calls. We need to abandon this draw call methodology and move this functionality into the GPU programs and let the programmers design the pipeline themselves. Just reducing some of the overhead to allow more draw calls is not the solution, working towards removing most of the API calls is the only solution. Bindless graphics extensions is a tiny step in the right direction, and those of us who are familiar with the technology knows it can multiply the VBO performance. Mantle is on the other hand a step backwards.

Quote Originally Posted by gens View Post
just to make it clear
you can get the same great visuals with dx9, 10, 11, opengl 2.1, 3.x, 4.x
only bigger differences are the geometry shader introduced in gl3.2 and dx10, and tesselation shader introduced in gl4.x/dx11
(that can be done but would be slower; and have no impact on most things)
Shader model revisions are not primarily about better graphics per se, but more efficient utilization of modern advanced GPUs. Shader models has over the years gradually removed the need for huge amounts of API calls for each manipulation. Remember both OpenGL and Direct3D was designed at a time when CPUs were very flexible compared to the slow GPUs, and they still retain much of this legacy today. "Shader model 4" (Direct3D 10/OpenGL 3.x) was primarily about GPUs are programmed, that's why games needs to be redesigned in order to work well with Direct3D 10/11 or OpenGL 3/4, direct ports will probably perform worse than Direct3D 9 or OpenGL 2.x (we all remember Crysis, right?).

Quote Originally Posted by gens View Post
just to make it clear
mantle, glnext and probably also dx12 are there to reduce driver overhead by reducing abstractions

although you can get very low driver overhead with gl4.x and fairly low with 3.x
the catch being that it's not that obvious what you have to do, and it looks uglier then it should
What's ugly about Direct3D, OpenGL and OpenCL is the rigid way you program the GPU. You bind the input data (textures, VBOs/meshes and other buffers) to specific units, you request a set of operations to be performed on the data, and you wait for a result. On the other hand, bindless graphics (see above) makes GPU programming more like programming normal C code on the CPU. Then you can refer to VBOs or texture data directly inside the GPU program using pointers instead of making the CPU go through the driver to bind it inefficiently.

This will hopefully spark an interesting discussion.