FR: JUCE Vulkan

Wish I could get this to work - I end up with mostly a black screen and occasional flickering of my actual UI. After a while it hangs, or if the window resizes it hangs. I checked my video card compatibility GTX 960, should be fine, so I’m not really sure what the issue is.

+100000 though to get the JUCE team to take a look at this!!

@nlaroche Hmm, that’s a shame.
Have you tried setting the PW_SHOW_VERBOSE_DEBUG_MESSAGES flag, by clicking on the module in the Producer?
If should report things like ‘[Vulkan] Created instance’, and ‘[Vulkan] Created device’ in your Output window along with any errors I presume.

Nice to see people finally testing it : D

The thing is, normally Vulkan is very verbose and specific with its error messages. It surprises me a little that there is just a black screen, or random glitches. I don’t think the reason lies within the specific graphic context implementation, since its logical flow and structure is almost identical to the JUCE OpenGL context. But there is definitely something missing. I have a few guesses, like unsupported swap chain image formats. Driver specific stuff.

Unfortunately I don’t have the time/capacity to look further into this. Can’t replicate it here, so where to begin? My recommendation: Someone with the problem has to use a debug tool like RenderDoc, start the application, and look for errors. Or at least try to find the time/location in code, when it happens.


I really want to get stuck into this. I don’t know where to start though. Is there any way you can show a simple example of what your Wrapper helps with? - even if you consider it a bad coding example - just something to start us off?
While reading/watching Vulkan tutorials, it seems you have helped with a lot of the verbage, so which bits have you done?

(p.s. I get the feeling it needs to be Mac worthy before anyone from Juce will take it seriously, even though it has a ton of votes, and rendering being the most sort after feature voted for in a poll.)

The implementation of the context and wrapper is not platform dependent. So in reality, to add Mac support, it only needs an implementation of
the native surface in vulkan-cpp-library/pw_Vulkan_osx.h at main · parawave/vulkan-cpp-library · GitHub

… Plus someone has to figure out how to actually set up XCode to build or include the MoltenVK library (which handles the conversion of Vulkan API calls to Metal).

I think the problem is not the interest, it’s just that there is no free developer on the JUCE team to dive into this. Or they already research an alternative idea for the future. Like a Skia or WebGL backend.

I will continue with the Vulkan module specific questions in the other topic.


I haven’t tried adding the flag yet, since there is no mac implementation I can’t realistically sink time into this as I wouldn’t be able to release it. I’d give it another shot if there was a future for this project, from what I gather development has sort of halted and the juce team hasn’t looked into this year either, which is a shame.