diff options
author | Sergey Bolshakov <sbolshakov@altlinux.org> | 2013-11-13 16:05:16 +0400 |
---|---|---|
committer | Russell King <rmk@arm.linux.org.uk> | 2013-12-04 19:43:45 +0000 |
commit | 62ec1b4bcd6f952909e33b2c3db3e8d69cc38bc2 (patch) | |
tree | badb7b80a2d77dfe5e2841606dd49a508dce4546 | |
parent | 2985be9fe20fdaed2b971c3a8819686fb0f7c8e4 (diff) |
compat-api stuff added
Signed-off-by: Sergey Bolshakov <sbolshakov@altlinux.org>
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-rw-r--r-- | src/armada_drm.c | 43 | ||||
-rw-r--r-- | src/common_drm.c | 1 | ||||
-rw-r--r-- | src/compat-api.h | 101 | ||||
-rw-r--r-- | src/utils.h | 2 | ||||
-rw-r--r-- | src/vivante.c | 15 | ||||
-rw-r--r-- | src/vivante_accel.c | 18 | ||||
-rw-r--r-- | src/vivante_accel.h | 4 | ||||
-rw-r--r-- | src/vivante_compat.h | 14 | ||||
-rw-r--r-- | src/vivante_dri2.c | 43 | ||||
-rw-r--r-- | src/vivante_dri2.h | 2 |
10 files changed, 180 insertions, 63 deletions
diff --git a/src/armada_drm.c b/src/armada_drm.c index 12638c1..7f6ff11 100644 --- a/src/armada_drm.c +++ b/src/armada_drm.c @@ -20,7 +20,6 @@ #include "xf86Crtc.h" #include "xf86cmap.h" #include "fb.h" -#include "mibstore.h" #include "micmap.h" #include <xf86DDC.h> #include <X11/extensions/dpmsconst.h> @@ -30,6 +29,7 @@ #include <libudev.h> #endif +#include "compat-api.h" #include "vivante.h" #include "vivante_dri2.h" @@ -588,9 +588,9 @@ static void armada_drm_LoadPalette(ScrnInfoPtr pScrn, int num, int *indices, } } -static void armada_drm_AdjustFrame(int scrnIndex, int x, int y, int flags) +static void armada_drm_AdjustFrame(ADJUST_FRAME_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); xf86OutputPtr output = config->output[config->compat_output]; xf86CrtcPtr crtc = output->crtc; @@ -612,9 +612,9 @@ static void armada_drm_AdjustFrame(int scrnIndex, int x, int y, int flags) } } -static Bool armada_drm_EnterVT(int scrnIndex, int flags) +static Bool armada_drm_EnterVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); struct armada_drm_info *drm = GET_DRM_INFO(pScrn); int i; @@ -638,9 +638,9 @@ static Bool armada_drm_EnterVT(int scrnIndex, int flags) return TRUE; } -static void armada_drm_LeaveVT(int scrnIndex, int flags) +static void armada_drm_LeaveVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); struct armada_drm_info *drm = GET_DRM_INFO(pScrn); xf86RotateFreeShadow(pScrn); @@ -651,10 +651,10 @@ static void armada_drm_LeaveVT(int scrnIndex, int flags) } static ModeStatus -armada_drm_ValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, +armada_drm_ValidMode(SCRN_ARG_TYPE arg1, DisplayModePtr mode, Bool verbose, int flags) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg1); if (mode->Flags & V_DBLSCAN) { if (verbose) @@ -667,16 +667,16 @@ armada_drm_ValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, return MODE_OK; } -static Bool armada_drm_SwitchMode(int scrnIndex, DisplayModePtr mode, int flags) +static Bool armada_drm_SwitchMode(SWITCH_MODE_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); return xf86SetSingleMode(pScrn, mode, RR_Rotate_0); } -static Bool armada_drm_CloseScreen(int scrnIndex, ScreenPtr pScreen) +static Bool armada_drm_CloseScreen(CLOSE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); struct armada_drm_info *drm = GET_DRM_INFO(pScrn); PixmapPtr pixmap = pScreen->GetScreenPixmap(pScreen); Bool ret; @@ -700,10 +700,10 @@ static Bool armada_drm_CloseScreen(int scrnIndex, ScreenPtr pScreen) xf86_cursors_fini(pScreen); pScreen->CloseScreen = drm->CloseScreen; - ret = (*pScreen->CloseScreen)(scrnIndex, pScreen); + ret = (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); if (pScrn->vtSema) - armada_drm_LeaveVT(pScreen->myNum, 0); + armada_drm_LeaveVT(VT_FUNC_ARGS(0)); pScrn->vtSema = FALSE; @@ -739,9 +739,9 @@ static void armada_drm_wakeup_handler(pointer data, int err, pointer p) } static Bool -armada_drm_ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +armada_drm_ScreenInit(SCREEN_INIT_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); struct armada_drm_info *drm = GET_DRM_INFO(pScrn); struct drm_armada_bo *bo; int visuals, preferredCVC; @@ -821,7 +821,6 @@ armada_drm_ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) drm->accel = FALSE; } - miInitializeBackingStore(pScreen); xf86SetBackingStore(pScreen); xf86SetSilkenMouse(pScreen); @@ -899,7 +898,7 @@ armada_drm_ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) pScrn->vtSema = TRUE; - return armada_drm_EnterVT(pScreen->myNum, 0); + return armada_drm_EnterVT(VT_FUNC_ARGS(0)); } static Bool armada_drm_pre_init(ScrnInfoPtr pScrn) @@ -1090,9 +1089,9 @@ static void armada_drm_close_master(ScrnInfoPtr pScrn) } } -static void armada_drm_FreeScreen(int scrnIndex, int flags) +static void armada_drm_FreeScreen(FREE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); armada_drm_close_master(pScrn); } @@ -1158,7 +1157,7 @@ static Bool armada_drm_PreInit(ScrnInfoPtr pScrn, int flags) return TRUE; fail: - armada_drm_FreeScreen(pScrn->scrnIndex, 0); + armada_drm_FreeScreen(FREE_SCREEN_ARGS(pScrn)); return FALSE; } diff --git a/src/common_drm.c b/src/common_drm.c index c1d640a..ad98db4 100644 --- a/src/common_drm.c +++ b/src/common_drm.c @@ -20,7 +20,6 @@ #include "xf86Crtc.h" #include "xf86cmap.h" #include "fb.h" -#include "mibstore.h" #include "micmap.h" #include <xf86DDC.h> #include <X11/extensions/dpmsconst.h> diff --git a/src/compat-api.h b/src/compat-api.h new file mode 100644 index 0000000..993daa0 --- /dev/null +++ b/src/compat-api.h @@ -0,0 +1,101 @@ +/* + * Copyright 2012 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Dave Airlie <airlied@redhat.com> + */ + +/* this file provides API compat between server post 1.13 and pre it, + it should be reused inside as many drivers as possible */ +#ifndef COMPAT_API_H +#define COMPAT_API_H + +#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR +#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum] +#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p +#endif + +#ifndef XF86_HAS_SCRN_CONV +#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum] +#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex] +#endif + +#ifndef XF86_SCRN_INTERFACE + +#define SCRN_ARG_TYPE int +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)] + +#define SCREEN_ARG_TYPE int +#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] + +#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS scrnIndex, pScreen + +#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags +#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0 + +#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags +#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0 + +#define FREE_SCREEN_ARGS_DECL int arg, int flags +#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0 + +#define VT_FUNC_ARGS_DECL int arg, int flags +#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags) + +#define XF86_SCRN_ARG(x) ((x)->scrnIndex) +#else +#define SCRN_ARG_TYPE ScrnInfoPtr +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) + +#define SCREEN_ARG_TYPE ScreenPtr +#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) + +#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS pScreen + +#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y +#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y + +#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode +#define SWITCH_MODE_ARGS(arg, m) arg, m + +#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg +#define FREE_SCREEN_ARGS(x) (x) + +#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg +#define VT_FUNC_ARGS(flags) pScrn + +#define XF86_SCRN_ARG(x) (x) + +#endif + +#endif diff --git a/src/utils.h b/src/utils.h index aa57269..a7f8353 100644 --- a/src/utils.h +++ b/src/utils.h @@ -1,7 +1,9 @@ #ifndef UTILS_H #define UTILS_H +#ifndef ARRAY_SIZE #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +#endif #define mint(x,y) ({(void)(&x == &y); x < y ? x : y; }) #define maxt(x,y) ({(void)(&x == &y); x < y ? y : x; }) diff --git a/src/vivante.c b/src/vivante.c index cdeaddb..04901a8 100644 --- a/src/vivante.c +++ b/src/vivante.c @@ -24,6 +24,7 @@ #include "fb.h" #include "gcstruct.h" #include "xf86.h" +#include "compat-api.h" #include <gc_hal.h> @@ -371,7 +372,7 @@ static GCFuncs vivante_GCFuncs = { }; -static Bool vivante_CloseScreen(int scrnIndex, ScreenPtr pScreen) +static Bool vivante_CloseScreen(CLOSE_SCREEN_ARGS_DECL) { struct vivante *vivante = vivante_get_screen_priv(pScreen); #ifdef RENDER @@ -379,7 +380,7 @@ static Bool vivante_CloseScreen(int scrnIndex, ScreenPtr pScreen) #endif #ifdef HAVE_DRI2 - vivante_dri2_CloseScreen(scrnIndex, pScreen); + vivante_dri2_CloseScreen(CLOSE_SCREEN_ARGS); #endif #ifdef RENDER @@ -413,7 +414,7 @@ static Bool vivante_CloseScreen(int scrnIndex, ScreenPtr pScreen) free(vivante); - return pScreen->CloseScreen(scrnIndex, pScreen); + return pScreen->CloseScreen(CLOSE_SCREEN_ARGS); } static void @@ -527,16 +528,16 @@ static Bool vivante_CreateGC(GCPtr pGC) /* Commit any pending GPU operations */ static void -vivante_BlockHandler(int scrn, pointer data, pointer timeout, pointer readmask) +vivante_BlockHandler(BLOCKHANDLER_ARGS_DECL) { - ScreenPtr pScreen = screenInfo.screens[scrn]; + SCREEN_PTR(arg); struct vivante *vivante = vivante_get_screen_priv(pScreen); if (vivante->need_commit) vivante_commit(vivante, FALSE); pScreen->BlockHandler = vivante->BlockHandler; - pScreen->BlockHandler(scrn, data, timeout, readmask); + pScreen->BlockHandler(BLOCKHANDLER_ARGS); vivante->BlockHandler = pScreen->BlockHandler; pScreen->BlockHandler = vivante_BlockHandler; } @@ -575,7 +576,7 @@ Bool vivante_ScreenInit(ScreenPtr pScreen, struct drm_armada_bufmgr *mgr) vivante->drm_fd = GET_DRM_INFO(pScrn)->fd; vivante->scrnIndex = pScrn->scrnIndex; - list_init(&vivante->batch_list); + xorg_list_init(&vivante->batch_list); vivante->bufmgr = mgr; vivante->batch_bo = drm_armada_bo_dumb_create(mgr, 64, 64, 32); if (!vivante->batch_bo) { diff --git a/src/vivante_accel.c b/src/vivante_accel.c index 0be0c9e..ad009b1 100644 --- a/src/vivante_accel.c +++ b/src/vivante_accel.c @@ -70,8 +70,8 @@ static void vivante_disable_alpha_blend(struct vivante *vivante) struct vivante_batch { - struct list node; - struct list head; + struct xorg_list node; + struct xorg_list head; uint32_t index; int32_t serial; int32_t *current; @@ -82,12 +82,12 @@ static void vivante_batch_destroy(struct vivante_batch *batch) struct vivante_pixmap *vp, *vn; /* Unlink all pixmaps that this batch is connected to */ - list_for_each_entry_safe(vp, vn, &batch->head, batch_node) { + xorg_list_for_each_entry_safe(vp, vn, &batch->head, batch_node) { vp->batch = NULL; - list_del(&vp->batch_node); + xorg_list_del(&vp->batch_node); } - list_del(&batch->node); + xorg_list_del(&batch->node); free(batch); } @@ -95,7 +95,7 @@ static void vivante_batch_reap(struct vivante *vivante) { struct vivante_batch *batch, *n; - list_for_each_entry_safe(batch, n, &vivante->batch_list, node) { + xorg_list_for_each_entry_safe(batch, n, &vivante->batch_list, node) { if (*batch->current == batch->serial) { #ifdef DEBUG_BATCH dbg("batch %p: reaping at %08x\n", @@ -168,7 +168,7 @@ static Bool vivante_batch_new(struct vivante *vivante) batch->serial = serial; batch->current = vivante->batch_ptr + i; *batch->current = -1; - list_init(&batch->head); + xorg_list_init(&batch->head); i += 1; if (i >= vivante->batch_idx_max) @@ -190,7 +190,7 @@ vivante_batch_add(struct vivante *vivante, struct vivante_pixmap *vPix) if (!batch) { vPix->batch = batch = vivante->batch; - list_add(&vPix->batch_node, &batch->head); + xorg_list_add(&vPix->batch_node, &batch->head); #ifdef DEBUG_BATCH dbg("Allocated batch %p for vPix %p\n", batch, vPix); #endif @@ -241,7 +241,7 @@ static void vivante_batch_commit(struct vivante *vivante) if (err != gcvSTATUS_OK) goto error; - list_append(&batch->node, &vivante->batch_list); + xorg_list_append(&batch->node, &vivante->batch_list); vivante->batch = NULL; return; diff --git a/src/vivante_accel.h b/src/vivante_accel.h index b1441e7..7c49ae8 100644 --- a/src/vivante_accel.h +++ b/src/vivante_accel.h @@ -54,7 +54,7 @@ struct vivante { uint16_t batch_idx_max; uint16_t batch_idx; int32_t batch_serial; - struct list batch_list; + struct xorg_list batch_list; struct vivante_batch *batch; Bool need_commit; @@ -96,7 +96,7 @@ struct vivante_pixmap { gceSURF_FORMAT format; gctPOINTER info; - struct list batch_node; + struct xorg_list batch_node; struct vivante_batch *batch; enum { diff --git a/src/vivante_compat.h b/src/vivante_compat.h index 67f406b..6973810 100644 --- a/src/vivante_compat.h +++ b/src/vivante_compat.h @@ -23,4 +23,18 @@ #define vivante_Key int #endif +#include <list.h> + +#ifndef xorg_list_entry +#define xorg_list list +#define xorg_list_init list_init +#define xorg_list_del list_del +#define xorg_list_add list_add +#define xorg_list_append list_append +#define xorg_list_is_empty list_is_empty +#define xorg_list_first_entry list_first_entry +#define xorg_list_for_each_entry list_for_each_entry +#define xorg_list_for_each_entry_safe list_for_each_entry_safe +#endif + #endif diff --git a/src/vivante_dri2.c b/src/vivante_dri2.c index 2a6f0fe..7747de3 100644 --- a/src/vivante_dri2.c +++ b/src/vivante_dri2.c @@ -21,6 +21,7 @@ #include <xf86drm.h> #include <armada_bufmgr.h> +#include "compat-api.h" #include "vivante_accel.h" #include "vivante_dri2.h" #include "vivante_utils.h" @@ -48,8 +49,8 @@ enum event_type { struct vivante_dri_wait { struct vivante_dri_wait *next; - struct list drawable_list; - struct list client_list; + struct xorg_list drawable_list; + struct xorg_list client_list; XID drawable_id; ClientPtr client; enum event_type type; @@ -129,13 +130,13 @@ vivante_dri2_get_pixmap(DRI2BufferPtr buffer) static int vivante_dri2_client_gone(void *data, XID id) { - struct list *list = data; + struct xorg_list *list = data; - while (!list_is_empty(list)) { + while (!xorg_list_is_empty(list)) { struct vivante_dri_wait *wait; - wait = list_first_entry(list, struct vivante_dri_wait, client_list); - list_del(&wait->client_list); + wait = xorg_list_first_entry(list, struct vivante_dri_wait, client_list); + xorg_list_del(&wait->client_list); wait->client = NULL; } free(list); @@ -145,13 +146,13 @@ static int vivante_dri2_client_gone(void *data, XID id) static int vivante_dri2_drawable_gone(void *data, XID id) { - struct list *list = data; + struct xorg_list *list = data; - while (!list_is_empty(list)) { + while (!xorg_list_is_empty(list)) { struct vivante_dri_wait *wait; - wait = list_first_entry(list, struct vivante_dri_wait, drawable_list); - list_del(&wait->drawable_list); + wait = xorg_list_first_entry(list, struct vivante_dri_wait, drawable_list); + xorg_list_del(&wait->drawable_list); wait->drawable_id = None; } free(list); @@ -169,9 +170,9 @@ static XID client_id(ClientPtr client) return *ptr; } -static Bool add_reslist(RESTYPE type, XID id, struct list *node) +static Bool add_reslist(RESTYPE type, XID id, struct xorg_list *node) { - struct list *list; + struct xorg_list *list; void *ptr = NULL; dixLookupResourceByType(&ptr, id, type, NULL, DixWriteAccess); @@ -186,10 +187,10 @@ static Bool add_reslist(RESTYPE type, XID id, struct list *node) return FALSE; } - list_init(list); + xorg_list_init(list); } - list_add(node, list); + xorg_list_add(node, list); return TRUE; } @@ -334,15 +335,15 @@ new_wait_info(ClientPtr client, DrawablePtr draw, enum event_type type) wait->client = client; wait->type = type; - list_init(&wait->client_list); - list_init(&wait->drawable_list); + xorg_list_init(&wait->client_list); + xorg_list_init(&wait->drawable_list); if (!add_reslist(wait_drawable_restype, draw->id, &wait->drawable_list) || !add_reslist(wait_client_restype, client_id(client), &wait->client_list)) { - list_del(&wait->client_list); - list_del(&wait->drawable_list); + xorg_list_del(&wait->client_list); + xorg_list_del(&wait->drawable_list); free(wait); wait = NULL; } @@ -352,8 +353,8 @@ new_wait_info(ClientPtr client, DrawablePtr draw, enum event_type type) static void del_wait_info(struct vivante_dri_wait *wait) { - list_del(&wait->client_list); - list_del(&wait->drawable_list); + xorg_list_del(&wait->client_list); + xorg_list_del(&wait->drawable_list); vivante_dri2_DestroyBuffer(NULL, wait->front); vivante_dri2_DestroyBuffer(NULL, wait->back); @@ -735,7 +736,7 @@ Bool vivante_dri2_ScreenInit(ScreenPtr pScreen) return DRI2ScreenInit(pScreen, &info); } -void vivante_dri2_CloseScreen(int scrnIndex, ScreenPtr pScreen) +void vivante_dri2_CloseScreen(CLOSE_SCREEN_ARGS_DECL) { struct vivante *vivante = vivante_get_screen_priv(pScreen); struct vivante_dri2_info *dri = vivante->dri2; diff --git a/src/vivante_dri2.h b/src/vivante_dri2.h index ef2c39e..5fc9d5f 100644 --- a/src/vivante_dri2.h +++ b/src/vivante_dri2.h @@ -8,7 +8,7 @@ #define VIVANTE_DRI2_H Bool vivante_dri2_ScreenInit(ScreenPtr pScreen); -void vivante_dri2_CloseScreen(int scrnIndex, ScreenPtr pScreen); +void vivante_dri2_CloseScreen(CLOSE_SCREEN_ARGS_DECL); void vivante_dri2_vblank(int fd, unsigned frame, unsigned tv_sec, unsigned tv_usec, void *event); |