4

Pretty much the title, when I call (through the hpp header) instance.enumeratePhysical devices()

I am getting the warning:

MESA-INTEL: warning: Haswell Vulkan support is incomplete

Thing is, that's not a validation layer error (my error message would append a lot of info not present here), it's not one of my print statements, and I have not even picked the device yet, once I have picked one it's my nvidia 1070.

Why is this message showing?

Makogan
  • 8,208
  • 7
  • 44
  • 112
  • 2
    It is showing because the Haswell driver support is incomplete. That's Linux for ya... – krOoze Feb 05 '22 at 10:30
  • This doesn't explain much to me :p – Makogan Feb 05 '22 at 10:38
  • Also why would a driver issue be Linux's fault I thought vendors are the ones responsible for providing the driver. It would be on intel no? – Makogan Feb 05 '22 at 10:42
  • 1
    @Makogan Vendors have no such responsibility. Linux distros usually don't install non-free drivers by default, and you're using the Mesa driver. If nvidia does provide one, you need to install it. – molbdnilo Feb 05 '22 at 11:14
  • 1
    Note that Intel itself is writing the anvil mesa vulkan driver, which has this limitation, and that the iGPUs from the Haswell generation aren't officially vulkan compliant at all. There's an actually quite usable (yet incomplete) vulkan implementation for Haswell on Linux, and **none** on Windows. That's Linux for ya. – derhass Feb 05 '22 at 16:03
  • I see this warning from running `google-chrome` on the command line in Ubuntu 22.04. Chrome version 108.0.5359.124. – xinthose Jan 05 '23 at 19:17

1 Answers1

3

Why is this message showing?

Because the "anvil" ICD (the Intel Vulkan driver from the mesa project) is present on your system and detected an Intel iGPU from the Haswell generation. This is basically what the physical device enumeration is about: checking all the installed ICDs and finding all the devices on your machine they can work with. In this particular case, there is just a log message in the ICD source code itself. There's nothing to worry about.

derhass
  • 43,833
  • 2
  • 57
  • 78
  • Except worrying about having nonconformant driver installed on the system. – krOoze Feb 05 '22 at 22:26
  • That's exacxtly _why_ there is this warning message in the first place. – derhass Feb 06 '22 at 00:33
  • Do you think an end user cares about a warning in a hidden terminal?? It is pointless to have a specification, if people can expose nonconformant drivers willy nilly... – krOoze Feb 06 '22 at 18:46
  • @krOoze And your point being? If one applies your logic, _every_ specification is "pointless", because people can always implement stuff outside of that specification. Nobody declared that Intel iGPUs from the Haswell generation were compliant to some particular vulkan spec. – derhass Feb 07 '22 at 18:07
  • Every device returned from `vkEnumeratePhysicalDevices` is by definition assumed compliant. If it isn't, it is a breach of API contract. Imagine that instead of a driver, we are talking about `std::vector` here. Imagine that on stable version of an OS someone included STL package that just prints "std::vector implementation is incomplete" somewhere to `std::cerr` and probably crashes on some usage. You would marvell at what kind of shoddy engineering that is I hope? – krOoze Feb 07 '22 at 18:58