Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
20598 Discussions

Vulkan Push Constants doesn't work correctly on Windows Intel GPU drivers

Benjamin_Rosseaux
821 Views

 

The found Intel GPU Driver Vulkan Push Constants issue under Windows is that the Intel Graphics Driver under Windows doesn't apply push constant updates not immediately for the next draw commands, but rather only for the next RenderPass-Scope-command-blocks in a command buffer, or somewhat in that direction.

 

The generic Intel GPU driver version 24.20.100.6025 has still these same push-constants issues.

This one Push Constant problem at my tests really only occurs with the Intel Windows GPU driver, but not under Linux with the open source Intel Vulkan driver, and even also not with NVidia, AMD, Mali, etc. under any operating system. On these it works correctly, but not with Windows on Intel GPUs.

As an video-demostration see https://youtu.be/TfqT0jgbhFc (where the validation layers are enabled here, of course.) where some GUI elements are not rendered to the screen, because the updating of push constants are not working immediately for the next draw commands. 

At least here are already the binaries for testing yourself and for to see the issue yourself https://rootserver.rosseaux.net/stuff/pasvulkan_examples_for_intel.zip which includes binary builds for x86-Win32 x86-Win64 x86-64-Linux and Android (for ARM32 and i386). But please test it on Intel iGPU-only systems if possible, because it prefers a dGPU over a iGPU otherwise. (GitHub project: https://github.com/BeRo1985/pasvulkan but since it's a Object-Pascal project and because you probably don't have an Object-Pascal compiler, I packed pre-compiled build binaries into one before mentioned  ZIP file.)

And it seems, that the Dolphin emulator guys do have the exactly same problem with push constants on Intel GPUs on Windows too, see https://bugs.dolphin-emu.org/issues/10470 

Regards from Germany,
Benjamin Rosseaux

 

 

0 Kudos
1 Reply
Malyshau__Dzmitry
821 Views

We might be seeing a similar issue in https://github.com/szeged/webrender/

If push constant updates aren't applied instantly, there is a high chance Vulkan CTS would catch that: https://github.com/KhronosGroup/VK-GL-CTS. So I think the next step would be having it running (the selected range of tests) on the target machine, with one of the possible outcomes:

  1. It fails, which gives Intel developers a clear case to work with, plus a good incentive to pass the CTS 🙂
  2. It succeeds, and it turns out to not check for the push constant updates properly. We'll follow-up with an issue to Vk CTS itself
  3. It tests the right thing and succeeds, which means there is more involved in it, an we'll be able to narrow down to what exactly causes a problem.

Relevant tests I see are in "dEQP-VK.api.pipeline.push_constant" section.

0 Kudos
Reply