A Developer Hacked AMD's GCN GPUs To Run Custom Code Via OpenGL
A Phoronix reader pointed out an interesting slide deck that's gone relatively unnoticed up until now about a game developer "Hacking GCN via OpenGL" for allowing some interesting possibilities.
Tomasz Stachowiak, a developer at Frostbite Games in Sweden, posted some slides recently about this hacking of GCN (Graphics Core Next) via OpenGL code. Tomasz was looking to take full control over shader code and be able to feed hardware-specific ISA to the GPU without being bound by the bytecode of DirectX or Vulkan, etc. He's exploring possibilities like self-modifying shaders, shader sub-routines, and more.
His GCN "hack" involves using OpenGL's ARB_get_program_binary extension, cheating a CRC function of the driver, and then passing custom ISA to the GPU. The ISA is put into a buffer and the hacked shader causes the AMD GCN GPU to jump to that buffer and execute.
Among the future items he or others may explore is for generating code on the GPU, custom shader compilers, and a GPU-based OS. This is all the short story, go see his 50+ slides for all of the technical details.
Tomasz Stachowiak, a developer at Frostbite Games in Sweden, posted some slides recently about this hacking of GCN (Graphics Core Next) via OpenGL code. Tomasz was looking to take full control over shader code and be able to feed hardware-specific ISA to the GPU without being bound by the bytecode of DirectX or Vulkan, etc. He's exploring possibilities like self-modifying shaders, shader sub-routines, and more.
His GCN "hack" involves using OpenGL's ARB_get_program_binary extension, cheating a CRC function of the driver, and then passing custom ISA to the GPU. The ISA is put into a buffer and the hacked shader causes the AMD GCN GPU to jump to that buffer and execute.
Among the future items he or others may explore is for generating code on the GPU, custom shader compilers, and a GPU-based OS. This is all the short story, go see his 50+ slides for all of the technical details.
27 Comments