summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKevin Brace <kevinbrace@gmx.com>2020-02-12 13:10:55 -0800
committerKevin Brace <kevinbrace@gmx.com>2020-02-12 13:10:55 -0800
commit024604a73ef7a1720c08aa48103952c0047f6adb (patch)
treee64b0f1d2f3241233f2501acee3c6fcfa39df1d7 /src
parent99059ff049211bf4407a40f3d61589967a101aa0 (diff)
Rewrite viaOffScreenLinear()
Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
Diffstat (limited to 'src')
-rw-r--r--src/via_driver.h1
-rw-r--r--src/via_memmgr.c24
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 "