diff options
author | Jeremy Huddleston <[email protected]> | 2010-04-01 17:00:22 -0700 |
---|---|---|
committer | Jeremy Huddleston <[email protected]> | 2010-04-01 17:01:51 -0700 |
commit | 115203281cf791221f586f03c14cfe4e0a44dd7a (patch) | |
tree | 767951e542d416243041b964dd252e030cfadf5e /src/glx/glxcmds.c | |
parent | 9aadc793f3db64cefa0b08f18abad424a659dacc (diff) |
Revert accidental commits from the xquartz tree
This reverts commit 9aadc793f3db64cefa0b08f18abad424a659dacc.
This reverts commit 69ea4e7718efb60b6b0d795a355cebd6712ceac1.
This reverts commit dbe8b013936d977ec63d6607bfd2fc6772d29787.
This reverts commit 23215ef4d60a86d9f3b3fdc08e3fdadc59e98890.
This reverts commit 9495e3703062d1ddaf3161f4efc23f0b51284d9b.
This reverts commit 0594cf70883b64692ba617d85f4f9b4e636e5c2b.
This reverts commit 86a7978d37393ee34f876569ac06ffdb8d7289ae.
This reverts commit 437902ce978cde9a0e1aa260f12dc232a8501c42.
Diffstat (limited to 'src/glx/glxcmds.c')
-rw-r--r-- | src/glx/glxcmds.c | 211 |
1 files changed, 27 insertions, 184 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index ef8674f4e0b..8f809dc5259 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 |