I am an experienced C programmer with a basic understanding of OpenGL. I have designed a multimedia service that runs on a pure Ubuntu server (no Xorg installed) running on high-end server hardware. This multimedia service currently performs various functions dealing with streaming video and audio. I am interested in optimizing some of my video manipulation code using hardware-accelerated OpenGL.
I am familiar with FBO's and this is what I intend to use for all of my rendering. The idea is for the service to grab a video stream, perform some hardware accelerated modifications to it using various shaders and matrix operations, then load the rasterized pixels back into memory to be re-streamed to another device. The CPU is a precious resource in this case which is why I am trying to offload some of this work to the GPU and by no means involve Xorg.
Here are a few questions that I have:
1. How can I execute OpenGL's rendering engine in a pure server without any Xorg overhead? All examples I have require a device context from a windowed environment, but that is not applicable in my case. It would be great if some example code can be provided.
2. The extent of OpenGL's rendering complexity will be one or two textured quads floating in a perspective view. I take it that's 4 textured polygons or so? My point is that I don't expect the GPU to work that hard on producing my rasters. Thus, my question is this: Can I safely use the GPU on a dedicated server (Example: ATI ES1000) or should I consider using a video accelerator expansion card for this sort of task? If so, what kinds of advantages are there for my kind of application in using an expansion card versus a stock on-board GPU?
3. How much of a performance hit is it to have multiple parallel processes performing similar rendering functions on the same GPU? Should this even be a concern? I don't think I will ever have more than 16 parallel processes working with the GPU.
Once I have a full understanding of how this works I would be happy to provide completed and fully commented source code so that others in my situation could render on a pure server.
Thank you in advance for your help!