Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 1ad6adf1afb72cac066cf4d188098c9c > files > 5

xorg-x11-drv-qxl-0.1.0-2.fc18.src.rpm

From c819c0c6b1f80cde00fb61893facbf01ebedad09 Mon Sep 17 00:00:00 2001
Message-Id: <c819c0c6b1f80cde00fb61893facbf01ebedad09.1358430965.git.uril@redhat.com>
In-Reply-To: <cover.1358430965.git.uril@redhat.com>
References: <cover.1358430965.git.uril@redhat.com>
From: Uri Lublin <uril@redhat.com>
Date: Mon, 14 Jan 2013 15:06:57 +0200
Subject: [xf86 qxl driver PATCH 2/5] qxl_pre_init: fix calculation of available video memory

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