summaryrefslogtreecommitdiff
path: root/src/glx/glxcmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glx/glxcmds.c')
-rw-r--r--src/glx/glxcmds.c211
1 files changed, 27 insertions, 184 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index ef8674f4e0..8f809dc525 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -39,17 +39,10 @@
#include "glcontextmodes.h"
#ifdef GLX_DIRECT_RENDERING
-#ifdef GLX_USE_APPLEGL
-#include "apple_glx_context.h"
-#include "apple_glx.h"
-#include "glx_error.h"
-#define GC_IS_DIRECT(gc) ((gc)->isDirect)
-#else
#include <sys/time.h>
#include <X11/extensions/xf86vmode.h>
#include "xf86dri.h"
#define GC_IS_DIRECT(gc) ((gc)->driContext != NULL)
-#endif
#else
#define GC_IS_DIRECT(gc) (0)
#endif
@@ -66,7 +59,7 @@ static const char __glXGLXClientVersion[] = "1.4";
/****************************************************************************/
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
static Bool windowExistsFlag;
static int
@@ -351,12 +344,6 @@ AllocateGLXContext(Display * dpy)
bufSize = __GLX_MAX_RENDER_CMD_SIZE;
}
gc->maxSmallRenderCommandSize = bufSize;
-
-#ifdef GLX_USE_APPLEGL
- gc->driContext = NULL;
- gc->do_destroy = False;
-#endif
-
return gc;
}
@@ -380,13 +367,8 @@ CreateContext(Display * dpy, int generic_id,
GLXContext gc;
#ifdef GLX_DIRECT_RENDERING
__GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
-#ifdef GLX_USE_APPLEGL
- const __GLcontextModes *mode;
- int errorcode;
- bool x11error;
-#endif
#endif
-
+
if (dpy == NULL)
return NULL;
@@ -397,7 +379,6 @@ CreateContext(Display * dpy, int generic_id,
if (!gc)
return NULL;
-#ifndef GLX_USE_APPLEGL /* TODO: darwin indirect */
#ifdef GLX_DIRECT_RENDERING
if (allowDirect && psc->driScreen) {
gc->driContext = psc->driScreen->createContext(psc, fbconfig, gc,
@@ -474,36 +455,10 @@ CreateContext(Display * dpy, int generic_id,
UnlockDisplay(dpy);
SyncHandle();
-#endif
gc->imported = GL_FALSE;
gc->renderType = renderType;
- /* TODO: darwin: Integrate with above to do indirect */
-#ifdef GLX_USE_APPLEGL
- mode = _gl_context_modes_find_fbconfig(psc->configs,
- fbconfig->fbconfigID);
-
- if(NULL == mode) {
- __glXSendError(dpy, BadValue, fbconfig->fbconfigID, X_GLXCreateContext,
- true);
- __glXFreeContext(gc);
- return NULL;
- }
-
- if(apple_glx_create_context(&gc->driContext, dpy, screen, mode,
- shareList ? shareList->driContext : NULL,
- &errorcode, &x11error)) {
- __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
- __glXFreeContext(gc);
- return NULL;
- }
-
- gc->currentContextTag = -1;
- gc->mode = mode;
- gc->isDirect = allowDirect;
-#endif
-
return gc;
}
@@ -562,7 +517,6 @@ __glXFreeContext(__GLXcontext * gc)
static void
DestroyContext(Display * dpy, GLXContext gc)
{
-#ifndef GLX_USE_APPLEGL /* TODO: darwin: indirect */
xGLXDestroyContextReq *req;
GLXContextID xid;
CARD8 opcode;
@@ -588,7 +542,7 @@ DestroyContext(Display * dpy, GLXContext gc)
return;
}
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
/* Destroy the direct rendering context */
if (gc->driContext) {
(*gc->driContext->destroyContext) (gc->driContext, gc->psc, dpy);
@@ -598,31 +552,17 @@ DestroyContext(Display * dpy, GLXContext gc)
#endif
__glXFreeVertexArrayState(gc);
-#else
- __glXLock();
-#endif /* GLX_USE_APPLEGL */
if (gc->currentDpy) {
-#ifdef GLX_USE_APPLEGL
- /*
- * Set the Bool that indicates that we should destroy this GLX context
- * when the context is no longer current.
- */
- gc->do_destroy = True;
-#endif
/* Have to free later cuz it's in use now */
__glXUnlock();
}
else {
/* Destroy the handle if not current to anybody */
__glXUnlock();
-#ifdef GLX_USE_APPLEGL
- if(gc->driContext)
- apple_glx_destroy_context(&gc->driContext, dpy);
-#endif
__glXFreeContext(gc);
}
-#ifndef GLX_USE_APPLEGL
+
if (!imported) {
/*
** This dpy also created the server side part of the context.
@@ -636,7 +576,6 @@ DestroyContext(Display * dpy, GLXContext gc)
UnlockDisplay(dpy);
SyncHandle();
}
-#endif
}
PUBLIC void
@@ -691,9 +630,7 @@ glXQueryExtension(Display * dpy, int *errorBase, int *eventBase)
PUBLIC void
glXWaitGL(void)
{
-#ifndef GLX_USE_APPLEGL
xGLXWaitGLReq *req;
-#endif
GLXContext gc = __glXGetCurrentContext();
Display *dpy = gc->currentDpy;
@@ -702,10 +639,8 @@ glXWaitGL(void)
/* Flush any pending commands out */
__glXFlushRenderBuffer(gc, gc->pc);
-#ifdef GLX_USE_APPLEGL
- glFinish();
-#else
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+
+#ifdef GLX_DIRECT_RENDERING
if (gc->driContext) {
int screen;
__GLXDRIdrawable *pdraw =
@@ -729,7 +664,6 @@ glXWaitGL(void)
req->contextTag = gc->currentContextTag;
UnlockDisplay(dpy);
SyncHandle();
-#endif /* GLX_USE_APPLEGL */
}
/*
@@ -739,9 +673,7 @@ glXWaitGL(void)
PUBLIC void
glXWaitX(void)
{
-#ifndef GLX_USE_APPLEGL
xGLXWaitXReq *req;
-#endif
GLXContext gc = __glXGetCurrentContext();
Display *dpy = gc->currentDpy;
@@ -751,10 +683,7 @@ glXWaitX(void)
/* Flush any pending commands out */
__glXFlushRenderBuffer(gc, gc->pc);
-#ifdef GLX_USE_APPLEGL
- apple_glx_waitx(dpy, gc->driContext);
-#else
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
if (gc->driContext) {
int screen;
__GLXDRIdrawable *pdraw =
@@ -781,15 +710,12 @@ glXWaitX(void)
req->contextTag = gc->currentContextTag;
UnlockDisplay(dpy);
SyncHandle();
-#endif /* GLX_USE_APPLEGL */
}
PUBLIC void
glXUseXFont(Font font, int first, int count, int listBase)
{
-#ifndef GLX_USE_APPLEGL
xGLXUseXFontReq *req;
-#endif
GLXContext gc = __glXGetCurrentContext();
Display *dpy = gc->currentDpy;
@@ -798,10 +724,8 @@ glXUseXFont(Font font, int first, int count, int listBase)
/* Flush any pending commands out */
(void) __glXFlushRenderBuffer(gc, gc->pc);
-#ifdef GLX_USE_APPLEGL
- DRI_glXUseXFont(font, first, count, listBase);
-#else
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+
+#ifdef GLX_DIRECT_RENDERING
if (gc->driContext) {
DRI_glXUseXFont(font, first, count, listBase);
return;
@@ -820,7 +744,6 @@ glXUseXFont(Font font, int first, int count, int listBase)
req->listBase = listBase;
UnlockDisplay(dpy);
SyncHandle();
-#endif /* GLX_USE_APPLEGL */
}
/************************************************************************/
@@ -833,17 +756,6 @@ PUBLIC void
glXCopyContext(Display * dpy, GLXContext source,
GLXContext dest, unsigned long mask)
{
-#ifdef GLX_USE_APPLEGL
- GLXContext gc = __glXGetCurrentContext();
- int errorcode;
- bool x11error;
-
- if(apple_glx_copy_context(gc->driContext, source->driContext, dest->driContext,
- mask, &errorcode, &x11error)) {
- __glXSendError(dpy, errorcode, 0, X_GLXCopyContext, x11error);
- }
-
-#else
xGLXCopyContextReq *req;
GLXContext gc = __glXGetCurrentContext();
GLXContextTag tag;
@@ -854,7 +766,7 @@ glXCopyContext(Display * dpy, GLXContext source,
return;
}
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
if (gc->driContext) {
/* NOT_DONE: This does not work yet */
}
@@ -882,7 +794,6 @@ glXCopyContext(Display * dpy, GLXContext source,
req->contextTag = tag;
UnlockDisplay(dpy);
SyncHandle();
-#endif /* GLX_USE_APPLEGL */
}
@@ -897,9 +808,6 @@ glXCopyContext(Display * dpy, GLXContext source,
static Bool
__glXIsDirect(Display * dpy, GLXContextID contextID)
{
-#ifndef GLX_USE_APPLEGL /* TODO: apple indirect */
- return GC_IS_DIRECT(gc);
-#else
#if !defined(USE_XCB)
xGLXIsDirectReq *req;
xGLXIsDirectReply reply;
@@ -935,7 +843,6 @@ __glXIsDirect(Display * dpy, GLXContextID contextID)
return reply.isDirect;
#endif /* USE_XCB */
-#endif /* GLX_USE_APPLEGL */
}
/**
@@ -959,18 +866,6 @@ glXIsDirect(Display * dpy, GLXContext gc)
PUBLIC GLXPixmap
glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
{
-#ifdef GLX_USE_APPLEGL
- int screen = vis->screen;
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
- const __GLcontextModes *modes;
-
- modes = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
-
- if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, modes))
- return None;
-
- return pixmap;
-#else
xGLXCreateGLXPixmapReq *req;
GLXPixmap xid;
CARD8 opcode;
@@ -992,7 +887,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
UnlockDisplay(dpy);
SyncHandle();
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
do {
/* FIXME: Maybe delay __DRIdrawable creation until the drawable
* is actually bound to a context... */
@@ -1020,7 +915,6 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
#endif
return xid;
-#endif
}
/*
@@ -1029,10 +923,6 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
PUBLIC void
glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
{
-#ifdef GLX_USE_APPLEGL
- if(apple_glx_pixmap_destroy(dpy, glxpixmap))
- __glXSendError(dpy, GLXBadPixmap, glxpixmap, X_GLXDestroyPixmap, false);
-#else
xGLXDestroyGLXPixmapReq *req;
CARD8 opcode;
@@ -1050,7 +940,7 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
UnlockDisplay(dpy);
SyncHandle();
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
{
int screen;
__GLXdisplayPrivate *const priv = __glXInitialize(dpy);
@@ -1063,20 +953,11 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
}
}
#endif
-#endif /* GLX_USE_APPLEGL */
}
PUBLIC void
glXSwapBuffers(Display * dpy, GLXDrawable drawable)
{
-#ifdef GLX_USE_APPLEGL
- GLXContext gc = glXGetCurrentContext();
- if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) {
- apple_glx_swap_buffers(gc->driContext);
- } else {
- __glXSendError(dpy, GLXBadCurrentWindow, 0, X_GLXSwapBuffers, false);
- }
-#else
GLXContext gc;
GLXContextTag tag;
CARD8 opcode;
@@ -1086,7 +967,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
xGLXSwapBuffersReq *req;
#endif
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
if (pdraw != NULL) {
@@ -1131,7 +1012,6 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
SyncHandle();
XFlush(dpy);
#endif /* USE_XCB */
-#endif /* GLX_USE_APPLEGL */
}
@@ -1556,12 +1436,6 @@ glXChooseVisual(Display * dpy, int screen, int *attribList)
}
}
-#ifdef GLX_USE_APPLEGL
- if(visualList && getenv("LIBGL_DUMP_VISUALID")) {
- printf("visualid 0x%lx\n", visualList[0].visualid);
- }
-#endif
-
return visualList;
}
@@ -1584,7 +1458,7 @@ glXQueryExtensionsString(Display * dpy, int screen)
}
__glXCalculateUsableExtensions(psc,
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
(psc->driScreen != NULL),
#else
GL_FALSE,
@@ -1695,7 +1569,6 @@ PUBLIC
GLX_ALIAS(Display *, glXGetCurrentDisplayEXT, (void), (),
glXGetCurrentDisplay)
-#ifndef GLX_USE_APPLEGL
/**
* Used internally by libGL to send \c xGLXQueryContextinfoExtReq requests
* to the X-server.
@@ -1807,16 +1680,13 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
return retval;
}
-#endif
-
PUBLIC int
glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
{
-#ifndef GLX_USE_APPLEGL
int retVal;
/* get the information from the server if we don't have it already */
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
if (!ctx->driContext && (ctx->mode == NULL)) {
#else
if (ctx->mode == NULL) {
@@ -1825,17 +1695,13 @@ glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
if (Success != retVal)
return retVal;
}
-#endif
-
switch (attribute) {
-#ifndef GLX_USE_APPLEGL
- case GLX_SHARE_CONTEXT_EXT:
+ case GLX_SHARE_CONTEXT_EXT:
*value = (int) (ctx->share_xid);
break;
case GLX_VISUAL_ID_EXT:
*value = ctx->mode ? ctx->mode->visualID : None;
break;
-#endif
case GLX_SCREEN:
*value = (int) (ctx->screen);
break;
@@ -1864,9 +1730,6 @@ PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx)
PUBLIC GLXContext
glXImportContextEXT(Display * dpy, GLXContextID contextID)
{
-#ifdef GLX_USE_APPLEGL
- return NULL;
-#else
GLXContext ctx;
if (contextID == None) {
@@ -1887,7 +1750,6 @@ glXImportContextEXT(Display * dpy, GLXContextID contextID)
}
}
return ctx;
-#endif
}
PUBLIC void
@@ -2015,7 +1877,7 @@ glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config)
return XGetVisualInfo(dpy, VisualIDMask, &visualTemplate, &count);
}
-#ifndef GLX_USE_APPLEGL
+
/*
** GLX_SGI_swap_control
*/
@@ -2353,7 +2215,6 @@ __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
return GLX_BAD_CONTEXT;
}
-#endif /* GLX_USE_APPLEGL */
/*
** GLX_SGIX_fbconfig
@@ -2380,24 +2241,17 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
GLXFBConfigSGIX config,
Pixmap pixmap)
{
-#ifndef GLX_USE_APPLEGL
xGLXVendorPrivateWithReplyReq *vpreq;
xGLXCreateGLXPixmapWithConfigSGIXReq *req;
GLXPixmap xid = None;
CARD8 opcode;
- __GLXscreenConfigs *psc;
-#endif
const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
+ __GLXscreenConfigs *psc;
if ((dpy == NULL) || (config == NULL)) {
return None;
}
-#ifdef GLX_USE_APPLEGL
- if(apple_glx_pixmap_create(dpy, fbconfig->screen, pixmap, fbconfig))
- return None;
- return pixmap;
-#else
psc = GetGLXScreenConfigs(dpy, fbconfig->screen);
if ((psc != NULL)
@@ -2425,7 +2279,6 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
}
return xid;
-#endif
}
PUBLIC GLXContext
@@ -2471,7 +2324,7 @@ glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)
return NULL;
}
-#ifndef GLX_USE_APPLEGL
+
/*
** GLX_SGIX_swap_group
*/
@@ -2539,7 +2392,7 @@ __glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable,
return False;
}
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
_X_HIDDEN GLboolean
__driGetMscRateOML(__DRIdrawable * draw,
int32_t * numerator, int32_t * denominator, void *private)
@@ -2979,7 +2832,7 @@ __glXBindTexImageEXT(Display * dpy,
i++;
}
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
if (gc->driContext) {
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
@@ -3069,8 +2922,6 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer)
/*@}*/
-#endif /* GLX_USE_APPLEGL */
-
/**
* \c strdup is actually not a standard ANSI C or POSIX routine.
* Irix will not define it if ANSI mode is in effect.
@@ -3148,7 +2999,6 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION(glXQueryDrawable),
GLX_FUNCTION(glXSelectEvent),
-#ifndef GLX_USE_APPLEGL
/*** GLX_SGI_swap_control ***/
GLX_FUNCTION2(glXSwapIntervalSGI, __glXSwapIntervalSGI),
@@ -3166,7 +3016,6 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION2(glXGetCurrentDisplayEXT, glXGetCurrentDisplay),
GLX_FUNCTION(glXImportContextEXT),
GLX_FUNCTION2(glXQueryContextInfoEXT, glXQueryContext),
-#endif
/*** GLX_SGIX_fbconfig ***/
GLX_FUNCTION2(glXGetFBConfigAttribSGIX, glXGetFBConfigAttrib),
@@ -3176,7 +3025,6 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION2(glXGetVisualFromFBConfigSGIX, glXGetVisualFromFBConfig),
GLX_FUNCTION(glXGetFBConfigFromVisualSGIX),
-#ifndef GLX_USE_APPLEGL
/*** GLX_SGIX_pbuffer ***/
GLX_FUNCTION(glXCreateGLXPbufferSGIX),
GLX_FUNCTION(glXDestroyGLXPbufferSGIX),
@@ -3214,7 +3062,6 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION2(glXEndFrameTrackingMESA, __glXEndFrameTrackingMESA),
GLX_FUNCTION2(glXGetFrameUsageMESA, __glXGetFrameUsageMESA),
GLX_FUNCTION2(glXQueryFrameTrackingMESA, __glXQueryFrameTrackingMESA),
-#endif
/*** GLX_ARB_get_proc_address ***/
GLX_FUNCTION(glXGetProcAddressARB),
@@ -3222,7 +3069,6 @@ static const struct name_address_pair GLX_functions[] = {
/*** GLX 1.4 ***/
GLX_FUNCTION2(glXGetProcAddress, glXGetProcAddressARB),
-#ifndef GLX_USE_APPLEGL
/*** GLX_OML_sync_control ***/
GLX_FUNCTION2(glXWaitForSbcOML, __glXWaitForSbcOML),
GLX_FUNCTION2(glXWaitForMscOML, __glXWaitForMscOML),
@@ -3233,9 +3079,8 @@ static const struct name_address_pair GLX_functions[] = {
/*** GLX_EXT_texture_from_pixmap ***/
GLX_FUNCTION2(glXBindTexImageEXT, __glXBindTexImageEXT),
GLX_FUNCTION2(glXReleaseTexImageEXT, __glXReleaseTexImageEXT),
-#endif
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
/*** DRI configuration ***/
GLX_FUNCTION(glXGetScreenDriver),
GLX_FUNCTION(glXGetDriverConfig),
@@ -3244,7 +3089,7 @@ static const struct name_address_pair GLX_functions[] = {
{NULL, NULL} /* end of list */
};
-#ifndef GLX_USE_APPLEGL
+
static const GLvoid *
get_glx_proc_address(const char *funcName)
{
@@ -3258,7 +3103,7 @@ get_glx_proc_address(const char *funcName)
return NULL;
}
-#endif
+
/**
* Get the address of a named GL function. This is the pre-GLX 1.4 name for
@@ -3281,15 +3126,13 @@ PUBLIC void (*glXGetProcAddressARB(const GLubyte * procName)) (void)
* DRI based drivers from searching the core GL function table for
* internal API functions.
*/
-#ifdef GLX_USE_APPLEGL
- f = (gl_function) apple_glx_get_proc_address(procName);
-#else
+
f = (gl_function) get_glx_proc_address((const char *) procName);
if ((f == NULL) && (procName[0] == 'g') && (procName[1] == 'l')
&& (procName[2] != 'X')) {
f = (gl_function) _glapi_get_proc_address((const char *) procName);
}
-#endif
+
return f;
}
@@ -3312,7 +3155,7 @@ PUBLIC void (*glXGetProcAddress(const GLubyte * procName)) (void)
#endif /* __GNUC__ */
-#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+#ifdef GLX_DIRECT_RENDERING
/**
* Get the unadjusted system time (UST). Currently, the UST is measured in
* microseconds since Epoc. The actual resolution of the UST may vary from