Qt 4.8
Macros | Functions | Variables
pvrqwswsegl.c File Reference
#include <GLES/eglplatform.h>
#include <wsegl.h>
#include <pvr2d.h>
#include <string.h>
#include <sys/mman.h>
#include "pvrqwsdrawable_p.h"

Go to the source code of this file.

Macros

#define WSEGL_CAP_PIXMAPS_USE_HW_SYNC   WSEGL_CAP_PIXMAPS_USE_MBX_SYNC
 
#define WSEGL_CAP_WINDOWS_USE_HW_SYNC   WSEGL_CAP_WINDOWS_USE_MBX_SYNC
 
#define WSEGL_UNUSED(x)   (void)x;
 

Functions

const WSEGL_FunctionTable * WSEGL_GetFunctionTablePointer (void)
 
static WSEGLError wseglCloseDisplay (WSEGLDisplayHandle display)
 
static WSEGLError wseglCopyFromDrawable (WSEGLDrawableHandle _drawable, NativePixmapType nativePixmap)
 
static WSEGLError wseglCopyFromPBuffer (void *address, unsigned long width, unsigned long height, unsigned long stride, WSEGLPixelFormat format, NativePixmapType nativePixmap)
 
static WSEGLError wseglCreatePixmapDrawable (WSEGLDisplayHandle display, WSEGLConfig *config, WSEGLDrawableHandle *drawable, NativePixmapType nativePixmap, WSEGLRotationAngle *rotationAngle)
 
static WSEGLError wseglCreateWindowDrawable (WSEGLDisplayHandle display, WSEGLConfig *config, WSEGLDrawableHandle *drawable, NativeWindowType nativeWindow, WSEGLRotationAngle *rotationAngle)
 
static WSEGLError wseglDeleteDrawable (WSEGLDrawableHandle _drawable)
 
static WSEGLError wseglGetDrawableParameters (WSEGLDrawableHandle _drawable, WSEGLDrawableParams *sourceParams, WSEGLDrawableParams *renderParams)
 
static WSEGLError wseglInitializeDisplay (NativeDisplayType nativeDisplay, WSEGLDisplayHandle *display, const WSEGLCaps **caps, WSEGLConfig **configs)
 
static WSEGLError wseglIsDisplayValid (NativeDisplayType nativeDisplay)
 
static WSEGLRotationAngle wseglRotationValue (int degrees)
 
static WSEGLError wseglSwapControlInterval (WSEGLDrawableHandle drawable, unsigned long interval)
 
static WSEGLError wseglSwapDrawable (WSEGLDrawableHandle _drawable, unsigned long data)
 
static WSEGLError wseglWaitNative (WSEGLDrawableHandle drawable, unsigned long engine)
 

Variables

static WSEGLCaps const wseglDisplayCaps []
 
static WSEGLConfig wseglDisplayConfigs []
 
static WSEGL_FunctionTable const wseglFunctions
 

Macro Definition Documentation

◆ WSEGL_CAP_PIXMAPS_USE_HW_SYNC

#define WSEGL_CAP_PIXMAPS_USE_HW_SYNC   WSEGL_CAP_PIXMAPS_USE_MBX_SYNC

Definition at line 55 of file pvrqwswsegl.c.

◆ WSEGL_CAP_WINDOWS_USE_HW_SYNC

#define WSEGL_CAP_WINDOWS_USE_HW_SYNC   WSEGL_CAP_WINDOWS_USE_MBX_SYNC

Definition at line 54 of file pvrqwswsegl.c.

◆ WSEGL_UNUSED

#define WSEGL_UNUSED (   x)    (void)x;

Function Documentation

◆ WSEGL_GetFunctionTablePointer()

const WSEGL_FunctionTable* WSEGL_GetFunctionTablePointer ( void  )

Definition at line 399 of file pvrqwswsegl.c.

400 {
401  return &wseglFunctions;
402 }
static WSEGL_FunctionTable const wseglFunctions
Definition: pvrqwswsegl.c:382

◆ wseglCloseDisplay()

static WSEGLError wseglCloseDisplay ( WSEGLDisplayHandle  display)
static

Definition at line 128 of file pvrqwswsegl.c.

129 {
130  if (display == (WSEGLDisplayHandle)&pvrQwsDisplay)
132  return WSEGL_SUCCESS;
133 }
PvrQwsDisplay pvrQwsDisplay
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
void pvrQwsDisplayClose(void)

