diff options
author | James Simmons <jsimmons@infradead.org> | 2012-04-01 13:50:42 -0400 |
---|---|---|
committer | James Simmons <jsimmons@infradead.org> | 2012-04-01 13:50:42 -0400 |
commit | 6f169b04c530d6dd6e3d2256a109cc250178bd39 (patch) | |
tree | d56d09863775bcd7ceab8f1e4ab6f54d68d2e13d | |
parent | 18117a8ec3c3afa87a7cf19220063fe9101fb59e (diff) |
Pass in the pitch variable for allocating a surface. Will be used for EXA dynamic allocation
-rw-r--r-- | src/via_driver.c | 15 | ||||
-rw-r--r-- | src/via_kms.c | 5 | ||||
-rw-r--r-- | src/via_memmgr.c | 11 | ||||
-rw-r--r-- | src/via_memmgr.h | 2 |
4 files changed, 14 insertions, 19 deletions
diff --git a/src/via_driver.c b/src/via_driver.c index efb2b92..7637ce6 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -804,13 +804,12 @@ via_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) old_fb_id = drmmode->fb_id; old_front = drmmode->front_bo; - drmmode->front_bo = drm_bo_alloc_surface(scrn, width * cpp, height, - 0, 16, TTM_PL_FLAG_VRAM); + pitch = width * cpp; + drmmode->front_bo = drm_bo_alloc_surface(scrn, &pitch, height, 0, + 16, TTM_PL_FLAG_VRAM); if (!drmmode->front_bo) goto fail; - pitch = drmmode->front_bo->pitch; - if (pVia->KMS) { if (drmModeAddFB(drmmode->fd, width, height, scrn->depth, scrn->bitsPerPixel, pitch, @@ -1772,7 +1771,7 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); VIAPtr pVia = VIAPTR(pScrn); - int size, i; + int pitch, i; pScrn->pScreen = pScreen; pScrn->displayWidth = pScrn->virtualX; @@ -1801,8 +1800,8 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) if (!drm_bo_manager_init(pScrn)) return FALSE; - size = pScrn->virtualX * pScrn->bitsPerPixel >> 3; - pVia->drmmode.front_bo = drm_bo_alloc_surface(pScrn, size, pScrn->virtualY, + pitch = pScrn->virtualX * pScrn->bitsPerPixel >> 3; + pVia->drmmode.front_bo = drm_bo_alloc_surface(pScrn, &pitch, pScrn->virtualY, 0, 16, TTM_PL_FLAG_VRAM); if (!pVia->drmmode.front_bo) return FALSE; @@ -1886,7 +1885,7 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); int flags = (HARDWARE_CURSOR_AND_SOURCE_WITH_MASK | HARDWARE_CURSOR_TRUECOLOR_AT_8BPP); - int cursorSize, i = 0; + int cursorSize, size, i = 0; switch (pVia->Chipset) { case VIA_CLE266: diff --git a/src/via_kms.c b/src/via_kms.c index 16cbac5..bda6eba 100644 --- a/src/via_kms.c +++ b/src/via_kms.c @@ -830,13 +830,12 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height) old_fb_id = drmmode->fb_id; old_front = drmmode->front_bo; - drmmode->front_bo = drm_bo_alloc_surface(scrn, width * cpp, height, 0, 16, + pitch = width * cpp; + drmmode->front_bo = drm_bo_alloc_surface(scrn, &pitch, height, 0, 16, TTM_PL_FLAG_VRAM); if (!drmmode->front_bo) goto fail; - pitch = drmmode->front_bo->pitch; - scrn->virtualX = width; scrn->virtualY = height; scrn->displayWidth = pitch / cpp; diff --git a/src/via_memmgr.c b/src/via_memmgr.c index 2e72ffd..65ef5a7 100644 --- a/src/via_memmgr.c +++ b/src/via_memmgr.c @@ -70,18 +70,15 @@ viaOffScreenLinear(struct buffer_object *obj, ScrnInfoPtr pScrn, } struct buffer_object * -drm_bo_alloc_surface(ScrnInfoPtr pScrn, unsigned int width, unsigned int height, +drm_bo_alloc_surface(ScrnInfoPtr pScrn, unsigned int *pitch, unsigned int height, int format, unsigned int alignment, int domain) { struct buffer_object *obj = NULL; - unsigned int pitch, size; - pitch = ALIGN_TO(width, 16); - size = pitch * height; - - obj = drm_bo_alloc(pScrn, size, alignment, domain); + *pitch = ALIGN_TO(*pitch, alignment); + obj = drm_bo_alloc(pScrn, *pitch * height, alignment, domain); if (obj) - obj->pitch = pitch; + obj->pitch = *pitch; return obj; } diff --git a/src/via_memmgr.h b/src/via_memmgr.h index db87666..933c88b 100644 --- a/src/via_memmgr.h +++ b/src/via_memmgr.h @@ -42,7 +42,7 @@ struct buffer_object { Bool drm_bo_manager_init(ScrnInfoPtr pScrn); struct buffer_object * -drm_bo_alloc_surface(ScrnInfoPtr pScrn, unsigned int width, unsigned int height, +drm_bo_alloc_surface(ScrnInfoPtr pScrn, unsigned int *pitch, unsigned int height, int format, unsigned int alignment, int domain); struct buffer_object * drm_bo_alloc(ScrnInfoPtr pScrn, unsigned int size, unsigned int alignment, |