Improved filtering added to the Vulkan Hardware Database

Reworking global filters

In the last posting I already hinted at reworking how filtering works for the Vulkan Hardware Database. Almost 40,000 reports across multiple platforms is a lot of data, and being able to properly and easily filter that is crucial for a database.

Up until now the only global filter option was the api version, so you could e.g. filter all views in the database to show only data based on devices supporting at least that api version. While that is one of the most important metrics, there were a lot of requests for improving filtering and adding new filter options.

One common complaint was that it’s hard to get numbers that match a target audience. For example people wanted to ignore older devices that haven’t gotten any driver updates (and with that no reports) for some time.

So over the last few months I did a lot of work on the PHP database back-end to allow for an easy way to add new global filters. Instead of hard-coding that single api version filter, filter functions are now defined globally and in a reusable and easy to extend way, and are automatically applied to all SQL statements.

Note: One exception are the format listing pages. Due to the large amount of format data provided by Vulkan implementations, these are generated statically and the only filter that applies here is the api version.

With this new update, the version selection filter in the top bar has been replaced with a proper settings page:

This will navigate to a new dedicated global settings page:

Each of these, with the exception of “Default platform” (which is explained later) applies a global filter that is appended to all database queries. Options can be combined in any way.

Once one or more filter options are set, they’re applied to all listings and views and the applied filter is displayed atop:

Filtering is esp. useful when looking at coverage for extensions, as you can now filter it to only display devices with reports that have been submitted within a recent time frame instead of since the day the database went live:

The following options are currently available:

Min. Vulkan version

Same as the “Version selection” that has been available before. Sets the minimum api version for reports, only results with that version (or something newer) are taken into account.

Min. report age

This lets you limit how far, in terms of upload date, the database fetches data. This lets you e.g. limit results to reports that are no more than one year old".

Device types

While most Vulkan implementations are actual GPUs, Vulkan also allows for e.g. CPU-based or virtual implementations. Using this setting, those can be excluded from results.

Include layered impl.

Vulkan also supports layered implementations that implement Vulkan on top of other apis like D3D12. To avoid those reports skewing results, they are excluded by default. Settings this to “yes” will override that.

Default platform selection

As a quality-of-live improvement you can now also globally set your default platform. If this is set to a specific platform, all database views that have platform tabs will default to your selection. So if you e.g. select “Windows” and navigate to the extension listing page, it will display the “Windows” tab by default instead of the “All platforms” tab.

Feedback

If you encounter any bugs or want to see additional filters, feel free to open up an issue at the github repo for the Hardware Database.