Vulkan: Use VK_EXT_provoking_vertex, when available, to get OpenGL/PSP behavior for flat shading #19331
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
"Provoking vertex" decides which vertex in a triangle gets to decide the color when doing flat shading.
We have a software workaround to match the PSP's (and OpenGL's) behavior, but it's buggy, resulting in #19323 .
Fortunately, there's a pretty widely available Vulkan extension that switches it over to OpenGL's behavior (last-vertex) so if available, let's just use it and skip the software workaround.
This does not fix the bug causing #19323 , but lets us avoid that code. Fixing the bug will be done in a separate PR, which will thus also fix it for D3D9 and D3D11.
The original issue affected by provoking vertex is #10969 .
EDIT: Weirdly, there's still a glitch in Blade Dancer with this.. This glitch is also present in OpenGL.