summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Simmons <jsimmons@infradead.org>2012-04-01 13:50:42 -0400
committerJames Simmons <jsimmons@infradead.org>2012-04-01 13:50:42 -0400
commit6f169b04c530d6dd6e3d2256a109cc250178bd39 (patch)
treed56d09863775bcd7ceab8f1e4ab6f54d68d2e13d
parent18117a8ec3c3afa87a7cf19220063fe9101fb59e (diff)
Pass in the pitch variable for allocating a surface. Will be used for EXA dynamic allocation
-rw-r--r--src/via_driver.c15
-rw-r--r--src/via_kms.c5
-rw-r--r--src/via_memmgr.c11
-rw-r--r--src/via_memmgr.h2
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,