◆ wseglCopyFromDrawable()

static WSEGLError wseglCopyFromDrawable ( WSEGLDrawableHandle  _drawable,
NativePixmapType  nativePixmap 
)
static

Definition at line 250 of file pvrqwswsegl.c.

Referenced by wseglWaitNative().

251 {
252  PvrQwsDrawable *drawable = (PvrQwsDrawable *)_drawable;
254  PVR2DBLTINFO blit;
255 
256  if (!drawable || !drawable->backBuffersValid)
257  return WSEGL_BAD_NATIVE_WINDOW;
258  if (!pixmap || !pixmap->backBuffersValid)
259  return WSEGL_BAD_NATIVE_PIXMAP;
260 
261  memset(&blit, 0, sizeof(blit));
262 
263  blit.CopyCode = PVR2DROPcopy;
264  blit.BlitFlags = PVR2D_BLIT_DISABLE_ALL;
265 
266  blit.pSrcMemInfo = drawable->backBuffers[drawable->currentBackBuffer];
267  blit.SrcStride = drawable->strideBytes;
268  blit.SrcX = 0;
269  blit.SrcY = 0;
270  blit.SizeX = drawable->rect.width;
271  blit.SizeY = drawable->rect.height;
272  blit.SrcFormat = drawable->pixelFormat;
273 
274  blit.pDstMemInfo = pixmap->backBuffers[pixmap->currentBackBuffer];
275  blit.DstStride = pixmap->strideBytes;
276  blit.DstX = 0;
277  blit.DstY = 0;
278  blit.DSizeX = pixmap->rect.width;
279  blit.DSizeY = pixmap->rect.height;
280  blit.DstFormat = pixmap->pixelFormat;
281 
282  PVR2DBlt(pvrQwsDisplay.context, &blit);
283  PVR2DQueryBlitsComplete
284  (pvrQwsDisplay.context, pixmap->backBuffers[pixmap->currentBackBuffer], 1);
285 
286  return WSEGL_SUCCESS;
287 }
PVR2DMEMINFO * backBuffers[PVRQWS_MAX_BACK_BUFFERS]
PVR2DFORMAT pixelFormat
PVR2DCONTEXTHANDLE context
PvrQwsDisplay pvrQwsDisplay
Q_GUI_EXPORT EGLNativePixmapType nativePixmap(QPixmap *)
Definition: qegl_qpa.cpp:65

◆ wseglCopyFromPBuffer()

static WSEGLError wseglCopyFromPBuffer ( void *  address,
unsigned long  width,
unsigned long  height,
unsigned long  stride,
WSEGLPixelFormat  format,
NativePixmapType  nativePixmap 
)
static

Definition at line 291 of file pvrqwswsegl.c.

Referenced by wseglCopyFromDrawable().

294 {
296  PVR2DFORMAT pixelFormat;
297 
298  if (!pixmap)
299  return WSEGL_BAD_NATIVE_PIXMAP;
300 
301  /* We can only copy under certain conditions */
302  switch (format) {
303  case WSEGL_PIXELFORMAT_565:
304  pixelFormat = PVR2D_RGB565; break;
305  case WSEGL_PIXELFORMAT_4444:
306  pixelFormat = PVR2D_ARGB4444; break;
307  case WSEGL_PIXELFORMAT_8888:
308  pixelFormat = PVR2D_ARGB8888; break;
309  default:
310  return WSEGL_BAD_CONFIG;
311  }
312  if (width > (unsigned long)(pixmap->rect.width) ||
313  height > (unsigned long)(pixmap->rect.height) ||
314  pixelFormat != pixmap->pixelFormat) {
315  return WSEGL_BAD_CONFIG;
316  }
317 
318  /* We'd like to use PVR2DBlt to do this, but there is no easy way
319  to map the virtual "address" into physical space to be able
320  to use the hardware assist. Use memcpy to do the work instead.
321  Note: PBuffer's are upside down, so we copy from the bottom up */
322  char *srcaddr = (char *)address;
323  char *dstaddr = (char *)(pixmap->backBuffers[pixmap->currentBackBuffer]->pBase);
324  int dststride = pixmap->strideBytes;
325  int srcwidth = ((int)width) * pvrQwsDisplay.screens[0].bytesPerPixel;
326  srcaddr += height * stride;
327  while (height > 0) {
328  srcaddr -= (int)stride;
329  memcpy(dstaddr, srcaddr, srcwidth);
330  dstaddr += dststride;
331  --height;
332  }
333  return WSEGL_SUCCESS;
334 }
PVR2DMEMINFO * backBuffers[PVRQWS_MAX_BACK_BUFFERS]
PVR2DFORMAT pixelFormat
PvrQwsDisplay pvrQwsDisplay
Q_GUI_EXPORT EGLNativePixmapType nativePixmap(QPixmap *)
Definition: qegl_qpa.cpp:65
PvrQwsScreenInfo screens[PVRQWS_MAX_SCREENS]

