Hi, I am new to Vulkan but a long time user and proponent of OpenGL. One of the biggest shortcomings of any 3D graphics API (to my knowledge) has been the ability for a software developer to maintain deterministic frame rates when using OpenGL even with fastest, modern day GPUs and CPUs. That is, the capability of the user’s application to maintain a target update rate such as 60 frames per second. If an “overload” occurs today within OpenGL or Direct3D, the user’s application update rate simply drops to the next subinterval of the refresh rate when sync’d to the vertical retrace rate (which it normally is for training and simulation applications).
In my industry (training and simulation), this has always been one of the major shortcomings for modern day GPUs using OpenGL; this feature is something the very old proprietary and expensive image generators from decades ago were able to achieve at least with some rudimentary user specified priority scheme for rendering. Today, as we know, once the OpenGL pipeline is filled by the user’s application program with various rendering tokens, it cannot be stopped / interrupted until it completes. Even if the application only goes a few microseconds over the threshold, the update rate automatically plummets to the next lower subinterval of the vertical refresh rate (i.e., 30 Hz when running on a 60 Hz refresh rate display or projector). This is somewhat catastrophic to the suspension of disbelief in the simulator or in the game, especially when the rendering is on the verge of 60 Hz and possibly going in and out of 60 Hz and 30 Hz continuously. Application developers spend a bunch of their time making sure they minimize this artifact, but a deterministic frame rate is not something anyone can guarantee using OpenGL.
Maybe Vulkan can address this (perhaps as an optional extension of some sort)? IMO, deterministic frame rates would be very, very useful to the simulator world as well as game developers if this feature were available.
Thoughts?