summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-07-22 18:10:57 +0300
committerAlon Levy <alevy@redhat.com>2012-10-23 18:46:58 +0200
commit9dfa77c2a4a3b06b54a1f3f39bcd16cd2db2c665 (patch)
treed9c34360a96b2f3b7eb43dbd62e1984b07a84a49
parentd68c7d0e54ba9641955299d1516d9e3e3286217e (diff)
squash to create_primary
-rw-r--r--src/qxl.h3
-rw-r--r--src/qxl_driver.c12
2 files changed, 10 insertions, 5 deletions
diff --git a/src/qxl.h b/src/qxl.h
index 5afa016..94c565d 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -151,7 +151,8 @@ struct _qxl_screen_t
struct qxl_ring * release_ring;
int device_primary;
-
+ uint32_t primary_handle;
+
int num_modes;
struct QXLMode * modes;
int io_base;
diff --git a/src/qxl_driver.c b/src/qxl_driver.c
index 70c7012..61c61a5 100644
--- a/src/qxl_driver.c
+++ b/src/qxl_driver.c
@@ -221,10 +221,9 @@ qxl_io_create_primary (qxl_screen_t *qxl)
#else
ioport_write (qxl, QXL_IO_CREATE_PRIMARY, 0);
#endif
- qxl->device_primary = QXL_DEVICE_PRIMARY_CREATED;
}
-static uint64_t qxl_kms_alloc_resource(qxl_screen_t *qxl,
+static uint32_t qxl_kms_alloc_resource(qxl_screen_t *qxl,
uint32_t size, uint32_t type)
{
struct drm_qxl_alloc alloc;
@@ -239,7 +238,8 @@ static uint64_t qxl_kms_alloc_resource(qxl_screen_t *qxl,
"error doing QXL_ALLOC\n");
return 0; // an invalid handle
}
- return alloc.handle;
+ // TODO - remove cast as soon as alloc is updated
+ return (uint32_t)alloc.handle;
}
static void *
@@ -276,9 +276,11 @@ qxl_kms_create_primary_surface(qxl_screen_t *qxl, QXLMode *mode)
// NB: size needs to match closely with mode.
size_t size = 640*480*4;
- uint64_t handle = qxl_kms_alloc_resource(qxl, size,
+ uint32_t handle = qxl_kms_alloc_resource(qxl, size,
QXL_ALLOC_TYPE_SURFACE_PRIMARY);
// NB: we may be repeatedly mapping here. should be cached.
+ qxl->device_primary = QXL_DEVICE_PRIMARY_CREATED;
+ qxl->primary_handle = handle;
return qxl_kms_mmap(qxl, handle, size);
}
@@ -298,6 +300,8 @@ qxl_ums_create_primary_surface(qxl_screen_t *qxl, QXLMode *mode)
create->type = QXL_SURF_TYPE_PRIMARY;
create->mem = physical_address (qxl, qxl->ram, qxl->main_mem_slot);
qxl_io_create_primary(qxl);
+ qxl->device_primary = QXL_DEVICE_PRIMARY_CREATED;
+ qxl->primary_handle = 0;
return (uint8_t *)qxl->ram + mode->stride * (mode->y_res - 1);
}