LWJGL Forum

Programming => Vulkan => Topic started by: Grayscale on July 25, 2017, 17:54:17

Title: Couple quick questions about the vulkan implementation
Post by: Grayscale on July 25, 2017, 17:54:17
Firstly, I'm looking to get started dabbling in vulkan and java is my language of choice but I first have to ask, how much of the vulkan api has been implemented into LWJGL as of late? Is there any functionality missing and if so would I be better off going the c++ and LunarG route?

Secondly, is there any large performance hit when interfacing with the vulkan libraries over jni?
Title: Re: Couple quick questions about the vulkan implementation
Post by: spasi on July 25, 2017, 18:28:24
Quote from: Grayscale on July 25, 2017, 17:54:17Firstly, I'm looking to get started dabbling in vulkan and java is my language of choice but I first have to ask, how much of the vulkan api has been implemented into LWJGL as of late? Is there any functionality missing and if so would I be beeter off giong the c++ and LunarG route?

The Vulkan bindings are generated using a dedicated project (https://github.com/LWJGL/lwjgl3-vulkangen) that parses the Vulkan registry. That means that the entire API (core + extensions) and all documentation is always up-to-date (as of this post: 1.0.56 with this commit (https://github.com/LWJGL/lwjgl3/commit/e60bbf556eef70a4e8593546af51bf0af61bdc68)).

Quote from: Grayscale on July 25, 2017, 17:54:17Secondly, is there any large performance hit when interfacing with the vulkan libraries over jni?

No, LWJGL is optimized for Vulkan; lowest possible JNI overhead and efficient struct access. Stack allocation of structs is also ideal for high performance rendering.
Title: Re: Couple quick questions about the vulkan implementation
Post by: Grayscale on July 26, 2017, 20:00:44
Quote from: spasi on July 25, 2017, 18:28:24
Quote from: Grayscale on July 25, 2017, 17:54:17Firstly, I'm looking to get started dabbling in vulkan and java is my language of choice but I first have to ask, how much of the vulkan api has been implemented into LWJGL as of late? Is there any functionality missing and if so would I be beeter off giong the c++ and LunarG route?

The Vulkan bindings are generated using a dedicated project (https://github.com/LWJGL/lwjgl3-vulkangen) that parses the Vulkan registry. That means that the entire API (core + extensions) and all documentation is always up-to-date (as of this post: 1.0.56 with this commit (https://github.com/LWJGL/lwjgl3/commit/e60bbf556eef70a4e8593546af51bf0af61bdc68)).

Quote from: Grayscale on July 25, 2017, 17:54:17Secondly, is there any large performance hit when interfacing with the vulkan libraries over jni?

No, LWJGL is optimized for Vulkan; lowest possible JNI overhead and efficient struct access. Stack allocation of structs is also ideal for high performance rendering.
thank you, quick and precise. I look forward to jumping right into vulkan now  :)