virtio-gpu: Add initial definitions for blob resources
Add the property bit, configuration flag and other relevant macros and definitions associated with this feature. Based-on-patch-by: Gerd Hoffmann <kraxel@redhat.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Message-Id: <20210526231429.1045476-9-vivek.kasireddy@intel.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
70d3766231
commit
cce386e19e
@ -208,6 +208,9 @@ virtio_gpu_base_get_features(VirtIODevice *vdev, uint64_t features,
|
||||
if (virtio_gpu_edid_enabled(g->conf)) {
|
||||
features |= (1 << VIRTIO_GPU_F_EDID);
|
||||
}
|
||||
if (virtio_gpu_blob_enabled(g->conf)) {
|
||||
features |= (1 << VIRTIO_GPU_F_RESOURCE_BLOB);
|
||||
}
|
||||
|
||||
return features;
|
||||
}
|
||||
|
@ -1108,6 +1108,18 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)
|
||||
VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
|
||||
VirtIOGPU *g = VIRTIO_GPU(qdev);
|
||||
|
||||
if (virtio_gpu_blob_enabled(g->parent_obj.conf)) {
|
||||
if (!virtio_gpu_have_udmabuf()) {
|
||||
error_setg(errp, "cannot enable blob resources without udmabuf");
|
||||
return;
|
||||
}
|
||||
|
||||
if (virtio_gpu_virgl_enabled(g->parent_obj.conf)) {
|
||||
error_setg(errp, "blobs and virgl are not compatible (yet)");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!virtio_gpu_base_device_realize(qdev,
|
||||
virtio_gpu_handle_ctrl_cb,
|
||||
virtio_gpu_handle_cursor_cb,
|
||||
@ -1201,6 +1213,8 @@ static Property virtio_gpu_properties[] = {
|
||||
VIRTIO_GPU_BASE_PROPERTIES(VirtIOGPU, parent_obj.conf),
|
||||
DEFINE_PROP_SIZE("max_hostmem", VirtIOGPU, conf_max_hostmem,
|
||||
256 * MiB),
|
||||
DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags,
|
||||
VIRTIO_GPU_FLAG_BLOB_ENABLED, false),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
|
@ -89,6 +89,7 @@ enum virtio_gpu_base_conf_flags {
|
||||
VIRTIO_GPU_FLAG_STATS_ENABLED,
|
||||
VIRTIO_GPU_FLAG_EDID_ENABLED,
|
||||
VIRTIO_GPU_FLAG_DMABUF_ENABLED,
|
||||
VIRTIO_GPU_FLAG_BLOB_ENABLED,
|
||||
};
|
||||
|
||||
#define virtio_gpu_virgl_enabled(_cfg) \
|
||||
@ -99,6 +100,8 @@ enum virtio_gpu_base_conf_flags {
|
||||
(_cfg.flags & (1 << VIRTIO_GPU_FLAG_EDID_ENABLED))
|
||||
#define virtio_gpu_dmabuf_enabled(_cfg) \
|
||||
(_cfg.flags & (1 << VIRTIO_GPU_FLAG_DMABUF_ENABLED))
|
||||
#define virtio_gpu_blob_enabled(_cfg) \
|
||||
(_cfg.flags & (1 << VIRTIO_GPU_FLAG_BLOB_ENABLED))
|
||||
|
||||
struct virtio_gpu_base_conf {
|
||||
uint32_t max_outputs;
|
||||
|
Loading…
Reference in New Issue
Block a user