OpenGL mapping to GPU HW low-level details (and OpenCL)

I’m looking for information (relevant posts, journal publications, developer guides, textbooks, open source reference implementations?..) which discuss HW details of various elements of the OpenGL programming model, such as

  1. shaders - how does the shader compile to machine-specific code, and how are shaders scheduled on the GPU (and is it different for a vertex vs fragment vs compute shader etc)?
  2. buffers/textures - how and where do OpenGL buffers, textures get placed in GPU memory and accessed from within shader code, how is the GPU memory hierarchy (registers, L1/L2/… caches, local, global device memory regions) utilized in these processes?
  3. HW fixed-function details - how is a tri-linear interp unit designed and operate? where are textures really placed in memory (and how/why is access faster for this than for “general” buffer memory… more parallel access banks, memory locality, different memory arch (SDRAM, DDR1/2/3/4, etc)) ?
  4. Also interested in how OpenGL implementation for shaders/compute-shaders differs from OpenCL compute kernels in terms of GPU HW utilization.

I realize a lot of these details for current HW is proprietary guarded IP, but even older “obsolete” HW which could give basic insight will be useful. Intel has the open-source Beignet and NEO driver projects which provide some of this information for OpenCL API. I haven’t looked at the Mesa project yet, but wonder how relevant that will be as SW-implementation.

I teach 2 EE Master’s classes at UW on GPU-Compute (OpenCL-based) and Scientific Visualization (OpenGL-based), and this information would be very useful for the curriculum and students.

VR,
Dr. Colin Reinhardt
University of Washington, Electrical and Computer Engineering Dept.

1 Like

Some of this information AMD have posted on their GPU Open site. (Not allowed to include links a search for GPU Open AMD should do you)

But as you also said, some of it is guarded IP or just contained inside the drivers system (like (1)) and will/can be different between vendors and even driver versions.

1 Like