◆ wseglCreatePixmapDrawable()

static WSEGLError wseglCreatePixmapDrawable ( WSEGLDisplayHandle  display,
WSEGLConfig *  config,
WSEGLDrawableHandle *  drawable,
NativePixmapType  nativePixmap,
WSEGLRotationAngle *  rotationAngle 
)
static

Definition at line 184 of file pvrqwswsegl.c.

Referenced by wseglCreateWindowDrawable().

187 {
189  WSEGL_UNUSED(config);
190  if (!nativePixmap)
191  return WSEGL_BAD_NATIVE_PIXMAP;
193  return WSEGL_OUT_OF_MEMORY;
194  *drawable = (WSEGLDrawableHandle)nativePixmap;
195  *rotationAngle = WSEGL_ROTATE_0;
196  return WSEGL_SUCCESS;
197 }
int pvrQwsAllocBuffers(PvrQwsDrawable *drawable)
Q_GUI_EXPORT EGLNativePixmapType nativePixmap(QPixmap *)
Definition: qegl_qpa.cpp:65
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
#define WSEGL_UNUSED(x)
Definition: pvrqwswsegl.c:49

◆ wseglCreateWindowDrawable()

static WSEGLError wseglCreateWindowDrawable ( WSEGLDisplayHandle  display,
WSEGLConfig *  config,
WSEGLDrawableHandle *  drawable,
NativeWindowType  nativeWindow,
WSEGLRotationAngle *  rotationAngle 
)
static

Definition at line 147 of file pvrqwswsegl.c.

Referenced by wseglRotationValue().

150 {
151  PvrQwsDrawable *draw;
152 
154  WSEGL_UNUSED(config);
155 
156  /* Check for special handles that indicate framebuffer screens */
157  if (nativeWindow >= (NativeWindowType)0 &&
158  nativeWindow < (NativeWindowType)PVRQWS_MAX_SCREENS) {
160  if (!screen)
161  return WSEGL_OUT_OF_MEMORY;
162  *drawable = (WSEGLDrawableHandle)screen;
163  if (!pvrQwsAllocBuffers(screen))
164  return WSEGL_OUT_OF_MEMORY;
165  *rotationAngle = wseglRotationValue(screen->rotationAngle);
166  return WSEGL_SUCCESS;
167  }
168 
169  /* The native window is the winId - fetch the underlying drawable */
170  draw = pvrQwsFetchWindow((long)nativeWindow);
171  if (!draw)
172  return WSEGL_BAD_DRAWABLE;
173 
174  /* The drawable is ready to go */
175  *drawable = (WSEGLDrawableHandle)draw;
176  *rotationAngle = wseglRotationValue(draw->rotationAngle);
177  if (!pvrQwsAllocBuffers(draw))
178  return WSEGL_OUT_OF_MEMORY;
179  return WSEGL_SUCCESS;
180 }
int pvrQwsAllocBuffers(PvrQwsDrawable *drawable)
PvrQwsDrawable * pvrQwsFetchWindow(long winId)
#define PVRQWS_MAX_SCREENS
static WSEGLRotationAngle wseglRotationValue(int degrees)
Definition: pvrqwswsegl.c:135
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
#define WSEGL_UNUSED(x)
Definition: pvrqwswsegl.c:49
PvrQwsDrawable * pvrQwsScreenWindow(int screen)
Q_GUI_EXPORT EGLNativeWindowType nativeWindow(QWidget *)
Definition: qegl_qpa.cpp:60

◆ wseglDeleteDrawable()

static WSEGLError wseglDeleteDrawable ( WSEGLDrawableHandle  _drawable)
static

