diff --git a/src/gfxstream/guest/platform/VirtGpu.cpp b/src/gfxstream/guest/platform/VirtGpu.cpp index 9fbe57e6568..2fe9319d8ff 100644 --- a/src/gfxstream/guest/platform/VirtGpu.cpp +++ b/src/gfxstream/guest/platform/VirtGpu.cpp @@ -15,7 +15,6 @@ */ #include "VirtGpu.h" - #include namespace { @@ -24,10 +23,6 @@ static VirtGpuDevice* sDevice = nullptr; } // namespace VirtGpuDevice* VirtGpuDevice::getInstance(enum VirtGpuCapset capset) { - if (sDevice && sDevice->capset() != capset) { - ALOGE("Requested VirtGpuDevice capset %u, already created capset %u", capset, sDevice->capset()); - return nullptr; - } if (!sDevice) { sDevice = createPlatformVirtGpuDevice(capset); } diff --git a/src/gfxstream/guest/platform/include/VirtGpu.h b/src/gfxstream/guest/platform/include/VirtGpu.h index 6e6c0cfc9d2..6fa4224660f 100644 --- a/src/gfxstream/guest/platform/include/VirtGpu.h +++ b/src/gfxstream/guest/platform/include/VirtGpu.h @@ -145,11 +145,8 @@ class VirtGpuDevice { static VirtGpuDevice* getInstance(enum VirtGpuCapset capset = kCapsetNone); static void setInstanceForTesting(VirtGpuDevice* device); - VirtGpuDevice(enum VirtGpuCapset capset) : mCapset(capset) {} virtual ~VirtGpuDevice() {} - enum VirtGpuCapset capset() { return mCapset; } - virtual int64_t getDeviceHandle(void) = 0; virtual struct VirtGpuCaps getCaps(void) = 0; @@ -159,9 +156,6 @@ class VirtGpuDevice { virtual VirtGpuBlobPtr importBlob(const struct VirtGpuExternalHandle& handle) = 0; virtual int execBuffer(struct VirtGpuExecBuffer& execbuffer, VirtGpuBlobPtr blob) = 0; - - private: - enum VirtGpuCapset mCapset; }; VirtGpuDevice* createPlatformVirtGpuDevice(enum VirtGpuCapset capset = kCapsetNone, int fd = -1); diff --git a/src/gfxstream/guest/platform/linux/LinuxVirtGpu.h b/src/gfxstream/guest/platform/linux/LinuxVirtGpu.h index 5a89f58c1d7..b39306317ca 100644 --- a/src/gfxstream/guest/platform/linux/LinuxVirtGpu.h +++ b/src/gfxstream/guest/platform/linux/LinuxVirtGpu.h @@ -74,4 +74,5 @@ class LinuxVirtGpuDevice : public VirtGpuDevice { private: int64_t mDeviceHandle; struct VirtGpuCaps mCaps; + enum VirtGpuCapset mCapset; }; diff --git a/src/gfxstream/guest/platform/linux/LinuxVirtGpuDevice.cpp b/src/gfxstream/guest/platform/linux/LinuxVirtGpuDevice.cpp index cc3b6d1e04f..0821b7978e6 100644 --- a/src/gfxstream/guest/platform/linux/LinuxVirtGpuDevice.cpp +++ b/src/gfxstream/guest/platform/linux/LinuxVirtGpuDevice.cpp @@ -39,7 +39,7 @@ #define VIRGL_BIND_CUSTOM (1 << 17) #define PIPE_BUFFER 0 -LinuxVirtGpuDevice::LinuxVirtGpuDevice(enum VirtGpuCapset capset, int fd) : VirtGpuDevice(capset) { +LinuxVirtGpuDevice::LinuxVirtGpuDevice(enum VirtGpuCapset capset, int fd) { struct VirtGpuParam params[] = { PARAM(VIRTGPU_PARAM_3D_FEATURES), PARAM(VIRTGPU_PARAM_CAPSET_QUERY_FIX), PARAM(VIRTGPU_PARAM_RESOURCE_BLOB), PARAM(VIRTGPU_PARAM_HOST_VISIBLE), @@ -110,6 +110,8 @@ LinuxVirtGpuDevice::LinuxVirtGpuDevice(enum VirtGpuCapset capset, int fd) : Virt get_caps.size = 0; } + mCapset = capset; + ret = drmIoctl(mDeviceHandle, DRM_IOCTL_VIRTGPU_GET_CAPS, &get_caps); if (ret) { // Don't fail get capabilities just yet, AEMU doesn't use this API