[Spice-devel] [xf86 qxl driver PATCH 2/5] qxl_pre_init: fix calculation of available video memory
Uri Lublin
uril at redhat.com
Thu Jan 17 06:26:32 PST 2013
Don't forget to substract monitors_config area.
Memory map of qxl RAM looks something like the following:
---------------------
| |
| Surface0 Area |
| |
---------------------
| |
| |
| Video Pages |
| |
| |
---------------------
| Monitors Config |
---------------------
| RAM Header |
---------------------
---
src/qxl_driver.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/qxl_driver.c b/src/qxl_driver.c
index e289c70..1a253d2 100644
--- a/src/qxl_driver.c
+++ b/src/qxl_driver.c
@@ -2453,7 +2453,13 @@ qxl_pre_init (ScrnInfoPtr pScrn, int flags)
#else
xspice_init_qxl_ram (qxl); /* initialize the rings */
#endif
- pScrn->videoRam = (qxl->rom->num_pages * 4096) / 1024;
+
+#define DIV_ROUND_UP(n, a) (((n) + (a) - 1) / (a))
+#define BYTES_TO_KB(bytes) DIV_ROUND_UP(bytes, 1024)
+#define PAGES_TO_KB(pages) ((pages) * getpagesize() / 1024)
+
+ pScrn->videoRam = PAGES_TO_KB(qxl->rom->num_pages)
+ - BYTES_TO_KB(qxl->monitors_config_size);
xf86DrvMsg (scrnIndex, X_INFO, "%d KB of video RAM\n", pScrn->videoRam);
xf86DrvMsg (scrnIndex, X_INFO, "%d surfaces\n", qxl->rom->n_surfaces);
--
1.7.1
More information about the Spice-devel
mailing list