Definition at line 200 of file pvrqwswsegl.c.

201 {
202  PvrQwsDrawable *drawable = (PvrQwsDrawable *)_drawable;
203  if (!drawable || drawable->type == PvrQwsScreen)
204  return WSEGL_SUCCESS;
205  if (pvrQwsDisplay.numFlipBuffers == 0)
206  pvrQwsFreeBuffers(drawable);
207  if (pvrQwsReleaseWindow(drawable))
208  pvrQwsDestroyDrawable(drawable);
209  return WSEGL_SUCCESS;
210 }
void pvrQwsFreeBuffers(PvrQwsDrawable *drawable)
PvrQwsDisplay pvrQwsDisplay
PvrQwsDrawableType type
int pvrQwsReleaseWindow(PvrQwsDrawable *drawable)
unsigned long numFlipBuffers
void pvrQwsDestroyDrawable(PvrQwsDrawable *drawable)

◆ wseglGetDrawableParameters()

static WSEGLError wseglGetDrawableParameters ( WSEGLDrawableHandle  _drawable,
WSEGLDrawableParams *  sourceParams,
WSEGLDrawableParams *  renderParams 
)
static

Definition at line 338 of file pvrqwswsegl.c.

Referenced by wseglCopyFromPBuffer().

340 {
341  PvrQwsDrawable *drawable = (PvrQwsDrawable *)_drawable;
342  PVR2DMEMINFO *source, *render;
343  WSEGLPixelFormat pixelFormat;
344 
345  if (!pvrQwsGetBuffers(drawable, &source, &render))
346  return WSEGL_BAD_DRAWABLE;
347 
348  switch (drawable->pixelFormat) {
349  case PVR2D_RGB565:
350  default:
351  pixelFormat = WSEGL_PIXELFORMAT_565;
352  break;
353 
354  case PVR2D_ARGB4444:
355  pixelFormat = WSEGL_PIXELFORMAT_4444;
356  break;
357 
358  case PVR2D_ARGB8888:
359  pixelFormat = WSEGL_PIXELFORMAT_8888;
360  break;
361  }
362 
363  sourceParams->ui32Width = drawable->rect.width;
364  sourceParams->ui32Height = drawable->rect.height;
365  sourceParams->ui32Stride = drawable->stridePixels;
366  sourceParams->ePixelFormat = pixelFormat;
367  sourceParams->pvLinearAddress = source->pBase;
368  sourceParams->ui32HWAddress = source->ui32DevAddr;
369  sourceParams->hPrivateData = source->hPrivateData;
370 
371  renderParams->ui32Width = drawable->rect.width;
372  renderParams->ui32Height = drawable->rect.height;
373  renderParams->ui32Stride = drawable->stridePixels;
374  renderParams->ePixelFormat = pixelFormat;
375  renderParams->pvLinearAddress = render->pBase;
376  renderParams->ui32HWAddress = render->ui32DevAddr;
377  renderParams->hPrivateData = render->hPrivateData;
378 
379  return WSEGL_SUCCESS;
380 }
PVR2DFORMAT pixelFormat
int pvrQwsGetBuffers(PvrQwsDrawable *drawable, PVR2DMEMINFO **source, PVR2DMEMINFO **render)

◆ wseglInitializeDisplay()

static WSEGLError wseglInitializeDisplay ( NativeDisplayType  nativeDisplay,
WSEGLDisplayHandle *  display,
const WSEGLCaps **  caps,
WSEGLConfig **  configs 
)
static

Definition at line 86 of file pvrqwswsegl.c.

Referenced by wseglIsDisplayValid().

