diff options
author | Kevin Brace <kevinbrace@gmx.com> | 2020-02-12 13:10:55 -0800 |
---|---|---|
committer | Kevin Brace <kevinbrace@gmx.com> | 2020-02-12 13:10:55 -0800 |
commit | 024604a73ef7a1720c08aa48103952c0047f6adb (patch) | |
tree | e64b0f1d2f3241233f2501acee3c6fcfa39df1d7 /src | |
parent | 99059ff049211bf4407a40f3d61589967a101aa0 (diff) |
Rewrite viaOffScreenLinear()
Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/via_driver.h | 1 | ||||
-rw-r--r-- | src/via_memmgr.c | 24 |
2 files changed, 15 insertions, 10 deletions
diff --git a/src/via_driver.h b/src/via_driver.h index c7e1fe9..1e5c49d 100644 --- a/src/via_driver.h +++ b/src/via_driver.h @@ -468,7 +468,6 @@ Bool VIADRIBufferInit(ScrnInfoPtr pScrn); #endif /* HAVE_DRI */ -int viaOffScreenLinear(struct buffer_object *obj, ScrnInfoPtr pScrn, unsigned long size); void viaShowCursor(ScrnInfoPtr pScrn); void viaHideCursor(ScrnInfoPtr pScrn); Bool viaHWCursorInit(ScreenPtr pScreen); diff --git a/src/via_memmgr.c b/src/via_memmgr.c index a1dae77..78c31d4 100644 --- a/src/via_memmgr.c +++ b/src/via_memmgr.c @@ -51,23 +51,29 @@ * 1 - xf86 linear * 2 - DRM */ -int -viaOffScreenLinear(struct buffer_object *obj, ScrnInfoPtr pScrn, - unsigned long size) +static int +viaOffScreenLinear(ScrnInfoPtr pScrn, struct buffer_object *obj, + unsigned long size) { - int depth = pScrn->bitsPerPixel >> 3; FBLinearPtr linear; + int depth = pScrn->bitsPerPixel / 8; + int ret = 0; linear = xf86AllocateOffscreenLinear(pScrn->pScreen, (size + depth - 1) / depth, 32, NULL, NULL, NULL); - if (!linear) - return BadAlloc; + if (!linear) { + ret = -ENOMEM; + goto exit; + } + obj->offset = linear->offset * depth; obj->handle = (unsigned long) linear; obj->domain = TTM_PL_FLAG_VRAM; obj->size = size; - return Success; + +exit: + return ret; } struct buffer_object * @@ -89,11 +95,11 @@ drm_bo_alloc(ScrnInfoPtr pScrn, unsigned int size, unsigned int alignment, int d case TTM_PL_FLAG_TT: case TTM_PL_FLAG_VRAM: if (pVia->directRenderingType == DRI_NONE) { - if (Success != viaOffScreenLinear(obj, pScrn, size)) { + ret = viaOffScreenLinear(pScrn, obj, size); + if (ret) { DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Linear memory allocation " "failed.\n")); - ret = -ENOMEM; } else DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%lu bytes of linear memory " |