Skip to content

Commit

Permalink
drm/qxl: track primary bo
Browse files Browse the repository at this point in the history
Track which bo is used as primary surface.  With that in place we don't
need the primary_created flag any more, we can just check the primary bo
pointer instead.

Also verify we don't already have a primary surface in
qxl_io_create_primary().

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Noralf Trønnes <noralf@tronnes.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-13-kraxel@redhat.com
  • Loading branch information
Gerd Hoffmann committed Jan 28, 2019
1 parent fb7ebc0 commit 1662054
Showing 3 changed files with 7 additions and 4 deletions.
7 changes: 5 additions & 2 deletions drivers/gpu/drm/qxl/qxl_cmd.c
Original file line number Diff line number Diff line change
@@ -374,13 +374,16 @@ void qxl_io_flush_surfaces(struct qxl_device *qdev)
void qxl_io_destroy_primary(struct qxl_device *qdev)
{
wait_for_io_cmd(qdev, 0, QXL_IO_DESTROY_PRIMARY_ASYNC);
qdev->primary_created = false;
qdev->primary_bo = NULL;
}

void qxl_io_create_primary(struct qxl_device *qdev, struct qxl_bo *bo)
{
struct qxl_surface_create *create;

if (WARN_ON(qdev->primary_bo))
return;

DRM_DEBUG_DRIVER("qdev %p, ram_header %p\n", qdev, qdev->ram_header);
create = &qdev->ram_header->create_surface;
create->format = bo->surf.format;
@@ -399,7 +402,7 @@ void qxl_io_create_primary(struct qxl_device *qdev, struct qxl_bo *bo)
create->type = QXL_SURF_TYPE_PRIMARY;

wait_for_io_cmd(qdev, 0, QXL_IO_CREATE_PRIMARY_ASYNC);
qdev->primary_created = true;
qdev->primary_bo = bo;
}

void qxl_io_memslot_add(struct qxl_device *qdev, uint8_t id)
2 changes: 1 addition & 1 deletion drivers/gpu/drm/qxl/qxl_display.c
Original file line number Diff line number Diff line change
@@ -302,7 +302,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc,
struct qxl_head head;
int oldcount, i = qcrtc->index;

if (!qdev->primary_created) {
if (!qdev->primary_bo) {
DRM_DEBUG_KMS("no primary surface, skip (%s)\n", reason);
return;
}
2 changes: 1 addition & 1 deletion drivers/gpu/drm/qxl/qxl_drv.h
Original file line number Diff line number Diff line change
@@ -229,7 +229,7 @@ struct qxl_device {

struct qxl_ram_header *ram_header;

unsigned int primary_created:1;
struct qxl_bo *primary_bo;

struct qxl_memslot main_slot;
struct qxl_memslot surfaces_slot;

0 comments on commit 1662054

Please sign in to comment.