Make VirtGpu* interfaces

... so that upcoming end2end tests can set up a mock impl that
interacts with the host within-process.

Bug: b/292257025
Test: m && cvd start
Change-Id: I9d1fbaf3c2e50831a03405ad4f37b477b224abd9
diff --git a/guest/vulkan_enc/ResourceTracker.cpp b/guest/vulkan_enc/ResourceTracker.cpp
index 843cf18..63ff963 100644
--- a/guest/vulkan_enc/ResourceTracker.cpp
+++ b/guest/vulkan_enc/ResourceTracker.cpp
@@ -912,8 +912,8 @@
     }
 
     void setupCaps(void) {
-        VirtGpuDevice& instance = VirtGpuDevice::getInstance((enum VirtGpuCapset)3);
-        mCaps = instance.getCaps();
+        VirtGpuDevice* instance = VirtGpuDevice::getInstance((enum VirtGpuCapset)3);
+        mCaps = instance->getCaps();
 
         // Delete once goldfish Linux drivers are gone
         if (mCaps.gfxstreamCapset.protocolVersion == 0) {
@@ -2947,13 +2947,13 @@
             }
             {
                 AutoLock<RecursiveLock> lock(mLock);
-                VirtGpuDevice& instance = VirtGpuDevice::getInstance((enum VirtGpuCapset)3);
+                VirtGpuDevice* instance = VirtGpuDevice::getInstance((enum VirtGpuCapset)3);
                 createBlob.blobMem = kBlobMemHost3d;
                 createBlob.flags = kBlobFlagMappable;
                 createBlob.blobId = hvaSizeId[2];
                 createBlob.size = hostAllocationInfo.allocationSize;
 
-                auto blob = instance.createBlob(createBlob);
+                auto blob = instance->createBlob(createBlob);
                 if (!blob) {
                     ALOGE("Failed to create coherent memory: failed to create blob.");
                     res = VK_ERROR_OUT_OF_DEVICE_MEMORY;
@@ -3040,7 +3040,7 @@
         if (mCaps.params[kParamCreateGuestHandle]) {
             struct VirtGpuCreateBlob createBlob = {0};
             struct VirtGpuExecBuffer exec = {};
-            VirtGpuDevice& instance = VirtGpuDevice::getInstance();
+            VirtGpuDevice* instance = VirtGpuDevice::getInstance();
             struct gfxstreamPlaceholderCommandVk placeholderCmd = {};
 
             createBlobInfo.blobId = ++mBlobId;
@@ -3053,7 +3053,7 @@
             createBlob.blobId = createBlobInfo.blobId;
             createBlob.size = hostAllocationInfo.allocationSize;
 
-            guestBlob = instance.createBlob(createBlob);
+            guestBlob = instance->createBlob(createBlob);
             if (!guestBlob) {
                 ALOGE("Failed to allocate coherent memory: failed to create blob.");
                 return VK_ERROR_OUT_OF_DEVICE_MEMORY;
@@ -3064,7 +3064,7 @@
             exec.command_size = sizeof(placeholderCmd);
             exec.flags = kRingIdx;
             exec.ring_idx = 1;
-            if (instance.execBuffer(exec, guestBlob)) {
+            if (instance->execBuffer(exec, guestBlob)) {
                 ALOGE("Failed to allocate coherent memory: failed to execbuffer for wait.");
                 return VK_ERROR_OUT_OF_HOST_MEMORY;
             }
@@ -3947,7 +3947,7 @@
         if (info.blobId && !info.coherentMemory && !mCaps.params[kParamCreateGuestHandle]) {
             VkEncoder* enc = (VkEncoder*)context;
             VirtGpuBlobMappingPtr mapping;
-            VirtGpuDevice& instance = VirtGpuDevice::getInstance();
+            VirtGpuDevice* instance = VirtGpuDevice::getInstance();
 
             uint64_t offset;
             uint8_t* ptr;
@@ -3961,7 +3961,7 @@
             createBlob.blobId = info.blobId;
             createBlob.size = info.coherentMemorySize;
 
-            auto blob = instance.createBlob(createBlob);
+            auto blob = instance->createBlob(createBlob);
             if (!blob) return VK_ERROR_OUT_OF_DEVICE_MEMORY;
 
             mapping = blob->createMapping();
@@ -4613,7 +4613,7 @@
     VkResult createFence(VkDevice device, uint64_t hostFenceHandle, int64_t& osHandle) {
         struct VirtGpuExecBuffer exec = { };
         struct gfxstreamCreateExportSyncVK exportSync = { };
-        VirtGpuDevice& instance = VirtGpuDevice::getInstance();
+        VirtGpuDevice* instance = VirtGpuDevice::getInstance();
 
         uint64_t hostDeviceHandle = get_host_u64_VkDevice(device);
 
@@ -4626,7 +4626,7 @@
         exec.command = static_cast<void*>(&exportSync);
         exec.command_size = sizeof(exportSync);
         exec.flags = kFenceOut | kRingIdx;
-        if (instance.execBuffer(exec, nullptr))
+        if (instance->execBuffer(exec, nullptr))
             return VK_ERROR_OUT_OF_HOST_MEMORY;
 
         osHandle = exec.handle.osHandle;
@@ -7153,7 +7153,7 @@
         if (mFeatureInfo->hasVirtioGpuNativeSync) {
             struct VirtGpuExecBuffer exec = { };
             struct gfxstreamCreateQSRIExportVK exportQSRI = { };
-            VirtGpuDevice& instance = VirtGpuDevice::getInstance();
+            VirtGpuDevice* instance = VirtGpuDevice::getInstance();
 
             uint64_t hostImageHandle = get_host_u64_VkImage(image);
 
@@ -7164,7 +7164,7 @@
             exec.command = static_cast<void*>(&exportQSRI);
             exec.command_size = sizeof(exportQSRI);
             exec.flags = kFenceOut | kRingIdx;
-            if (instance.execBuffer(exec, nullptr))
+            if (instance->execBuffer(exec, nullptr))
                 return VK_ERROR_OUT_OF_HOST_MEMORY;
 
             *fd = exec.handle.osHandle;