I would like to build on top of OpenGL 1.1 (MS S/W implementation) where I can get the H/W acceleration that I need for very specific OpenGL function calls, and leave the software implementation for the remainder of the calls. Does anyone have any knowledge of how to do this – or if it is even possible?
To my knowledge there is no such hybrid implementation where you would be able to chose between S/W and H/W on a per-call level. The OpenGL specification itself has no provision for this kind of thing.
Either it is pure software (MS or MESA ), or it is H/W accelerated (what is usually called “OpenGL driver”) and of course you don’t have control over what happens here. You send commands through the API, and the implementation (==driver) does whatever it wants as long as it respects the specified behaviour. That’s the very point of an API.
Note that OpenGL drivers are hybrid, ie some commands are executed in software (within the driver) and some use the GPU, but you don’t have control over which goes where.
Thanks for the info. So, if I write a driver (I am a driver developer, just not yet an OpenGL driver developer) for OpenGL, and I want to perform some of the calls in S/W and some in H/W, then I have to implement all of the S/W calls myself? I was hoping to be able to use MS implementation for the S/W implemented OGL calls, and write my own definitions for the H/W accelerated ones. Could I take MESA and re-write some of the calls to use hardware?
Yes I think you could take Mesa as a base and re-write parts that you need accelerated. For these accelerated parts, you could use existing APIs, ie D3D or OpenGL. In this case you are merely writing a special wrapper. Ohterwise you end up writing a true driver which requires specific knowledge about the hardware, and you won’t find this information anywhere for marketed GPUs.
Note that there might be licensing/legal issues with this kind of project (if you re-use Mesa source for example).
This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.