Quote:Original post by outRider
All you need to do is write a kernel module that can initialize the card and exports a suitable API to userspace. This API will need to provide things like creating objects in the case of Nvidia, or whatever the equivalent is for AMD and Intel cards, memory management, and submitting command buffers. Then on the userspace side you'll have to use that API to create a suitable context and then you can start filling command buffers and dispatching them to do what you want.
So basically you'll have to write an entire driver. Good luck.
"All you need to do" heh. Anyway, that's great and all, but it's not like there will have to be a driver per manufacturer (1 for intel, 1 for nVidia, 1 for AMDTI). More like, 1 per card that they came out with... and that's a lot of cards.
Even if the OP managed to write some super-optimized radiosity renderer going directly to hardware by way of a self-written kernel-mode driver, it'll work with and only with the card he wrote it for, and not for the other gazillion billion million gfx cards out there.
This is an unarguable reason as to why he should trust the black box of OpenGL or Direct3d - unless of course he only wants it to work on his gfx card.
... Not to mention the fact that the driver written by the same company that made the gfx card (note the singular form of that word "card") will probably do things safer and better anyway... but there's always the
slight chance (anything's possible) that the OP could possibly know the card and its quirks better than they do...
Cheers
-Scott