Hi OS Dev,
I'm working on a 3D driver for a Kaby Lake (gen 9.5) integrated GPU on an old chromebook, and plan to document my process on the wiki. Right now I have coreboot on the chromebook which sets up display registers (and I take the framebuffer address to write out the debug log) and then my multiboot2 kernel image is loaded by GRUB.
I'm taking information from the linux i915 driver, mesa's blorp `blorp_genX_exec.h`, and the intel PRMs, but am looking for more if anyone know more sources!
Right now I have force-wake to wake up the render command streamer, and then ringbuffer commands executing (I know they are all executed because it reports the ID of last executed NOP instruction). I've also parsed mesa's `genxml` into code that I use to pack the commands into the ringbuffer.
I'm kind of stuck on the actual 3D pipeline though... Trying to read statistics registers to at least make sure the Vertex Fetcher is reading vertices just returns zero. I might take an actual batchbuffer binary dump from mesa to see if that does something different, but mostly I'm at a loss for what to debug next.
Mostly asking for any other implementations people know of, or just words of advice/encouragement!
Thanks in advance.
p.s.
I checked through the forums and found @8infy 's post about an experimental intel graphics driver (but couldn't find any code)... I don't know how to Direct Message people on this forum so if you see this I would love to get in contact with you!