I’ve been searching the Internet for a long time and still cannot figure out which C/C++ graphics rendering APIs are compatible with G-Sync. I need to display frames with a variable frame rate and I would like to know what C/C++ graphics rendering API (compatible with G-Sync) options are available for such development.
In my experience, almost all video players do not support G-Sync, I can conclude that the available API options are very limited.
It’s strange that such a powerful feature, like G-Sync, does not have any software documentation or an example of how to write compatible software with G-Sync…
There are no APIs available to control G-Sync. G-Sync deals with dynamic-rate content. It is designed specifically for gaming applications, which are inherently dynamic-rate content due to the complexity of the scenes, as opposed to video playback, which is pre-rendered, fixed content.
There is also an older technology called g-sync that has been renamed QuadroSync. QuadroSync provides for FrameLock in large arrays of displays to prevent image “tearing”.
Either way, if you can clarify what you are trying to accomplish, we can potentially provide more information.
- I’m developing a non-game C/C++ application which should have an additional ability (it’s not the main function) for displaying video at an arbitrary frame rate (for example, 43 fps, 102 fps, etc.)
- My consumer has a G-Sync monitor and a compatible graphics card, G-Sync is enabled for full and windowed mode.
- My application can prepare frames to display accurately according to the video frame rate.
- What are the APIs for C/C++ (DirectX, OpenGL, etc.) that I have to develop my application to display frames at once when they are ready ? Are there any C/C++ examples ?
In most cases games are compatible with G-Sync.
Unlike games, video players are usually not compatible with G-Sync.
It says there are limited rendering API options which compatible with G-Sync.
In short, G-Sync can only recognize certain specific GPU calls for graphics rendering - not all.
The question is how to make the frames graphics output in my C++ application compatible with G-Sync.
I will research this and see if there is anything that might help.
I found some guidance:
G-Sync is transparent to the software developer (meaning there are no application changes required), but it has some requirements in order to work:
- The software needs to render into an opengl or dx surface
- Vsync for that surface needs to be off in the application
- Gsync needs to be switched on in the control panel
If frame output is made using d3d11 rendering pipeline (instead of d3d11 dxva2) it should be same as game frame rendering.
I hope that helps,
Thank you very much for the detailed answer.
This is exactly what I was looking for.
Could you provide a link to this guidance?
Thank you for your great help,