Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better OpenGL Efficiency #3514

Closed
tomspilman opened this issue Feb 10, 2015 · 10 comments
Closed

Better OpenGL Efficiency #3514

tomspilman opened this issue Feb 10, 2015 · 10 comments
Labels
OpenGL OpenGL graphics backend Performance
Milestone

Comments

@tomspilman
Copy link
Member

This all stems from the following Khronos Group paper...

https://www.khronos.org/assets/uploads/developers/library/2014-gdc/Khronos-OpenGL-Efficiency-GDC-Mar14.pdf

Is there any benefit to MonoGame to pursuing these approaches within the existing API?

What platforms can benefit here?

Could this give us a path towards multi-threaded rendering for OpenGL?

@tomspilman tomspilman added OpenGL OpenGL graphics backend Performance labels Feb 10, 2015
@KonajuGames
Copy link
Contributor

That PDF is very light on details, but I believe it is referring to glMultiDrawArraysIndirect and glMultiDrawElementsIndirect. Here is better article on how they are used.
http://www.openglsuperbible.com/2013/10/16/the-road-to-one-million-draws/

This would only benefit the desktop platforms at this stage as it is OpenGL 4.2+. It could help a lot with performance, but how much do we expose to the user and how much do we keep internal? Within our existing API, it would take some extra research into exactly how these new functions work to see how much benefit it would provide to us.

@tomspilman
Copy link
Member Author

This would only benefit the desktop platforms at this stage as it is OpenGL 4.2+.

Ok... wasn't sure if it could help on Android or not.

I expect for iOS we will be eventually moving to Metal and OpenGL will be dropped there all together.

how much do we expose to the user and how much do we keep internal?

I think some of this overlaps with how we enhance the MonoGame APIs for DX12 and Metal support.

@KonajuGames
Copy link
Contributor

@willmotil
Copy link
Contributor

much of this came from mantle i believe anyways
video from yesterday
https://www.opengl.org/news/permalink/vulcan_chess_lets_you_play_3d_chess_using_the_opengl_api/

brief of spir-v
https://www.khronos.org/registry/spir-v/papers/WhitePaper.html

here's the spir-v spec pdf as of 4 days ago
https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.pdf

@KonajuGames
Copy link
Contributor

KonajuGames commented Mar 6, 2015 via email

@thefiddler
Copy link
Contributor

We have a developer with NDA access working on Vulkan C# bindings.

It is quite likely that Linux/MacOS will gain Vulkan support before OpenGL 4.2 drivers become readily available, which makes this a desirable backend to support.

@tomspilman
Copy link
Member Author

@thefiddler - That is great to hear!

@CartBlanche
Copy link
Contributor

@thefiddler Any further info about this C# binding?

@CartBlanche
Copy link
Contributor

Nevermind, seems one of the Xamarin guys has already done it - https://github.com/mono/VulkanSharp.
@tomspilman, @KonajuGames ^^

@tomspilman tomspilman added this to the 4.x Release milestone Feb 26, 2016
@tomspilman
Copy link
Member Author

Closing this and moving discussion to #4571.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OpenGL OpenGL graphics backend Performance
Projects
None yet
Development

No branches or pull requests

5 participants