diff options
author | Soren Sandmann <ssp@localhost.localdomain> | 2010-04-19 09:31:08 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-09-14 06:32:08 -0400 |
commit | 586669561b01e289f989911cd363810420539435 (patch) | |
tree | ca115a8a125d616cb57cefb01a4c149b7da52010 | |
parent | e04e850ed7d07fc12f941fd13a5fc6f32f7153e1 (diff) |
Set correct amount of video memory
-rw-r--r-- | src/qxl_driver.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/qxl_driver.c b/src/qxl_driver.c index 1ec9317..1dc5b8e 100644 --- a/src/qxl_driver.c +++ b/src/qxl_driver.c @@ -1226,7 +1226,9 @@ qxl_check_device(ScrnInfoPtr pScrn, qxl_screen_t *qxl) qxl->draw_area_offset = rom->draw_area_offset; qxl->draw_area_size = rom->draw_area_size; - pScrn->videoRam = rom->draw_area_size / 1024; + pScrn->videoRam = (rom->num_io_pages * 4096) / 1024; + + xf86DrvMsg(scrnIndex, X_INFO, "%d KB of video RAM\n", pScrn->videoRam); return TRUE; } @@ -1269,6 +1271,7 @@ static ModeStatus qxl_valid_mode(int scrn, DisplayModePtr p, Bool flag, int pass) { ScrnInfoPtr pScrn = xf86Screens[scrn]; + int scrnIndex = pScrn->scrnIndex; qxl_screen_t *qxl = pScrn->driverPrivate; int bpp = pScrn->bitsPerPixel; int mode_idx; @@ -1277,14 +1280,21 @@ qxl_valid_mode(int scrn, DisplayModePtr p, Bool flag, int pass) * correct amount of video ram? */ if (p->HDisplay * p->VDisplay * (bpp/8) > qxl->draw_area_size) + { + xf86DrvMsg(scrnIndex, X_INFO, "rejecting mode %d x %d: insufficient memory\n", p->HDisplay, p->VDisplay); return MODE_MEM; + } mode_idx = qxl_find_native_mode (pScrn, p); if (mode_idx == -1) + { + xf86DrvMsg(scrnIndex, X_INFO, "rejecting unknown mode %d x %d\n", p->HDisplay, p->VDisplay); return MODE_NOMODE; - + } p->Private = (void *)(unsigned long)mode_idx; + xf86DrvMsg (scrnIndex, X_INFO, "accepting %d x %d\n", p->HDisplay, p->VDisplay); + return MODE_OK; } |