KhronosGroup / KhronosGroup/Vulkan-Tools

vkcube doesn't validate presentation support for physical devices

Open
#950 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
493
Forks
202
Avg merge
1h 37m
Merged PRs (30d)
4

Description

vkcube's device selection is unfortunately a bit optimistic and it blindly assumes that all devices it can enumerate are usable from its context. This is not always the case, and hence it can end up failing to start properly.

This issue showed up when running vkcube in a VNC session (TigerVNC/tigervnc#1674). In that case, the hardware device cannot be use because DRI3 isn't available. But vkcube fails to fall back to the CPU device.

I am a complete newbie when it comes to Vulkan, so I have no idea how applications are supposed to pick devices.

The noticable difference between the VNC environment and a "regular" one (according to vulkaninfo), is that you only get presentable surfaces for working devices. So perhaps that is a good method?

What is the de facto method for picking devices? Is there something TigerVNC can do to help applications make the right choice?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing vkcube's physical-device selection and compare the devices it enumerates with the presentable surfaces reported by vulkaninfo in a VNC session. Confirm the expected selection behavior and define done as avoiding unusable devices while allowing fallback to a usable CPU device. No source file or test is named in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.