Vulkan hardware database feature update

Intro

The Vulkan hardware database just got one of it’s biggest updates, bringing with it some fundamental changes, lots of optimizations and some quality-of-life improvements.

The main reason behind this update were requests from inside the Khronos group, asking for feature coverage based reporting.

What does Feature coverage mean? Up until now if you were looking for a specific extension and the devices (or reports) that supported it, the database would only tell you that a device would support the extension, with the driver version being reported just being the latest known version.

But what you actually want to know is since what driver version a given extension, feature or format is supported instead, which is the most important change introduced with this update. So from now on you can easily see what driver version introduced support for e.g. a specific extension or buffer format.

First known driver version support

All device lists based on coverage listings (extensions, features, formats, surface formats and present modes) will now report the first known driver version to support that extension, feature or format.

So you can now easily see what driver version brought support for a specific extension on a given platform:

Same for e.g. image and buffer formats:

Coverage numbers are now device-based

Coverage numbers for e.g. extension support are now based on the number of actual devices supporting it, resulting in more precise numbers. Before this change, those numbers were calculated from the number of reports that e.g. supported a specific extension. With this approach, devices with lots of uploaded reports skewed the reported numbers. With this update those numbers are solely based on how many actual devices support an extension/feature/format, no matter how many reports have been uploaded for a single device.

Platform based listings

Another big change has been made to the listings, which have explicitly been split for the supported platforms (Windows, Linux and Android).

Before:

After:

The extension listing had already been updated to use platform-based coverage numbers last year, and with this update all other listings that are based on coverage and platforms have been changed to use them same logic. This applies e.g. to the device feature listing, which will now report numbers split by platform:

With this change it’s now easy to see how big differences in feature support are amongst platforms, e.g. for depth-related features between Windows and Android:

The reworked listings have also been split into two columns, with numbers for devices supporting the extension and devices not supporting it. You can then click on the numbers to quickly open up device listings with that filter.

The changes also apply to the listings for device features and formats and surface formats and present modes.

New default view

The new default view when opening up the root url of the database is now the device listing, instead of the report listing. The device based list, with dedicated tabs for the different platforms, makes much more sense as a starting point than the old plain list of reports sorted by upload date.

Extension features and properties on report compare

The additional non-core extension features and properties (read by the caps viewer using vkGetPhysicalDeviceFeatures2 and vkGetPhysicalDeviceProperties2) have been added to the report compare feature:

Quality-of-life improvements

This update also brings a slew of quality-of-life improvements to the front-end of the database, including:

  • Better performance I have reworked many of the SQL statements that have been used for filtering, listings, etc. This should result in an overall better performance across many views of the database. Esp. the surface related listings are now much faster.
  • Database cleanup Lots of old and obviously wrong reports have been purged from the database. This results in more consistent data, esp. in regards to device limits and features.
  • Dynamic page titles The page title is now based on the actual view you selected, so you can easily distinguish if you have multiple database pages or tabs opened:
  • Delayed filtering Filtering on tables, e.g. the device and report listings is now delayed. This results in less back-end requests and makes searching a lot faster in general.
  • Fixed table headers The report compare views now have fixed table headers, so you’ll always see the names of the reports that you are comparing, even when scrolling down long lists.
  • Driver version sorting improvements Driver version are now sorted after vendor specific versioning scheme conversion.

Next up?

The next feature I’m going to add is an advanced search. A lot of people have been asking to get a dump of the database just to so they can filter by additional criteria that are currently not available through the listing pages and filtering columns.

The advanced search will allow you to create more complex filters and e.g. filter for reports that support different flags for a given image or buffer format. There’s no ETA on that feature yet, but I’m sure this will be something that many of you are going to like.

Conclusion

I hope that with this update the database is even more useful and then before, and if you have suggestions or want to report errors with the database, please feel free to open up an issue over at the github repository. I’m always open for feedback.