From 39a5e80a7aa5974272589c9b87fb23e93d6eede3 Mon Sep 17 00:00:00 2001 From: Aaron Ruby Date: Wed, 10 Sep 2025 17:03:12 -0400 Subject: [PATCH] gfxstream: address-space graphics requires kParamResourceBlob and kParamHostVisible Make init failure more clear if this is not the case. Reviewed-by: Gurchetan Singh Part-of: --- .../GoldfishAddressSpace/VirtioGpuAddressSpaceStream.cpp | 9 +++++++++ src/gfxstream/guest/platform/drm/DrmVirtGpuDevice.cpp | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gfxstream/guest/GoldfishAddressSpace/VirtioGpuAddressSpaceStream.cpp b/src/gfxstream/guest/GoldfishAddressSpace/VirtioGpuAddressSpaceStream.cpp index 4780faef3b2..a1ac3edd3f5 100644 --- a/src/gfxstream/guest/GoldfishAddressSpace/VirtioGpuAddressSpaceStream.cpp +++ b/src/gfxstream/guest/GoldfishAddressSpace/VirtioGpuAddressSpaceStream.cpp @@ -84,6 +84,15 @@ AddressSpaceStream* createVirtioGpuAddressSpaceStream(enum VirtGpuCapset capset) VirtGpuDevice* instance = VirtGpuDevice::getInstance(); auto caps = instance->getCaps(); + if (!caps.params[kParamResourceBlob]) { + mesa_loge("VirtGpuDevice does not support blob-resources!"); + return nullptr; + } + if (!caps.params[kParamHostVisible] && !caps.params[kParamCreateGuestHandle]) { + mesa_loge("VirtGpuDevice must support at least one of: 1) host-visible memory (kParamHostVisible) or 2) host handles created from guest memory (kParamCreateGuestHandle)."); + return nullptr; + } + if (!GetRingParamsFromCapset(capset, caps, ringSize, bufferSize, blobAlignment)) { mesa_loge("Failed to get ring parameters"); return nullptr; diff --git a/src/gfxstream/guest/platform/drm/DrmVirtGpuDevice.cpp b/src/gfxstream/guest/platform/drm/DrmVirtGpuDevice.cpp index 8ad29d30076..79a68d9331d 100644 --- a/src/gfxstream/guest/platform/drm/DrmVirtGpuDevice.cpp +++ b/src/gfxstream/guest/platform/drm/DrmVirtGpuDevice.cpp @@ -194,7 +194,7 @@ int32_t DrmVirtGpuDevice::init(int32_t descriptor) { ret = drmIoctl(mDeviceHandle, DRM_IOCTL_VIRTGPU_GETPARAM, &get_param); if (ret) { - mesa_logd("virtgpu backend not enabling %s", params[i].name); + mesa_logd("Could not query virtgpu param from device: %s", params[i].name); continue; }