shonumi / gbe-plus

DMG/GBC/GBA emulator and experimental NDS emulator.
GNU General Public License v2.0
501 stars 79 forks source link

Vulkan API support #20

Open ADormant opened 8 years ago

ADormant commented 8 years ago

Vulkan has been released. Vulkan would be great because it has the same compatibility between desktop and mobile. https://www.khronos.org/registry/vulkan/specs/1.0-wsi_extensions/xhtml/vkspec.html#introduction https://github.com/KhronosGroup https://www.khronos.org/news/press/khronos-releases-vulkan-1-0-specification https://www.khronos.org/registry/vulkan/ https://github.com/SaschaWillems/Vulkan https://github.com/vlj/rpcs3/tree/vulkan https://github.com/benvanik/xenia/commit/77a321135ed1b3761aac2834a74d89020c91626c https://developer.nvidia.com/vulkan-android#samples https://developer.nvidia.com/opengl-vulkan http://developer.download.nvidia.com/assets/gameworks/downloads/secure/Vulkan_Beta_Drivers/GL_NV_draw_vulkan_image.txt?autho=1455677508_53956204191f627c8b977be0668214a3&file=GL_NV_draw_vulkan_image.txt

https://github.com/nvpro-samples https://github.com/McNopper/Vulkan https://github.com/nvpro-pipeline/vkcpp https://github.com/john-chapman/VulkanTest https://github.com/mlaveaux/VulkanRenderer https://github.com/pld-linux/vulkan-loader https://github.com/FaultyRAM/vulkan-sys https://github.com/kainino0x/rust-vulkan https://github.com/LunarG/VulkanSamples https://github.com/KhronosGroup/Khronosdotorg/blob/master/api/vulkan/resources.md https://github.com/tomaka/vulkano

shonumi commented 8 years ago

Just so you know, it'll happen whenever SDL 2.x supports it. I can't say when they'll add it, but hopefully soon.

DerekTurtleRoe commented 8 years ago

@ADormant Not sure an issue is quite the scope necessary for "support Vulkan", but I kind of think any application will eventually get support since it is the successor to OpenGL, and promises many improvements over OpenGL.

@shonumi Will gbe-plus get stable release sometime in the near future? Just curious, I really like testing new emulators. :smiley:

shonumi commented 8 years ago

@vgturtle127 April 1st. I still need to make a master TODO issue for 1.0 stuff, but it's almost time. April 1st was the release date of the original GBE project, so I'd like to keep that date this time around too ;)

DerekTurtleRoe commented 8 years ago

@shonumi That's funny, Project64 often releases new versions then too. It is also April Fool's day. :wink:

shonumi commented 8 years ago

Yup, when I released the original GBE, telling people you could replace graphics and colorize old DMG games, people thought it was a joke :D

DerekTurtleRoe commented 8 years ago

@shonumi When they released the source code for the new version of Project64, people didn't even clone the repo for awhile because they thought it was a joke. :laughing:

tambry commented 8 years ago

Not sure why you would need SDL to get support for it. For rendering to a window with Vulkan, you simply create your platform-specific surface object and then pass the window handle and instance to it. After that you hop through a bit of initialization and you can start rendering.

Slightly off-topic, is there a IRC channel for the project?

DerekTurtleRoe commented 8 years ago

@tambry Platform-specific stuff isn't necessary in SDL, that's why he is waiting most likely.

No IRC channel, but you could probably ask questions on the emulation Reddit, or #gbdev.

shonumi commented 8 years ago

@tambry - Like vgturtle said, I need SDL to handle everything about Vulkan, from initialization, window amd context management, and all that fun stuff. As I originally envisioned GBE+, it was to have straightforward crossplatform compatibility with minimal dependencies. Platform specifoc code is not something I want to add to the codebase as a result.

For now, there is no official place for discussion. You can ping me on Reddit or NESdev (or anywhere else you see me really). Eventually, I'm going to pursue a dedicated website and forums.

ADormant commented 8 years ago

@shonumi How about switching to GLFW? It has Vulkan support. http://www.glfw.org/ http://www.glfw.org/docs/3.2/vulkan.html

DerekTurtleRoe commented 8 years ago

@ADormant That may take longer and have way more development time than just waiting for SDL. I admittedly don't know when SDL will support Vulkan, but I would assume it would take less time than to switch API's. Just my two cents, anyway. :wink:

shonumi commented 8 years ago

@ADormant Nope. GLFW is nice, but it would require SDL anyway for cross-platform audio anyway. The underlying changes necessary to port everything to GLFW would be non-trivial to say the least.

It's important to note that until I get to the HW renderer for DS emulation, there's hardly any benefit from going OGL to Vulkan at the moment, because all GBE+ uses OGL is to draw a single texture onto the screen over and over again. Vulkan might help with pixel shaders eventually, but for the most part it's pretty low priority for the systems GBE+ currently emulates. I know a lot of talk is going on; various emulators and cores are getting Vulkan support, but it isn't a magic bullet for every emu out there. I feel it's something GBE+ can wait on (OGL 3.3 isn't going to disappear overnight) until SDL 2.0 catches up.

ADormant commented 8 years ago

@shonumi any idea when a stable release or at least some update is coming out?

shonumi commented 8 years ago

For GBE+? Probably next month. Most of what I want to do for the true 1.0 release is just CGFX related, and it's not much. I guess I'm focused on fixing GB bugs (fixed like a dozen games in the past 2 weeks. There will be RC3 some time this week, depends on how demanding my job in real life gets this week. If it doesn't let up, Friday at the earliest, but if things cool down it'll be sooner than that ;)