diff --git a/src/amd/common/sid.h b/src/amd/common/sid.h index 4249dfb9bef..ab7772c1e94 100644 --- a/src/amd/common/sid.h +++ b/src/amd/common/sid.h @@ -403,4 +403,9 @@ enum amd_cmp_class_flags P_INFINITY = 1 << 9 // Positive infinity }; +/* Use the last bit of AMDGPU_GEM_CREATE_* flag as a virtio-only + * flag. + */ +#define AMDGPU_GEM_CREATE_VIRTIO_SHARED 1u << 31 + #endif /* _SID_H */ diff --git a/src/amd/common/virtio/amdgpu_virtio_bo.c b/src/amd/common/virtio/amdgpu_virtio_bo.c index dc6505ffe1e..999816142cb 100644 --- a/src/amd/common/virtio/amdgpu_virtio_bo.c +++ b/src/amd/common/virtio/amdgpu_virtio_bo.c @@ -13,6 +13,7 @@ #include "util/os_mman.h" #include "util/os_time.h" #include "util/u_math.h" +#include "sid.h" #include #include @@ -177,6 +178,11 @@ int amdvgpu_bo_alloc(amdvgpu_device_handle dev, if (!(request->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)) blob_flags |= VIRTGPU_BLOB_FLAG_USE_MAPPABLE; + if (request->flags & AMDGPU_GEM_CREATE_VIRTIO_SHARED) { + blob_flags |= VIRTGPU_BLOB_FLAG_USE_SHAREABLE; + req.r.flags &= ~AMDGPU_GEM_CREATE_VIRTIO_SHARED; + } + /* blob_id 0 is reserved for the shared memory buffer. */ assert(req.blob_id > 0);