From aa4e85ab420f6911e27f7da083ba1ca9483452d6 Mon Sep 17 00:00:00 2001 From: Gurchetan Singh Date: Thu, 11 Jul 2024 12:25:23 -0700 Subject: [PATCH] gfxstream: kumquat: unmap memory when needed Forgot this. Reviewed-by: Aaron Ruby Acked-by: Yonggang Luo Acked-by: Adam Jackson Part-of: --- .../guest/platform/kumquat/VirtGpuKumquat.h | 6 +++--- .../guest/platform/kumquat/VirtGpuKumquatBlob.cpp | 4 ++-- .../kumquat/VirtGpuKumquatBlobMapping.cpp | 15 +++++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h index 624decec61c..5ab27995a68 100644 --- a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h +++ b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h @@ -40,7 +40,6 @@ class VirtGpuKumquatResource : public std::enable_shared_from_this(shared_from_this(), (uint8_t*)map.ptr, - mSize); + return std::make_shared(shared_from_this(), mVirtGpu, + (uint8_t*)map.ptr, mSize); } int VirtGpuKumquatResource::exportBlob(struct VirtGpuExternalHandle& handle) { diff --git a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp index e4869db4109..c932e938158 100644 --- a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp +++ b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp @@ -15,11 +15,18 @@ */ #include "VirtGpuKumquat.h" +#include "cutils/log.h" -VirtGpuKumquatResourceMapping::VirtGpuKumquatResourceMapping(VirtGpuResourcePtr blob, uint8_t* ptr, - uint64_t size) - : mBlob(blob), mPtr(ptr), mSize(size) {} +VirtGpuKumquatResourceMapping::VirtGpuKumquatResourceMapping(VirtGpuResourcePtr blob, + struct virtgpu_kumquat* virtGpu, + uint8_t* ptr, uint64_t size) + : mBlob(blob), mVirtGpu(virtGpu), mPtr(ptr), mSize(size) {} -VirtGpuKumquatResourceMapping::~VirtGpuKumquatResourceMapping(void) { return; } +VirtGpuKumquatResourceMapping::~VirtGpuKumquatResourceMapping(void) { + int32_t ret = virtgpu_kumquat_resource_unmap(mVirtGpu, mBlob->getBlobHandle()); + if (ret) { + ALOGE("failed to unmap buffer"); + } +} uint8_t* VirtGpuKumquatResourceMapping::asRawPtr(void) { return mPtr; }