-
-
Notifications
You must be signed in to change notification settings - Fork 161
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
Rewriting renderers in Vulkan. #723
Comments
Investigation task breakdown (the tasks involved in investigation) -
First pass implementation break-down -
|
TODO: provide action items for dean, specifically related to breaking down tasks 1 and 2 and any others. EDIT: turns out, no action items for me here. Dean, proceed as is and ask any clarifying questions that might arise. |
I can share some experience about Vulkan 1.3:
From what I saw - it is maybe even 100x faster to write complex code/engine on Vulkan 1.3 than in previous - because instead of having full spaghetti-logic of resource initialization/cleaning and writing huge code to do literally anything - in Vulkan 1.3 that "huge hundred lines of code" replaced literally by 1 line of code, especially if you will use bindless. |
Thanks for that, it's very helpful! I was surprised to discover recently that VK_KHR_dynamic_rendering is now included, even pushed, in Vulkan 1.0. VK_EXT_shader_object and VK_EXT_descriptor_indexing are too. Pending investigation, I'm wondering if all 3 extensions are supported on smartphones and other devices that don't support Vulkan 1.3? So you have convinced us on using these modern features if we can, but actually using Vulkan 1.3 seems to be a separate question: if Vulkan 1.3 adds device support restrictions on top of the modern features alone, then what advantage does Vulkan 1.3 offer present developers beyond avoiding a small amount of annoying boilerplate and suffixes? If I'm missing something here please let me know! |
I have no solution to "support <=1.2 and 1.3". Vulkan 1.3 project code base will be completely different to Vulkan <=1.2
Vulkan 1.3 include most of those "EXT" that save so much time in code/logic, those "EXT" is core in Vulkan 1.3 so you dont need to check for them. Knowing how much "pain" it to make Vulkan <=1.2 complex code - my point of message was - just make Vulkan 1.3 project, and then maybe if you actually need do <=1.2 with check for extensions and different render pipelines per extension. https://docs.vulkan.org/spec/latest/appendices/versions.html - VK_KHR_dynamic_rendering is in core 1.3. |
Even at the outset of developing our current OpenGL renderers, it was planned to 'some day' rewrite it in Vulkan.
So far, at least on windows and linux nvidia machines, we've been happy enough with this approach. However, AMD's support for OpenGL on windows has turned out to be unusable in anything but 2D and toy 3D applications. (UPDATE: we got AMD working again by ripping out the use of bindless textures in the engine.)
We are not looking to rewrite the renderers now or likely even any time this year (2024). But at some point, if OpenGL continues to die the death that - at the outset of Vulkan - Khronos promised us it wouldn't, we'll need to start investigating this.
It may still be possible that if vendors realize that the thousands of non-gaming software shops cannot afford to spend man-years rewriting their renderers nor need the features that Vulkan offers over OpenGL, OpenGL may again becomes a target for proper vendor support. Though I think it is the most reasonable outcome, like many similar things in life, we can't count on it.
Hence, this investigation issue.
EDIT: we are tacking some bugs reported to AMD related to our particular opengl issues -
https://community.amd.com/t5/newcomers-start-here/opengl-4-1-this-api-capture-crash-amd-gpu-driver-on-window-linux/m-p/664656
https://gitlab.freedesktop.org/mesa/mesa/-/issues/10581
DiligentGraphics/DiligentSamples#140
At this point, I wouldn't even rule out a hardware bug.
EDIT: ORIAL: At the end of the day, it doesn't matter which API one targets, nor how theoretically perfect that API is, if vendors don't do their basic jobs at supporting it's operation. There's no specific reason to think that some time in the future, AMD could become just as negligent in their support for Vulkan operation as their support has become with OpenGL. Even for what works now, they could easily regress their Vulkan support with things like rewrites and complex internal patches, landing end users with bugs as severe as the ones they're currently serving up with OpenGL. The fault lies with the vendors, and no amount of rewrites from this API to that API will overcome the problems they cause.
The text was updated successfully, but these errors were encountered: