Revert^2 "vulkan-cereal: guest memory prototype"
1b90709ddd23f1ab7c6fb08f701a652c29251c83
Change-Id: I24b8cfe37c5af0033e4a80d1ddaf3d15e1ad5329
diff --git a/stream-servers/virtio-gpu-gfxstream-renderer.cpp b/stream-servers/virtio-gpu-gfxstream-renderer.cpp
index 66951d5..65e4e92 100644
--- a/stream-servers/virtio-gpu-gfxstream-renderer.cpp
+++ b/stream-servers/virtio-gpu-gfxstream-renderer.cpp
@@ -832,6 +832,10 @@
});
break;
}
+ case GFXSTREAM_PLACEHOLDER_COMMAND_VK: {
+ // Do nothing, this is a placeholder command
+ break;
+ }
default:
return -1;
}
@@ -1483,16 +1487,30 @@
return ret;
}
} else if (feature_is_enabled(kFeature_ExternalBlob)) {
- auto descriptorInfoOpt =
- HostmemIdMapping::get()->removeDescriptorInfo(create_blob->blob_id);
- if (descriptorInfoOpt) {
- e.descriptorInfo =
- std::make_shared<ManagedDescriptorInfo>(std::move(*descriptorInfoOpt));
- } else {
- return -EINVAL;
- }
+ if (create_blob->blob_mem == STREAM_BLOB_MEM_GUEST &&
+ (create_blob->blob_flags & STREAM_BLOB_FLAG_CREATE_GUEST_HANDLE)) {
+#if defined(__linux__) || defined(__QNX__)
+ ManagedDescriptor managedHandle(handle->os_handle);
+ HostmemIdMapping::get()->addDescriptorInfo(create_blob->blob_id,
+ std::move(managedHandle),
+ handle->handle_type, 0, std::nullopt);
- e.caching = e.descriptorInfo->caching;
+ e.caching = STREAM_RENDERER_MAP_CACHE_CACHED;
+#else
+ return -EINVAL;
+#endif
+ } else {
+ auto descriptorInfoOpt =
+ HostmemIdMapping::get()->removeDescriptorInfo(create_blob->blob_id);
+ if (descriptorInfoOpt) {
+ e.descriptorInfo =
+ std::make_shared<ManagedDescriptorInfo>(std::move(*descriptorInfoOpt));
+ } else {
+ return -EINVAL;
+ }
+
+ e.caching = e.descriptorInfo->caching;
+ }
} else {
auto entry = HostmemIdMapping::get()->get(create_blob->blob_id);
e.hva = entry.hva;