virtio-gpu: Factor out update scanout
Creating a small helper function for updating the scanout will be useful in the next patch where this needs to be done early in do_set_scanout before returning. Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Message-Id: <20210526231429.1045476-13-vivek.kasireddy@intel.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
5752519e93
commit
81cd9f7108
@ -556,6 +556,28 @@ static void virtio_unref_resource(pixman_image_t *image, void *data)
|
||||
pixman_image_unref(data);
|
||||
}
|
||||
|
||||
static void virtio_gpu_update_scanout(VirtIOGPU *g,
|
||||
uint32_t scanout_id,
|
||||
struct virtio_gpu_simple_resource *res,
|
||||
struct virtio_gpu_rect *r)
|
||||
{
|
||||
struct virtio_gpu_simple_resource *ores;
|
||||
struct virtio_gpu_scanout *scanout;
|
||||
|
||||
scanout = &g->parent_obj.scanout[scanout_id];
|
||||
ores = virtio_gpu_find_resource(g, scanout->resource_id);
|
||||
if (ores) {
|
||||
ores->scanout_bitmask &= ~(1 << scanout_id);
|
||||
}
|
||||
|
||||
res->scanout_bitmask |= (1 << scanout_id);
|
||||
scanout->resource_id = res->resource_id;
|
||||
scanout->x = r->x;
|
||||
scanout->y = r->y;
|
||||
scanout->width = r->width;
|
||||
scanout->height = r->height;
|
||||
}
|
||||
|
||||
static void virtio_gpu_do_set_scanout(VirtIOGPU *g,
|
||||
uint32_t scanout_id,
|
||||
struct virtio_gpu_framebuffer *fb,
|
||||
@ -563,7 +585,6 @@ static void virtio_gpu_do_set_scanout(VirtIOGPU *g,
|
||||
struct virtio_gpu_rect *r,
|
||||
uint32_t *error)
|
||||
{
|
||||
struct virtio_gpu_simple_resource *ores;
|
||||
struct virtio_gpu_scanout *scanout;
|
||||
uint8_t *data;
|
||||
|
||||
@ -623,17 +644,7 @@ static void virtio_gpu_do_set_scanout(VirtIOGPU *g,
|
||||
scanout->ds);
|
||||
}
|
||||
|
||||
ores = virtio_gpu_find_resource(g, scanout->resource_id);
|
||||
if (ores) {
|
||||
ores->scanout_bitmask &= ~(1 << scanout_id);
|
||||
}
|
||||
|
||||
res->scanout_bitmask |= (1 << scanout_id);
|
||||
scanout->resource_id = res->resource_id;
|
||||
scanout->x = r->x;
|
||||
scanout->y = r->y;
|
||||
scanout->width = r->width;
|
||||
scanout->height = r->height;
|
||||
virtio_gpu_update_scanout(g, scanout_id, res, r);
|
||||
}
|
||||
|
||||
static void virtio_gpu_set_scanout(VirtIOGPU *g,
|
||||
|
Loading…
x
Reference in New Issue
Block a user