Valve just announced that they have updated their github repository of their OpenGL debugger or VOGL for short, to support Unreal Engine 4. The new updated version which is available for anyone to download and implement will now support Unreal Engine’s implementation of OpenGL, since Epic games have announced that they will be supporting both Linux and SteamOS with their Engine.
The latest code version on github now supports full-stream tracing/replaying and trimming of UE4 call streams in either GL3 or GL4 mode. Though the User Interface for VOGL still is a work in progress, it is almost near completion, now that the code can snapshot and restore Unreal Engine 4 and playback the call stream without any diverging.
According to Valve, “UE4’s OpenGL renderer is the most advanced we’ve worked with so far. It has provided us with valuable real-world test cases for several modern GPU features we’ve not had traces to validate our code against, such as compute shaders and cubemap arrays. We’ll be making UE4 GL callstreams part of our regression test suite going forward.”
But like any other software in early stages of development this one too comes with some problems. Some of the known problems are according to Valve:
“UI: Peter Lohrmann just added a dropdown that lets you select which context’s state to view. This code is hot off the presses and is a bit fiddly at the moment. Also, UE4 uses several texture formats that the vogl UI can’t display right now (LunarG is helping us fix this, see below.)
Snapshotting UE4 during tracing is currently unsupported (but snapshotting during replaying works), because the tracer can’t snapshot state while any buffers are mapped. (We also have this problem with the Steam Big Picture renderer.) We have a fix in the works.
We’re seeing several query related warnings/errors while snapshotting and replaying UE4 callstreams. (This problem is in vogl’s replayer, not UE4.) These need to be investigated, but they don’t seem to cause the replayer to diverge.
There are several “zombie” buffer objects that have been deleted on one context but remain bound on another, which causes the snapshot system to report handle remapping errors on these objects during snapshotting. These buffers don’t appear to be actually referenced after they are deleted, so this doesn’t cause the replay to diverge. We’ve got some ideas on how to improve vogl’s handling of this scenario (which is unfortunately very easy to do by accident in GL).”
Source: Valve Employee Blog