Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  

Is any software rendering port using OpenCL?

Recommended Posts

Are there any Doom ports which don't use the GPU for rendering graphics, but for other operations, such as a playsim with lots of actors (nuts-like)? Is OpenCL of any use here?

Just throwing it there, the concept seems interesting, I'll look into it when time comes to try something performance demanding :)

Share this post

Link to post

The examples shown aren't really all that different from designing your own task-specific thread objects in Java, C++ or C# (been there, done that in pre-grad), and there's not even a syntactic sugar a-la Apple's "Grand Dispatch Central". The only difference will be -maybe- the portability of said code and the "free" application to any GPU, instead of doing language-specific black thread juju, assuming the framework itself is more ubiquitous than this or that multithreading library.

However, seeing how the language it's based on is C99 "with some limitations and additions", and that it's best suited for massively parallelizable mini-tasks ("functions"), I can't think of anything more unsuitable for running Doom, at least not without major changes to the engine itself.

Until someone comes and throws the traditional Doom state model away (and allows mobj interactions to become non-deterministic), no such proposals would really work. Too much stuff to keep in sync, which would degenerate everything into serial execution (even though in disguise).

E.g. while in theory one could say that actor state functions (A_ stuff) could run as many parallel "OpenCL minitasks", the problem is in what order? Random? A forced one? A mixed model?

As for graphics, it won't have any advantages performance-wise over the current multithreaded rendering ports: there's still a lot of work-splitting, task-syncing and status-duplication to take into consideration, and the final benefits can't exceed a 100% speedup (if gameplay/serial rendering CPU time are perfectly equal, and if you manage to reduce rendering time to zero).

Finally, not quite the same thing, but the Android Doom ports use a temporary OpenGL surface to actually draw the screen buffer to the screen.

Share this post

Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this