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)) {
|
if (virtio_gpu_edid_enabled(g->conf)) {
|
||||||
features |= (1 << VIRTIO_GPU_F_EDID);
|
features |= (1 << VIRTIO_GPU_F_EDID);
|
||||||
}
|
}
|
||||||
|
if (virtio_gpu_blob_enabled(g->conf)) {
|
||||||
|
features |= (1 << VIRTIO_GPU_F_RESOURCE_BLOB);
|
||||||
|
}
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -1108,6 +1108,18 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)
|
|||||||
VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
|
VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
|
||||||
VirtIOGPU *g = VIRTIO_GPU(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,
|
if (!virtio_gpu_base_device_realize(qdev,
|
||||||
virtio_gpu_handle_ctrl_cb,
|
virtio_gpu_handle_ctrl_cb,
|
||||||
virtio_gpu_handle_cursor_cb,
|
virtio_gpu_handle_cursor_cb,
|
||||||
@ -1201,6 +1213,8 @@ static Property virtio_gpu_properties[] = {
|
|||||||
VIRTIO_GPU_BASE_PROPERTIES(VirtIOGPU, parent_obj.conf),
|
VIRTIO_GPU_BASE_PROPERTIES(VirtIOGPU, parent_obj.conf),
|
||||||
DEFINE_PROP_SIZE("max_hostmem", VirtIOGPU, conf_max_hostmem,
|
DEFINE_PROP_SIZE("max_hostmem", VirtIOGPU, conf_max_hostmem,
|
||||||
256 * MiB),
|
256 * MiB),
|
||||||
|
DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags,
|
||||||
|
VIRTIO_GPU_FLAG_BLOB_ENABLED, false),
|
||||||
DEFINE_PROP_END_OF_LIST(),
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -89,6 +89,7 @@ enum virtio_gpu_base_conf_flags {
|
|||||||
VIRTIO_GPU_FLAG_STATS_ENABLED,
|
VIRTIO_GPU_FLAG_STATS_ENABLED,
|
||||||
VIRTIO_GPU_FLAG_EDID_ENABLED,
|
VIRTIO_GPU_FLAG_EDID_ENABLED,
|
||||||
VIRTIO_GPU_FLAG_DMABUF_ENABLED,
|
VIRTIO_GPU_FLAG_DMABUF_ENABLED,
|
||||||
|
VIRTIO_GPU_FLAG_BLOB_ENABLED,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define virtio_gpu_virgl_enabled(_cfg) \
|
#define virtio_gpu_virgl_enabled(_cfg) \
|
||||||
@ -99,6 +100,8 @@ enum virtio_gpu_base_conf_flags {
|
|||||||
(_cfg.flags & (1 << VIRTIO_GPU_FLAG_EDID_ENABLED))
|
(_cfg.flags & (1 << VIRTIO_GPU_FLAG_EDID_ENABLED))
|
||||||
#define virtio_gpu_dmabuf_enabled(_cfg) \
|
#define virtio_gpu_dmabuf_enabled(_cfg) \
|
||||||
(_cfg.flags & (1 << VIRTIO_GPU_FLAG_DMABUF_ENABLED))
|
(_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 {
|
struct virtio_gpu_base_conf {
|
||||||
uint32_t max_outputs;
|
uint32_t max_outputs;
|
||||||
|
Loading…
Reference in New Issue
Block a user