virtgpu virgl: assume 0 caps for unrecognized capset IDs
minigbm gralloc + gfxstream on the host will always fail the get caps ioctl, but gralloc itself still works fine. TEST=build and run the emulator BUG=b:322199104 Change-Id: I35ebbdddbfb050ead76d61626f13f028cf909229 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/5241884 Auto-Submit: Kaiyi Li <kaiyili@google.com> Commit-Queue: Kaiyi Li <kaiyili@google.com> Tested-by: Kaiyi Li <kaiyili@google.com> Reviewed-by: Dominik Behr <dbehr@chromium.org>
This commit is contained in:
parent
6a402a9d24
commit
52c63ae1a7
1 changed files with 18 additions and 2 deletions
|
|
@ -548,10 +548,26 @@ static int virgl_get_caps(struct driver *drv, union virgl_caps *caps, int *caps_
|
|||
int ret;
|
||||
struct drm_virtgpu_get_caps cap_args = { 0 };
|
||||
|
||||
memset(caps, 0, sizeof(union virgl_caps));
|
||||
*caps_is_v2 = 0;
|
||||
cap_args.addr = (unsigned long long)caps;
|
||||
if (params[param_capset_fix].value) {
|
||||
|
||||
if (params[param_supported_capset_ids].value) {
|
||||
drv_logi("Supported CAPSET IDs: %u.", params[param_supported_capset_ids].value);
|
||||
if (params[param_supported_capset_ids].value & (1 << 2)) {
|
||||
*caps_is_v2 = 1;
|
||||
} else if (params[param_supported_capset_ids].value & (1 << 1)) {
|
||||
*caps_is_v2 = 0;
|
||||
} else {
|
||||
drv_logi("Unrecognized CAPSET IDs: %u. Assuming all zero caps.",
|
||||
params[param_supported_capset_ids].value);
|
||||
return 0;
|
||||
}
|
||||
} else if (params[param_capset_fix].value) {
|
||||
*caps_is_v2 = 1;
|
||||
}
|
||||
|
||||
cap_args.addr = (unsigned long long)caps;
|
||||
if (*caps_is_v2) {
|
||||
cap_args.cap_set_id = 2;
|
||||
cap_args.size = sizeof(union virgl_caps);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue