forcing software rendering

jrs's picture

Hi All,

I've been working on a podcast producer implementation that uses QC to do all the video effects. We have a few x serves to do all the rendering but have hit a bottleneck as they have multiple cpus and only a crappy gpu. Does anyone know of a way to force software rendering?

Cheers - James

jrs's picture
Re: forcing software rendering

I should mention we are using the 'qc2movie' command which as the man page says "is a tool that exports a Quartz Composer composition into a QuickTime movie by adding a track containing this composition. It is the command line equivalent of exporting a composition for the Quartz Composer application to a QuickTime movie."

But this only seems to create a reference movie which gets rendered during the encode stage (using the pcastaction encode command) - which makes sense as its more efficient due to many over lapping compositions (ie a transition works on both the intro movie, a qc patch - and the main movie, which uses a qc patch for watermarking). But whilst I've been told its possible to force software rendering neither of these steps seems to provide an option.

Does anyone know how to do this? Quartz Crystal doesn't seem to allow it - but i'm wondering if its possible? ie can you create an opengl context for a qcrenderer class that forces software rendering?

dust's picture
Re: forcing software rendering

if you hold option and go to preferences you can select software opengl rendering in qc. so if you can do that for qc you must be able to do it in code for your server. how i'm not entirely sure. there is source file on apples dev site i think its called galaxies, where you can test the speed of gpu and cpu. i think that would be a good place to start.

jrs's picture
Re: forcing software rendering

Thanks dust - we would prefer to stay away from building a custom app for rendering but its good to know this step is possible. Is this a feature that could be added to Quartz Crystal?

For the future reference of others here is another approach which chrisw posted to the QC dev list

"Unfortunately, I don't think there's a supported way to ensure that the software renderer is used (especially when the composition is played through the QuickTime wrapper).

However, you could try launching your app with OpenGL Profiler. Add your application, expand the Launch Settings panel, check the Custom Pixel Format checkbox, and add the attribute kCGLPFARendererID -- set the value to kCGLRendererAppleSWID , which is 0x00020600. If hex is problematic (I've never tried setting this setting before), you could try it in decimal: 132608

This might be enough to force the app to use the software renderer. It's not exactly the most elegant solution, but it's worth some experimentation.

It might be beneficial to file a feature request against QC, requesting a way to control this sort of stuff even when enclosed in a QuickTime wrapper; I'm not sure if we'd accept it or not (one the one hand, applications typically are in charge of setting up their contexts themselves, but on the other hand, the QT wrapper effectively prevents you from configuring that context), but it wouldn't hurt."

Filled under bug 8145522

gtoledo3's picture
Re: forcing software rendering

Quartz Crystal always works in software mode already, if that's what your speculating about as a feature that could be added.