88 {
89  WSEGLPixelFormat pixelFormat;
90 
91  /* Bail out if the native display is incorrect */
92  if (nativeDisplay != WSEGL_DEFAULT_DISPLAY)
93  return WSEGL_CANNOT_INITIALISE;
94 
95  /* Open the PVR/QWS display, which will initialize the framebuffer */
96  if (!pvrQwsDisplayOpen())
97  return WSEGL_CANNOT_INITIALISE;
98 
99  /* Convert the PVR2D pixel format into a WSEGL pixel format */
100  switch (pvrQwsDisplay.screens[0].pixelFormat) {
101  case PVR2D_RGB565:
102  pixelFormat = WSEGL_PIXELFORMAT_565;
103  break;
104 
105  case PVR2D_ARGB4444:
106  pixelFormat = WSEGL_PIXELFORMAT_4444;
107  break;
108 
109  case PVR2D_ARGB8888:
110  pixelFormat = WSEGL_PIXELFORMAT_8888;
111  break;
112 
113  default:
115  return WSEGL_CANNOT_INITIALISE;
116  }
117  wseglDisplayConfigs[0].ePixelFormat = pixelFormat;
118  wseglDisplayConfigs[1].ePixelFormat = pixelFormat;
119 
120  /* The display has been initialized */
121  *display = (WSEGLDisplayHandle)&pvrQwsDisplay;
122  *caps = wseglDisplayCaps;
123  *configs = wseglDisplayConfigs;
124  return WSEGL_SUCCESS;
125 }
PvrQwsDisplay pvrQwsDisplay
int pvrQwsDisplayOpen(void)
static WSEGLConfig wseglDisplayConfigs[]
Definition: pvrqwswsegl.c:66
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
Q_GUI_EXPORT EGLNativeDisplayType nativeDisplay()
Definition: qegl_qpa.cpp:55
PVR2DFORMAT pixelFormat
static WSEGLCaps const wseglDisplayCaps[]
Definition: pvrqwswsegl.c:59
PvrQwsScreenInfo screens[PVRQWS_MAX_SCREENS]
void pvrQwsDisplayClose(void)

◆ wseglIsDisplayValid()

static WSEGLError wseglIsDisplayValid ( NativeDisplayType  nativeDisplay)
static

Definition at line 75 of file pvrqwswsegl.c.

76 {
77  /* We only have the default display in this system */
78  if (nativeDisplay == WSEGL_DEFAULT_DISPLAY)
79  return WSEGL_SUCCESS;
80  else
81  return WSEGL_BAD_NATIVE_DISPLAY;
82 }
Q_GUI_EXPORT EGLNativeDisplayType nativeDisplay()
Definition: qegl_qpa.cpp:55

◆ wseglRotationValue()

static WSEGLRotationAngle wseglRotationValue ( int  degrees)
static

Definition at line 135 of file pvrqwswsegl.c.

Referenced by wseglCreateWindowDrawable().

136 {
137  switch (degrees) {
138  case 90: return WSEGL_ROTATE_90;
139  case 180: return WSEGL_ROTATE_180;
140  case 270: return WSEGL_ROTATE_270;
141  default: return WSEGL_ROTATE_0;
142  }
143 }

◆ wseglSwapControlInterval()

static WSEGLError wseglSwapControlInterval ( WSEGLDrawableHandle  drawable,
unsigned long  interval 
)
static

Definition at line 226 of file pvrqwswsegl.c.

Referenced by wseglSwapDrawable().

227 {
228  WSEGL_UNUSED(drawable);
229  if (pvrQwsDisplay.flipChain) {
230  PVR2DSetPresentFlipProperties
232  PVR2D_PRESENT_PROPERTY_INTERVAL, 0, 0, 0, NULL, interval);
233  }
234  return WSEGL_SUCCESS;
235 }
PVR2DFLIPCHAINHANDLE flipChain
PVR2DCONTEXTHANDLE context
PvrQwsDisplay pvrQwsDisplay
#define WSEGL_UNUSED(x)
Definition: pvrqwswsegl.c:49

◆ wseglSwapDrawable()

static WSEGLError wseglSwapDrawable ( WSEGLDrawableHandle  _drawable,
unsigned long  data 
)
static

Definition at line 214 of file pvrqwswsegl.c.

Referenced by wseglDeleteDrawable().

215 {
217  PvrQwsDrawable *drawable = (PvrQwsDrawable *)_drawable;
218  if (drawable->type != PvrQwsPixmap && !pvrQwsSwapBuffers(drawable, 0))
219  return WSEGL_BAD_DRAWABLE;
220  else
221  return WSEGL_SUCCESS;
222 }
PvrQwsDrawableType type
static const char * data(const QByteArray &arr)
#define WSEGL_UNUSED(x)
Definition: pvrqwswsegl.c:49
int pvrQwsSwapBuffers(PvrQwsDrawable *drawable, int repaintOnly)

◆ wseglWaitNative()

static WSEGLError wseglWaitNative ( WSEGLDrawableHandle  drawable,
unsigned long  engine 
)
static

