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;