My goal is ultimately to learn more about GPU architecture and graphics driver development. I'd like to try implementing a 2D kernel space and user space driver, as I've been advised that that is a much easier project when familiarizing oneself with driver development. (I have no driver or kernel dev experience and little linux experience. I've been a OS X developer my whole life however, so I am familiar with the unix environment).
My problem is two-fold:
(1) I'm struggling to find a hobbyist-oriented linux box on the market that uses a well-documented graphics card, or for that matter finding any kind of documented GPU. I'm looking for something with a similar price point as the BeagleBoard (which uses the closed-source PowerVR SGX). If something like that doesn't exist, I believe my only other alternative may be to work with the much more complicated Sandy Bridge integrated chip, as I have one in my laptop and it seems to be well (but tersely) documented at intellinuxgraphics.org.
(2) Given either direction I go with in point 1, I'm still vague on how to actually communicate with a graphics card. After some digging in the intel linux drivers, it seems that it all boils down to essentially libdrm (which I believe to be the kernel space API vendors must implement for each card...?) calling ioctl on a file in /dev corresponding to the graphics card. Is that correct?
Thank you to anyone who can shed some light on my questions and help me along!
My problem is two-fold:
(1) I'm struggling to find a hobbyist-oriented linux box on the market that uses a well-documented graphics card, or for that matter finding any kind of documented GPU. I'm looking for something with a similar price point as the BeagleBoard (which uses the closed-source PowerVR SGX). If something like that doesn't exist, I believe my only other alternative may be to work with the much more complicated Sandy Bridge integrated chip, as I have one in my laptop and it seems to be well (but tersely) documented at intellinuxgraphics.org.
(2) Given either direction I go with in point 1, I'm still vague on how to actually communicate with a graphics card. After some digging in the intel linux drivers, it seems that it all boils down to essentially libdrm (which I believe to be the kernel space API vendors must implement for each card...?) calling ioctl on a file in /dev corresponding to the graphics card. Is that correct?
Thank you to anyone who can shed some light on my questions and help me along!