Definition at line 239 of file pvrqwswsegl.c.

Referenced by wseglSwapControlInterval().

240 {
241  WSEGL_UNUSED(drawable);
242  if (engine == WSEGL_DEFAULT_NATIVE_ENGINE)
243  return WSEGL_SUCCESS;
244  else
245  return WSEGL_BAD_NATIVE_ENGINE;
246 }
#define WSEGL_UNUSED(x)
Definition: pvrqwswsegl.c:49

Variable Documentation

◆ wseglDisplayCaps

WSEGLCaps const wseglDisplayCaps[]
static
Initial value:
= {
{WSEGL_NO_CAPS, 0}
}
#define WSEGL_CAP_PIXMAPS_USE_HW_SYNC
Definition: pvrqwswsegl.c:55
#define WSEGL_CAP_WINDOWS_USE_HW_SYNC
Definition: pvrqwswsegl.c:54

Definition at line 59 of file pvrqwswsegl.c.

Referenced by wseglInitializeDisplay().

◆ wseglDisplayConfigs

WSEGLConfig wseglDisplayConfigs[]
static
Initial value:
= {
{WSEGL_DRAWABLE_WINDOW, WSEGL_PIXELFORMAT_565, WSEGL_FALSE,
0, 0, 0, WSEGL_OPAQUE, 0},
{WSEGL_DRAWABLE_PIXMAP, WSEGL_PIXELFORMAT_565, WSEGL_FALSE,
0, 0, 0, WSEGL_OPAQUE, 0},
{WSEGL_NO_DRAWABLE, 0, 0, 0, 0, 0, 0, 0}
}

Definition at line 66 of file pvrqwswsegl.c.

Referenced by wseglInitializeDisplay().

◆ wseglFunctions

WSEGL_FunctionTable const wseglFunctions
static
Initial value:
= {
WSEGL_VERSION,
}
static WSEGLError wseglCopyFromDrawable(WSEGLDrawableHandle _drawable, NativePixmapType nativePixmap)
Definition: pvrqwswsegl.c:250
static WSEGLError wseglCopyFromPBuffer(void *address, unsigned long width, unsigned long height, unsigned long stride, WSEGLPixelFormat format, NativePixmapType nativePixmap)
Definition: pvrqwswsegl.c:291
static WSEGLError wseglCloseDisplay(WSEGLDisplayHandle display)
Definition: pvrqwswsegl.c:128
static WSEGLError wseglIsDisplayValid(NativeDisplayType nativeDisplay)
Definition: pvrqwswsegl.c:75
static WSEGLError wseglSwapDrawable(WSEGLDrawableHandle _drawable, unsigned long data)
Definition: pvrqwswsegl.c:214
static WSEGLError wseglCreateWindowDrawable(WSEGLDisplayHandle display, WSEGLConfig *config, WSEGLDrawableHandle *drawable, NativeWindowType nativeWindow, WSEGLRotationAngle *rotationAngle)
Definition: pvrqwswsegl.c:147
static WSEGLError wseglSwapControlInterval(WSEGLDrawableHandle drawable, unsigned long interval)
Definition: pvrqwswsegl.c:226
static WSEGLError wseglDeleteDrawable(WSEGLDrawableHandle _drawable)
Definition: pvrqwswsegl.c:200
static WSEGLError wseglWaitNative(WSEGLDrawableHandle drawable, unsigned long engine)
Definition: pvrqwswsegl.c:239
static WSEGLError wseglGetDrawableParameters(WSEGLDrawableHandle _drawable, WSEGLDrawableParams *sourceParams, WSEGLDrawableParams *renderParams)
Definition: pvrqwswsegl.c:338
static WSEGLError wseglInitializeDisplay(NativeDisplayType nativeDisplay, WSEGLDisplayHandle *display, const WSEGLCaps **caps, WSEGLConfig **configs)
Definition: pvrqwswsegl.c:86
static WSEGLError wseglCreatePixmapDrawable(WSEGLDisplayHandle display, WSEGLConfig *config, WSEGLDrawableHandle *drawable, NativePixmapType nativePixmap, WSEGLRotationAngle *rotationAngle)
Definition: pvrqwswsegl.c:184

Definition at line 382 of file pvrqwswsegl.c.

Referenced by WSEGL_GetFunctionTablePointer().