Lines Matching +full:native +full:- +full:mode
21 * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
46 - hook up remaining unimplemented extensions
47 - research what guarantees glXWaitX, glXWaitGL are supposed to offer, and implement then
49 - pbuffer clobbering: we don't get async notification, but can we arrange to emit the
52 - XGetImage() doesn't work on pixmaps; need to do more work to make the format and location
53 of the native pixmap compatible
54 - implement GLX_EXT_texture_from_pixmap in terms of WGL_ARB_render_texture
61 - the __GLXConfig * we get handed back ones we are made (so we can extend the structure
78 #include <xwin-config.h>
103 /* ---------------------------------------------------------------------- */
176 if ((errorbuffer[strlen(errorbuffer) - 1] == '\n') || in glxWinErrorMessage()
177 (errorbuffer[strlen(errorbuffer) - 1] == '\r')) in glxWinErrorMessage()
178 errorbuffer[strlen(errorbuffer) - 1] = 0; in glxWinErrorMessage()
188 if (pfd->dwFlags & flag) { \
199 ErrorF("nSize = %u\n", pfd->nSize); in pfdOut()
200 ErrorF("nVersion = %u\n", pfd->nVersion); in pfdOut()
201 ErrorF("dwFlags = %u = {", (unsigned int)pfd->dwFlags); in pfdOut()
223 ErrorF("iPixelType = %hu = %s\n", pfd->iPixelType, in pfdOut()
224 (pfd->iPixelType == in pfdOut()
226 ErrorF("cColorBits = %hhu\n", pfd->cColorBits); in pfdOut()
227 ErrorF("cRedBits = %hhu\n", pfd->cRedBits); in pfdOut()
228 ErrorF("cRedShift = %hhu\n", pfd->cRedShift); in pfdOut()
229 ErrorF("cGreenBits = %hhu\n", pfd->cGreenBits); in pfdOut()
230 ErrorF("cGreenShift = %hhu\n", pfd->cGreenShift); in pfdOut()
231 ErrorF("cBlueBits = %hhu\n", pfd->cBlueBits); in pfdOut()
232 ErrorF("cBlueShift = %hhu\n", pfd->cBlueShift); in pfdOut()
233 ErrorF("cAlphaBits = %hhu\n", pfd->cAlphaBits); in pfdOut()
234 ErrorF("cAlphaShift = %hhu\n", pfd->cAlphaShift); in pfdOut()
235 ErrorF("cAccumBits = %hhu\n", pfd->cAccumBits); in pfdOut()
236 ErrorF("cAccumRedBits = %hhu\n", pfd->cAccumRedBits); in pfdOut()
237 ErrorF("cAccumGreenBits = %hhu\n", pfd->cAccumGreenBits); in pfdOut()
238 ErrorF("cAccumBlueBits = %hhu\n", pfd->cAccumBlueBits); in pfdOut()
239 ErrorF("cAccumAlphaBits = %hhu\n", pfd->cAccumAlphaBits); in pfdOut()
240 ErrorF("cDepthBits = %hhu\n", pfd->cDepthBits); in pfdOut()
241 ErrorF("cStencilBits = %hhu\n", pfd->cStencilBits); in pfdOut()
242 ErrorF("cAuxBuffers = %hhu\n", pfd->cAuxBuffers); in pfdOut()
243 ErrorF("iLayerType = %hhu\n", pfd->iLayerType); in pfdOut()
244 ErrorF("bReserved = %hhu\n", pfd->bReserved); in pfdOut()
245 ErrorF("dwLayerMask = %u\n", (unsigned int)pfd->dwLayerMask); in pfdOut()
246 ErrorF("dwVisibleMask = %u\n", (unsigned int)pfd->dwVisibleMask); in pfdOut()
247 ErrorF("dwDamageMask = %u\n", (unsigned int)pfd->dwDamageMask); in pfdOut()
268 return "-none-"; in visual_class_name()
300 …("------------------------------------------------------------------------------------------------… in fbConfigsDump()
303 unsigned int i = ((GLXWinConfig *) c)->pixelFormatIndex; in fbConfigsDump()
306 "%-11s" in fbConfigsDump()
318 i, c->visualID, c->fbconfigID, in fbConfigsDump()
319 visual_class_name(c->visualType), in fbConfigsDump()
320 c->rgbBits ? c->rgbBits : c->indexBits, in fbConfigsDump()
321 c->level, in fbConfigsDump()
322 (c->renderType & GLX_RGBA_BIT) ? "y" : ".", in fbConfigsDump()
323 (c->renderType & GLX_COLOR_INDEX_BIT) ? "y" : ".", in fbConfigsDump()
324 c->doubleBufferMode ? "y" : ".", in fbConfigsDump()
325 swap_method_name(c->swapMethod), in fbConfigsDump()
326 c->stereoMode ? "y" : ".", in fbConfigsDump()
327 c->redBits, c->greenBits, c->blueBits, c->alphaBits, in fbConfigsDump()
328 c->depthBits, c->stencilBits, in fbConfigsDump()
329 c->numAuxBuffers, in fbConfigsDump()
330 c->accumRedBits, c->accumGreenBits, c->accumBlueBits, in fbConfigsDump()
331 c->accumAlphaBits, c->sampleBuffers, c->samples, in fbConfigsDump()
332 (c->drawableType & GLX_WINDOW_BIT) ? "y" : ".", in fbConfigsDump()
333 (c->drawableType & GLX_PIXMAP_BIT) ? "y" : ".", in fbConfigsDump()
334 (c->drawableType & GLX_PBUFFER_BIT) ? "y" : ".", in fbConfigsDump()
335 (c->renderType & (GLX_RGBA_FLOAT_BIT_ARB | in fbConfigsDump()
337 (c->transparentPixel != GLX_NONE_EXT) ? "y" : ".", in fbConfigsDump()
338 c->visualSelectGroup, in fbConfigsDump()
339 (c->visualRating == GLX_SLOW_VISUAL_EXT) ? "*" : " "); in fbConfigsDump()
341 c = c->next; in fbConfigsDump()
345 /* ---------------------------------------------------------------------- */
375 static int fbConfigToPixelFormat(__GLXconfig * mode,
378 static int fbConfigToPixelFormatIndex(HDC hdc, __GLXconfig * mode,
382 /* ---------------------------------------------------------------------- */
389 "Win32 native WGL",
399 /* ---------------------------------------------------------------------- */
490 "AIGLX: No native OpenGL in modes with a root window\n"); in glxWinScreenProbe()
499 // Select the native GL implementation (WGL) in glxWinScreenProbe()
548 /* Dump out some useful information about the native renderer */ in glxWinScreenProbe()
566 "AIGLX: Won't use generic native renderer as it is not accelerated\n"); in glxWinScreenProbe()
578 // XXX: make this table-driven ? in glxWinScreenProbe()
580 __glXInitExtensionEnableBits(screen->base.glx_enable_bits); in glxWinScreenProbe()
583 screen->has_WGL_ARB_make_current_read = TRUE; in glxWinScreenProbe()
588 __glXEnableExtension(screen->base.glx_enable_bits, in glxWinScreenProbe()
594 __glXEnableExtension(screen->base.glx_enable_bits, in glxWinScreenProbe()
599 /* // Hmm? screen->texOffset */ in glxWinScreenProbe()
602 /* __glXEnableExtension(screen->base.glx_enable_bits, "GLX_EXT_texture_from_pixmap"); */ in glxWinScreenProbe()
604 /* screen->has_WGL_ARB_render_texture = TRUE; */ in glxWinScreenProbe()
608 screen->has_WGL_ARB_pbuffer = TRUE; in glxWinScreenProbe()
613 screen->has_WGL_ARB_multisample = TRUE; in glxWinScreenProbe()
617 screen->base.destroy = glxWinScreenDestroy; in glxWinScreenProbe()
618 screen->base.createContext = glxWinCreateContext; in glxWinScreenProbe()
619 screen->base.createDrawable = glxWinCreateDrawable; in glxWinScreenProbe()
620 screen->base.swapInterval = glxWinScreenSwapInterval; in glxWinScreenProbe()
621 screen->base.pScreen = pScreen; in glxWinScreenProbe()
623 // Creating the fbConfigs initializes screen->base.fbconfigs and screen->base.numFBConfigs in glxWinScreenProbe()
632 if (screen->base.numFBConfigs > 0) { in glxWinScreenProbe()
633 screen->has_WGL_ARB_pixel_format = TRUE; in glxWinScreenProbe()
637 if (screen->base.numFBConfigs <= 0) { in glxWinScreenProbe()
639 screen->has_WGL_ARB_pixel_format = FALSE; in glxWinScreenProbe()
645 if (screen->base.numFBConfigs <= 0) { in glxWinScreenProbe()
648 "AIGLX: No fbConfigs could be made from native OpenGL pixel formats\n"); in glxWinScreenProbe()
653 screen->base.visuals = NULL; in glxWinScreenProbe()
654 screen->base.numVisuals = 0; in glxWinScreenProbe()
656 __glXScreenInit(&screen->base, pScreen); in glxWinScreenProbe()
665 fbConfigsDump(screen->base.numFBConfigs, screen->base.fbconfigs); in glxWinScreenProbe()
668 screen->RealizeWindow = pScreen->RealizeWindow; in glxWinScreenProbe()
669 pScreen->RealizeWindow = glxWinRealizeWindow; in glxWinScreenProbe()
670 screen->UnrealizeWindow = pScreen->UnrealizeWindow; in glxWinScreenProbe()
671 pScreen->UnrealizeWindow = glxWinUnrealizeWindow; in glxWinScreenProbe()
672 screen->CopyWindow = pScreen->CopyWindow; in glxWinScreenProbe()
673 pScreen->CopyWindow = glxWinCopyWindow; in glxWinScreenProbe()
678 return &screen->base; in glxWinScreenProbe()
681 // Something went wrong and we can't use the native GL implementation in glxWinScreenProbe()
688 /* ---------------------------------------------------------------------- */
697 ScreenPtr pScreen = pWin->drawable.pScreen; in glxWinRealizeWindow()
703 pScreen->RealizeWindow = screenPriv->RealizeWindow; in glxWinRealizeWindow()
704 result = pScreen->RealizeWindow(pWin); in glxWinRealizeWindow()
705 pScreen->RealizeWindow = glxWinRealizeWindow; in glxWinRealizeWindow()
714 ScreenPtr pScreen = pWindow->drawable.pScreen; in glxWinCopyWindow()
719 dixLookupResourceByType((void *) &pGlxDraw, pWindow->drawable.id, in glxWinCopyWindow()
729 if (pGlxDraw && pGlxDraw->drawContext) { in glxWinCopyWindow()
734 GLWIN_DEBUG_MSG("glxWinCopyWindow - passing to hw layer"); in glxWinCopyWindow()
736 pScreen->CopyWindow = screenPriv->CopyWindow; in glxWinCopyWindow()
737 pScreen->CopyWindow(pWindow, ptOldOrg, prgnSrc); in glxWinCopyWindow()
738 pScreen->CopyWindow = glxWinCopyWindow; in glxWinCopyWindow()
745 ScreenPtr pScreen = pWin->drawable.pScreen; in glxWinUnrealizeWindow()
750 pScreen->UnrealizeWindow = screenPriv->UnrealizeWindow; in glxWinUnrealizeWindow()
751 result = pScreen->UnrealizeWindow(pWin); in glxWinUnrealizeWindow()
752 pScreen->UnrealizeWindow = glxWinUnrealizeWindow; in glxWinUnrealizeWindow()
757 /* ---------------------------------------------------------------------- */
771 if (draw->drawContext == NULL) { in glxWinDrawableSwapBuffers()
772 GLWIN_TRACE_MSG("glxWinSwapBuffers - no context for drawable"); in glxWinDrawableSwapBuffers()
777 ("glxWinSwapBuffers on drawable %p, last context %p (native ctx %p)", in glxWinDrawableSwapBuffers()
778 base, draw->drawContext, draw->drawContext->ctx); in glxWinDrawableSwapBuffers()
780 dc = glxWinMakeDC(draw->drawContext, draw, &dc, &hwnd); in glxWinDrawableSwapBuffers()
809 if (glxPriv->hPbuffer) in glxWinDrawableDestroy()
810 if (!wglDestroyPbufferARBWrapper(glxPriv->hPbuffer)) { in glxWinDrawableDestroy()
814 if (glxPriv->dibDC) { in glxWinDrawableDestroy()
816 SelectObject(glxPriv->dibDC, glxPriv->hOldDIB); in glxWinDrawableDestroy()
818 if (!DeleteDC(glxPriv->dibDC)) { in glxWinDrawableDestroy()
823 if (glxPriv->hDIB) { in glxWinDrawableDestroy()
824 if (!CloseHandle(glxPriv->hSection)) { in glxWinDrawableDestroy()
828 if (!DeleteObject(glxPriv->hDIB)) { in glxWinDrawableDestroy()
832 ((PixmapPtr) glxPriv->base.pDraw)->devPrivate.ptr = glxPriv->pOldBits; in glxWinDrawableDestroy()
855 (&glxPriv->base, screen, pDraw, type, glxDrawId, conf)) { in glxWinCreateDrawable()
860 glxPriv->base.destroy = glxWinDrawableDestroy; in glxWinCreateDrawable()
861 glxPriv->base.swapBuffers = glxWinDrawableSwapBuffers; in glxWinCreateDrawable()
862 glxPriv->base.copySubBuffer = glxWinDrawableCopySubBuffer; in glxWinCreateDrawable()
863 // glxPriv->base.waitX what are these for? in glxWinCreateDrawable()
864 // glxPriv->base.waitGL in glxWinCreateDrawable()
868 return &glxPriv->base; in glxWinCreateDrawable()
874 switch (draw->base.type) { in glxWinDeferredCreateDrawable()
877 WindowPtr pWin = (WindowPtr) draw->base.pDraw; in glxWinDeferredCreateDrawable()
879 if (!(config->drawableType & GLX_WINDOW_BIT)) { in glxWinDeferredCreateDrawable()
892 GLWIN_DEBUG_MSG("Deferring until native window is created"); in glxWinDeferredCreateDrawable()
900 if (draw->hPbuffer == NULL) { in glxWinDeferredCreateDrawable()
908 if (!(config->drawableType & GLX_PBUFFER_BIT)) { in glxWinDeferredCreateDrawable()
913 screen = glxGetScreen(screenInfo.screens[draw->base.pDraw->pScreen->myNum]); in glxWinDeferredCreateDrawable()
923 draw->hPbuffer = in glxWinDeferredCreateDrawable()
925 draw->base.pDraw->width, in glxWinDeferredCreateDrawable()
926 draw->base.pDraw->height, NULL); in glxWinDeferredCreateDrawable()
929 if (draw->hPbuffer == NULL) { in glxWinDeferredCreateDrawable()
937 draw->hPbuffer, draw); in glxWinDeferredCreateDrawable()
944 if (draw->dibDC == NULL) { in glxWinDeferredCreateDrawable()
953 bmpHeader.biWidth = draw->base.pDraw->width; in glxWinDeferredCreateDrawable()
954 bmpHeader.biHeight = draw->base.pDraw->height; in glxWinDeferredCreateDrawable()
956 bmpHeader.biBitCount = draw->base.pDraw->bitsPerPixel; in glxWinDeferredCreateDrawable()
959 if (!(config->drawableType & GLX_PIXMAP_BIT)) { in glxWinDeferredCreateDrawable()
964 draw->dibDC = CreateCompatibleDC(NULL); in glxWinDeferredCreateDrawable()
965 if (draw->dibDC == NULL) { in glxWinDeferredCreateDrawable()
970 #define RASTERWIDTHBYTES(bmi) (((((bmi)->biWidth*(bmi)->biBitCount)+31)&~31)>>3) in glxWinDeferredCreateDrawable()
978 …snprintf(name, sizeof(name), "Local\\CYGWINX_WINDOWSDRI_%08x", (unsigned int)draw->base.pDraw->id); in glxWinDeferredCreateDrawable()
982 draw->hSection = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, in glxWinDeferredCreateDrawable()
984 if (draw->hSection == NULL) { in glxWinDeferredCreateDrawable()
989 draw->hDIB = in glxWinDeferredCreateDrawable()
990 CreateDIBSection(draw->dibDC, (BITMAPINFO *) &bmpHeader, in glxWinDeferredCreateDrawable()
991 DIB_RGB_COLORS, &pBits, draw->hSection, sizeof(BITMAPINFOHEADER)); in glxWinDeferredCreateDrawable()
992 if (draw->dibDC == NULL) { in glxWinDeferredCreateDrawable()
1000 LPVOID pData = MapViewOfFile(draw->hSection, FILE_MAP_WRITE, 0, 0, 0); in glxWinDeferredCreateDrawable()
1009 draw->pOldBits = ((PixmapPtr) draw->base.pDraw)->devPrivate.ptr; in glxWinDeferredCreateDrawable()
1010 ((PixmapPtr) draw->base.pDraw)->devPrivate.ptr = pBits; in glxWinDeferredCreateDrawable()
1013 draw->hOldDIB = SelectObject(draw->dibDC, draw->hDIB); in glxWinDeferredCreateDrawable()
1014 if (!draw->hOldDIB) { in glxWinDeferredCreateDrawable()
1018 screen = glxGetScreen(screenInfo.screens[draw->base.pDraw->pScreen->myNum]); in glxWinDeferredCreateDrawable()
1021 glxWinSetPixelFormat(draw->dibDC, in glxWinDeferredCreateDrawable()
1022 draw->base.pDraw->bitsPerPixel, in glxWinDeferredCreateDrawable()
1029 draw->hDIB, draw); in glxWinDeferredCreateDrawable()
1038 draw->base.type); in glxWinDeferredCreateDrawable()
1044 /* ---------------------------------------------------------------------- */
1067 /* ---------------------------------------------------------------------- */
1073 * is actually used on a specifc drawable which is connected to a native window,
1077 * recreate it for every new native window
1094 winConfig->pixelFormatIndex); in glxWinSetPixelFormat()
1104 (config->redBits + config->greenBits + config->blueBits))) in glxWinSetPixelFormat()
1105 || ((config->drawableType & drawableTypeOverride) == 0))) { in glxWinSetPixelFormat()
1106 if (!SetPixelFormat(hdc, winConfig->pixelFormatIndex, NULL)) { in glxWinSetPixelFormat()
1116 use we are going to put it to, so we need to re-evaluate the pixel format to use: in glxWinSetPixelFormat()
1132 …("glxWinSetPixelFormat: having second thoughts: cColorbits %d, bppOveride %d; config->drawableType… in glxWinSetPixelFormat()
1133 (config->redBits + config->greenBits + config->blueBits), bppOverride, in glxWinSetPixelFormat()
1134 config->drawableType, drawableTypeOverride); in glxWinSetPixelFormat()
1136 if (!winScreen->has_WGL_ARB_pixel_format) { in glxWinSetPixelFormat()
1165 pixelFormat, winConfig->pixelFormatIndex); in glxWinSetPixelFormat()
1184 pixelFormat, winConfig->pixelFormatIndex); in glxWinSetPixelFormat()
1203 GLWIN_TRACE_MSG("No drawable for context %p (native ctx %p)", gc, in glxWinMakeDC()
1204 gc->ctx); in glxWinMakeDC()
1208 switch (draw->base.type) { in glxWinMakeDC()
1213 pWin = (WindowPtr) draw->base.pDraw; in glxWinMakeDC()
1232 if (*hwnd != gc->hwnd) { in glxWinMakeDC()
1237 ("for context %p (native ctx %p), hWnd changed from %p to %p", in glxWinMakeDC()
1238 gc, gc->ctx, gc->hwnd, *hwnd); in glxWinMakeDC()
1239 gc->hwnd = *hwnd; in glxWinMakeDC()
1242 … if (!glxWinSetPixelFormat(*hdc, 0, GLX_WINDOW_BIT, gc->base.pGlxScreen, gc->base.config)) { in glxWinMakeDC()
1255 *hdc = wglGetPbufferDCARBWrapper(draw->hPbuffer); in glxWinMakeDC()
1264 *hdc = draw->dibDC; in glxWinMakeDC()
1271 draw->base.type); in glxWinMakeDC()
1284 switch (draw->base.type) { in glxWinReleaseDC()
1293 if (!wglReleasePbufferDCARBWrapper(draw->hPbuffer, hdc)) { in glxWinReleaseDC()
1313 draw->base.type); in glxWinReleaseDC()
1328 glxWinDeferredCreateDrawable(draw, gc->base.config); in glxWinDeferredCreateContext()
1331 gc->ctx = wglCreateContext(dc); in glxWinDeferredCreateContext()
1334 if (gc->ctx == NULL) { in glxWinDeferredCreateContext()
1340 ("glxWinDeferredCreateContext: attached context %p to native context %p drawable %p", in glxWinDeferredCreateContext()
1341 gc, gc->ctx, draw); in glxWinDeferredCreateContext()
1343 // if the native context was created successfully, shareLists if needed in glxWinDeferredCreateContext()
1344 if (gc->ctx && gc->shareContext) { in glxWinDeferredCreateContext()
1346 ("glxWinCreateContextReal shareLists with context %p (native ctx %p)", in glxWinDeferredCreateContext()
1347 gc->shareContext, gc->shareContext->ctx); in glxWinDeferredCreateContext()
1349 if (!wglShareLists(gc->shareContext->ctx, gc->ctx)) { in glxWinDeferredCreateContext()
1355 /* ---------------------------------------------------------------------- */
1365 glxWinScreen *scr = (glxWinScreen *)base->pGlxScreen; in glxWinContextMakeCurrent()
1374 GLWIN_TRACE_MSG("glxWinContextMakeCurrent context %p (native ctx %p)", gc, in glxWinContextMakeCurrent()
1375 gc->ctx); in glxWinContextMakeCurrent()
1378 drawPriv = gc->base.drawPriv; in glxWinContextMakeCurrent()
1379 ((__GLXWinDrawable *) drawPriv)->drawContext = gc; in glxWinContextMakeCurrent()
1381 if (gc->ctx == NULL) { in glxWinContextMakeCurrent()
1385 if (gc->ctx == NULL) { in glxWinContextMakeCurrent()
1386 ErrorF("glxWinContextMakeCurrent: Native context is NULL\n"); in glxWinContextMakeCurrent()
1397 if ((gc->base.readPriv != NULL) && (gc->base.readPriv != gc->base.drawPriv)) { in glxWinContextMakeCurrent()
1403 if (!scr->has_WGL_ARB_make_current_read) in glxWinContextMakeCurrent()
1411 readPriv = gc->base.readPriv; in glxWinContextMakeCurrent()
1420 ret = wglMakeContextCurrentARBWrapper(drawDC, readDC, gc->ctx); in glxWinContextMakeCurrent()
1428 ret = wglMakeCurrent(drawDC, gc->ctx); in glxWinContextMakeCurrent()
1450 GLWIN_TRACE_MSG("glxWinContextLoseCurrent context %p (native ctx %p)", gc, in glxWinContextLoseCurrent()
1451 gc->ctx); in glxWinContextLoseCurrent()
1477 ret = wglCopyContext(src->ctx, dst->ctx, mask); in glxWinContextCopy()
1491 GLWIN_DEBUG_MSG("GLXcontext %p destroyed (native ctx %p)", base, in glxWinContextDestroy()
1492 gc->ctx); in glxWinContextDestroy()
1494 if (gc->ctx) { in glxWinContextDestroy()
1496 if (wglGetCurrentContext() == gc->ctx) { in glxWinContextDestroy()
1501 BOOL ret = wglDeleteContext(gc->ctx); in glxWinContextDestroy()
1508 gc->ctx = NULL; in glxWinContextDestroy()
1529 context->base.destroy = glxWinContextDestroy; in glxWinCreateContext()
1530 context->base.makeCurrent = glxWinContextMakeCurrent; in glxWinCreateContext()
1531 context->base.loseCurrent = glxWinContextLoseCurrent; in glxWinCreateContext()
1532 context->base.copy = glxWinContextCopy; in glxWinCreateContext()
1533 context->base.bindTexImage = glxWinBindTexImage; in glxWinCreateContext()
1534 context->base.releaseTexImage = glxWinReleaseTexImage; in glxWinCreateContext()
1535 context->base.config = modes; in glxWinCreateContext()
1536 context->base.pGlxScreen = screen; in glxWinCreateContext()
1538 // actual native GL context creation is deferred until attach() in glxWinCreateContext()
1539 context->ctx = NULL; in glxWinCreateContext()
1540 context->shareContext = shareContext; in glxWinCreateContext()
1544 return &(context->base); in glxWinCreateContext()
1547 /* ---------------------------------------------------------------------- */
1565 fbConfigToPixelFormat(__GLXconfig * mode, PIXELFORMATDESCRIPTOR * pfdret, in fbConfigToPixelFormat() argument
1573 24, /* 24-bit color depth */ in fbConfigToPixelFormat()
1579 32, /* 32-bit z-buffer */ in fbConfigToPixelFormat()
1587 if ((mode->drawableType | drawableTypeOverride) & GLX_WINDOW_BIT) in fbConfigToPixelFormat()
1590 if ((mode->drawableType | drawableTypeOverride) & GLX_PIXMAP_BIT) in fbConfigToPixelFormat()
1593 if (mode->stereoMode) { in fbConfigToPixelFormat()
1596 if (mode->doubleBufferMode) { in fbConfigToPixelFormat()
1600 pfd.cColorBits = mode->redBits + mode->greenBits + mode->blueBits; in fbConfigToPixelFormat()
1601 pfd.cRedBits = mode->redBits; in fbConfigToPixelFormat()
1602 pfd.cRedShift = GetShift(mode->redMask); in fbConfigToPixelFormat()
1603 pfd.cGreenBits = mode->greenBits; in fbConfigToPixelFormat()
1604 pfd.cGreenShift = GetShift(mode->greenMask); in fbConfigToPixelFormat()
1605 pfd.cBlueBits = mode->blueBits; in fbConfigToPixelFormat()
1606 pfd.cBlueShift = GetShift(mode->blueMask); in fbConfigToPixelFormat()
1607 pfd.cAlphaBits = mode->alphaBits; in fbConfigToPixelFormat()
1608 pfd.cAlphaShift = GetShift(mode->alphaMask); in fbConfigToPixelFormat()
1610 if (mode->visualType == GLX_TRUE_COLOR) { in fbConfigToPixelFormat()
1618 pfd.dwVisibleMask = mode->transparentIndex; in fbConfigToPixelFormat()
1622 mode->accumRedBits + mode->accumGreenBits + mode->accumBlueBits + in fbConfigToPixelFormat()
1623 mode->accumAlphaBits; in fbConfigToPixelFormat()
1624 pfd.cAccumRedBits = mode->accumRedBits; in fbConfigToPixelFormat()
1625 pfd.cAccumGreenBits = mode->accumGreenBits; in fbConfigToPixelFormat()
1626 pfd.cAccumBlueBits = mode->accumBlueBits; in fbConfigToPixelFormat()
1627 pfd.cAccumAlphaBits = mode->accumAlphaBits; in fbConfigToPixelFormat()
1629 pfd.cDepthBits = mode->depthBits; in fbConfigToPixelFormat()
1630 pfd.cStencilBits = mode->stencilBits; in fbConfigToPixelFormat()
1631 pfd.cAuxBuffers = mode->numAuxBuffers; in fbConfigToPixelFormat()
1633 /* mode->level ? */ in fbConfigToPixelFormat()
1643 fbConfigToPixelFormatIndex(HDC hdc, __GLXconfig * mode, in fbConfigToPixelFormatIndex() argument
1649 /* convert fbConfig to attr-value list */ in fbConfigToPixelFormatIndex()
1654 (mode->visualType == in fbConfigToPixelFormatIndex()
1658 (mode->visualType == in fbConfigToPixelFormatIndex()
1659 GLX_TRUE_COLOR) ? mode->rgbBits : mode->indexBits); in fbConfigToPixelFormatIndex()
1660 SET_ATTR_VALUE(WGL_RED_BITS_ARB, mode->redBits); in fbConfigToPixelFormatIndex()
1661 SET_ATTR_VALUE(WGL_GREEN_BITS_ARB, mode->greenBits); in fbConfigToPixelFormatIndex()
1662 SET_ATTR_VALUE(WGL_BLUE_BITS_ARB, mode->blueBits); in fbConfigToPixelFormatIndex()
1663 SET_ATTR_VALUE(WGL_ALPHA_BITS_ARB, mode->alphaBits); in fbConfigToPixelFormatIndex()
1664 SET_ATTR_VALUE(WGL_ACCUM_RED_BITS_ARB, mode->accumRedBits); in fbConfigToPixelFormatIndex()
1665 SET_ATTR_VALUE(WGL_ACCUM_GREEN_BITS_ARB, mode->accumGreenBits); in fbConfigToPixelFormatIndex()
1666 SET_ATTR_VALUE(WGL_ACCUM_BLUE_BITS_ARB, mode->accumBlueBits); in fbConfigToPixelFormatIndex()
1667 SET_ATTR_VALUE(WGL_ACCUM_ALPHA_BITS_ARB, mode->accumAlphaBits); in fbConfigToPixelFormatIndex()
1668 SET_ATTR_VALUE(WGL_DEPTH_BITS_ARB, mode->depthBits); in fbConfigToPixelFormatIndex()
1669 SET_ATTR_VALUE(WGL_STENCIL_BITS_ARB, mode->stencilBits); in fbConfigToPixelFormatIndex()
1670 SET_ATTR_VALUE(WGL_AUX_BUFFERS_ARB, mode->numAuxBuffers); in fbConfigToPixelFormatIndex()
1672 if (mode->doubleBufferMode) in fbConfigToPixelFormatIndex()
1675 if (mode->stereoMode) in fbConfigToPixelFormatIndex()
1679 if (mode->swapMethod == GLX_SWAP_EXCHANGE_OML) in fbConfigToPixelFormatIndex()
1682 if (mode->swapMethod == GLX_SWAP_COPY_OML) in fbConfigToPixelFormatIndex()
1686 if (mode->visualRating == GLX_SLOW_VISUAL_EXT) in fbConfigToPixelFormatIndex()
1689 // must support all the drawable types the mode supports in fbConfigToPixelFormatIndex()
1690 if ((mode->drawableType | drawableTypeOverride) & GLX_WINDOW_BIT) in fbConfigToPixelFormatIndex()
1696 if (mode->drawableType & GLX_PIXMAP_BIT) in fbConfigToPixelFormatIndex()
1699 if (mode->drawableType & GLX_PBUFFER_BIT) in fbConfigToPixelFormatIndex()
1700 if (winScreen->has_WGL_ARB_pbuffer) in fbConfigToPixelFormatIndex()
1708 if (winScreen->has_WGL_ARB_pbuffer) in fbConfigToPixelFormatIndex()
1737 /* ---------------------------------------------------------------------- */
1739 #define BITS_AND_SHIFT_TO_MASK(bits,mask) (((1<<(bits))-1) << (mask))
1755 screen->base.numFBConfigs = 0; in glxWinCreateConfigs()
1756 screen->base.fbconfigs = NULL; in glxWinCreateConfigs()
1774 c->pixelFormatIndex = i + 1; in glxWinCreateConfigs()
1796 c->base.doubleBufferMode = in glxWinCreateConfigs()
1798 c->base.stereoMode = (pfd.dwFlags & PFD_STEREO) ? GL_TRUE : GL_FALSE; in glxWinCreateConfigs()
1800 c->base.redBits = pfd.cRedBits; in glxWinCreateConfigs()
1801 c->base.greenBits = pfd.cGreenBits; in glxWinCreateConfigs()
1802 c->base.blueBits = pfd.cBlueBits; in glxWinCreateConfigs()
1803 c->base.alphaBits = pfd.cAlphaBits; in glxWinCreateConfigs()
1805 c->base.redMask = BITS_AND_SHIFT_TO_MASK(pfd.cRedBits, pfd.cRedShift); in glxWinCreateConfigs()
1806 c->base.greenMask = in glxWinCreateConfigs()
1808 c->base.blueMask = in glxWinCreateConfigs()
1810 c->base.alphaMask = in glxWinCreateConfigs()
1813 c->base.rgbBits = pfd.cColorBits; in glxWinCreateConfigs()
1816 c->base.indexBits = pfd.cColorBits; in glxWinCreateConfigs()
1819 c->base.indexBits = 0; in glxWinCreateConfigs()
1822 c->base.accumRedBits = pfd.cAccumRedBits; in glxWinCreateConfigs()
1823 c->base.accumGreenBits = pfd.cAccumGreenBits; in glxWinCreateConfigs()
1824 c->base.accumBlueBits = pfd.cAccumBlueBits; in glxWinCreateConfigs()
1825 c->base.accumAlphaBits = pfd.cAccumAlphaBits; in glxWinCreateConfigs()
1828 c->base.depthBits = pfd.cDepthBits; in glxWinCreateConfigs()
1829 c->base.stencilBits = pfd.cStencilBits; in glxWinCreateConfigs()
1830 c->base.numAuxBuffers = pfd.cAuxBuffers; in glxWinCreateConfigs()
1833 c->base.level = 0; in glxWinCreateConfigs()
1837 c->base.visualID = -1; // will be set by __glXScreenInit() in glxWinCreateConfigs()
1841 c->base.visualRating = GLX_SLOW_VISUAL_EXT; in glxWinCreateConfigs()
1845 c->base.visualRating = GLX_NONE_EXT; in glxWinCreateConfigs()
1850 c->base.visualType = GLX_STATIC_COLOR; in glxWinCreateConfigs()
1851 c->base.transparentRed = GLX_NONE; in glxWinCreateConfigs()
1852 c->base.transparentGreen = GLX_NONE; in glxWinCreateConfigs()
1853 c->base.transparentBlue = GLX_NONE; in glxWinCreateConfigs()
1854 c->base.transparentAlpha = GLX_NONE; in glxWinCreateConfigs()
1855 c->base.transparentIndex = pfd.dwVisibleMask; in glxWinCreateConfigs()
1856 c->base.transparentPixel = GLX_TRANSPARENT_INDEX; in glxWinCreateConfigs()
1859 c->base.visualType = GLX_TRUE_COLOR; in glxWinCreateConfigs()
1860 c->base.transparentRed = in glxWinCreateConfigs()
1861 (pfd.dwVisibleMask & c->base.redMask) >> pfd.cRedShift; in glxWinCreateConfigs()
1862 c->base.transparentGreen = in glxWinCreateConfigs()
1863 (pfd.dwVisibleMask & c->base.greenMask) >> pfd.cGreenShift; in glxWinCreateConfigs()
1864 c->base.transparentBlue = in glxWinCreateConfigs()
1865 (pfd.dwVisibleMask & c->base.blueMask) >> pfd.cBlueShift; in glxWinCreateConfigs()
1866 c->base.transparentAlpha = in glxWinCreateConfigs()
1867 (pfd.dwVisibleMask & c->base.alphaMask) >> pfd.cAlphaShift; in glxWinCreateConfigs()
1868 c->base.transparentIndex = GLX_NONE; in glxWinCreateConfigs()
1869 c->base.transparentPixel = GLX_TRANSPARENT_RGB; in glxWinCreateConfigs()
1873 c->base.sampleBuffers = 0; in glxWinCreateConfigs()
1874 c->base.samples = 0; in glxWinCreateConfigs()
1877 c->base.drawableType = in glxWinCreateConfigs()
1882 c->base.renderType = GLX_RGBA_BIT | GLX_COLOR_INDEX_BIT; in glxWinCreateConfigs()
1885 c->base.renderType = GLX_RGBA_BIT; in glxWinCreateConfigs()
1888 c->base.fbconfigID = -1; // will be set by __glXScreenInit() in glxWinCreateConfigs()
1892 c->base.maxPbufferWidth = -1; in glxWinCreateConfigs()
1893 c->base.maxPbufferHeight = -1; in glxWinCreateConfigs()
1894 c->base.maxPbufferPixels = -1; in glxWinCreateConfigs()
1895 c->base.optimalPbufferWidth = 0; // there is no optimal value in glxWinCreateConfigs()
1896 c->base.optimalPbufferHeight = 0; in glxWinCreateConfigs()
1902 c->base.visualSelectGroup = 2; in glxWinCreateConfigs()
1906 c->base.visualSelectGroup = 1; in glxWinCreateConfigs()
1910 c->base.visualSelectGroup = 0; in glxWinCreateConfigs()
1920 c->base.swapMethod = GLX_SWAP_EXCHANGE_OML; in glxWinCreateConfigs()
1922 c->base.swapMethod = GLX_SWAP_COPY_OML; in glxWinCreateConfigs()
1924 c->base.swapMethod = GLX_SWAP_UNDEFINED_OML; in glxWinCreateConfigs()
1927 c->base.bindToTextureRgb = -1; in glxWinCreateConfigs()
1928 c->base.bindToTextureRgba = -1; in glxWinCreateConfigs()
1929 c->base.bindToMipmapTexture = -1; in glxWinCreateConfigs()
1930 c->base.bindToTextureTargets = -1; in glxWinCreateConfigs()
1931 c->base.yInverted = -1; in glxWinCreateConfigs()
1932 c->base.sRGBCapable = 0; in glxWinCreateConfigs()
1950 prev->base.next = &(work->base); in glxWinCreateConfigs()
1957 screen->base.numFBConfigs = n; in glxWinCreateConfigs()
1958 screen->base.fbconfigs = first ? &(first->base) : NULL; in glxWinCreateConfigs()
2000 screen->base.numFBConfigs = 0; in glxWinCreateConfigsExt()
2001 screen->base.fbconfigs = NULL; in glxWinCreateConfigsExt()
2051 if (screen->has_WGL_ARB_multisample) { in glxWinCreateConfigsExt()
2057 if (screen->has_WGL_ARB_render_texture) { in glxWinCreateConfigsExt()
2063 if (screen->has_WGL_ARB_pbuffer) { in glxWinCreateConfigsExt()
2079 c->pixelFormatIndex = i + 1; in glxWinCreateConfigsExt()
2098 c->base.doubleBufferMode = in glxWinCreateConfigsExt()
2100 c->base.stereoMode = ATTR_VALUE(WGL_STEREO_ARB, 0) ? GL_TRUE : GL_FALSE; in glxWinCreateConfigsExt()
2102 c->base.redBits = ATTR_VALUE(WGL_RED_BITS_ARB, 0); in glxWinCreateConfigsExt()
2103 c->base.greenBits = ATTR_VALUE(WGL_GREEN_BITS_ARB, 0); in glxWinCreateConfigsExt()
2104 c->base.blueBits = ATTR_VALUE(WGL_BLUE_BITS_ARB, 0); in glxWinCreateConfigsExt()
2105 c->base.alphaBits = ATTR_VALUE(WGL_ALPHA_BITS_ARB, 0); in glxWinCreateConfigsExt()
2107 c->base.redMask = in glxWinCreateConfigsExt()
2108 BITS_AND_SHIFT_TO_MASK(c->base.redBits, in glxWinCreateConfigsExt()
2110 c->base.greenMask = in glxWinCreateConfigsExt()
2111 BITS_AND_SHIFT_TO_MASK(c->base.greenBits, in glxWinCreateConfigsExt()
2113 c->base.blueMask = in glxWinCreateConfigsExt()
2114 BITS_AND_SHIFT_TO_MASK(c->base.blueBits, in glxWinCreateConfigsExt()
2116 c->base.alphaMask = in glxWinCreateConfigsExt()
2117 BITS_AND_SHIFT_TO_MASK(c->base.alphaBits, in glxWinCreateConfigsExt()
2122 c->base.indexBits = ATTR_VALUE(WGL_COLOR_BITS_ARB, 0); in glxWinCreateConfigsExt()
2123 c->base.rgbBits = 0; in glxWinCreateConfigsExt()
2124 c->base.visualType = GLX_STATIC_COLOR; in glxWinCreateConfigsExt()
2139 c->base.indexBits = 0; in glxWinCreateConfigsExt()
2140 c->base.rgbBits = ATTR_VALUE(WGL_COLOR_BITS_ARB, 0); in glxWinCreateConfigsExt()
2141 c->base.visualType = GLX_TRUE_COLOR; in glxWinCreateConfigsExt()
2151 c->base.accumRedBits = ATTR_VALUE(WGL_ACCUM_RED_BITS_ARB, 0); in glxWinCreateConfigsExt()
2152 c->base.accumGreenBits = ATTR_VALUE(WGL_ACCUM_GREEN_BITS_ARB, 0); in glxWinCreateConfigsExt()
2153 c->base.accumBlueBits = ATTR_VALUE(WGL_ACCUM_BLUE_BITS_ARB, 0); in glxWinCreateConfigsExt()
2154 c->base.accumAlphaBits = ATTR_VALUE(WGL_ACCUM_ALPHA_BITS_ARB, 0); in glxWinCreateConfigsExt()
2156 c->base.depthBits = ATTR_VALUE(WGL_DEPTH_BITS_ARB, 0); in glxWinCreateConfigsExt()
2157 c->base.stencilBits = ATTR_VALUE(WGL_STENCIL_BITS_ARB, 0); in glxWinCreateConfigsExt()
2158 c->base.numAuxBuffers = ATTR_VALUE(WGL_AUX_BUFFERS_ARB, 0); in glxWinCreateConfigsExt()
2173 c->base.level = 0; in glxWinCreateConfigsExt()
2175 c->base.visualID = -1; // will be set by __glXScreenInit() in glxWinCreateConfigsExt()
2185 c->base.visualRating = GLX_SLOW_VISUAL_EXT; in glxWinCreateConfigsExt()
2190 c->base.visualRating = GLX_NONE_EXT; in glxWinCreateConfigsExt()
2195 // c->base.visualType is set above in glxWinCreateConfigsExt()
2197 c->base.transparentPixel = in glxWinCreateConfigsExt()
2198 (c->base.visualType == in glxWinCreateConfigsExt()
2201 c->base.transparentRed = in glxWinCreateConfigsExt()
2203 c->base.transparentGreen = in glxWinCreateConfigsExt()
2205 c->base.transparentBlue = in glxWinCreateConfigsExt()
2207 c->base.transparentAlpha = in glxWinCreateConfigsExt()
2209 c->base.transparentIndex = in glxWinCreateConfigsExt()
2213 c->base.transparentPixel = GLX_NONE_EXT; in glxWinCreateConfigsExt()
2214 c->base.transparentRed = GLX_NONE; in glxWinCreateConfigsExt()
2215 c->base.transparentGreen = GLX_NONE; in glxWinCreateConfigsExt()
2216 c->base.transparentBlue = GLX_NONE; in glxWinCreateConfigsExt()
2217 c->base.transparentAlpha = GLX_NONE; in glxWinCreateConfigsExt()
2218 c->base.transparentIndex = GLX_NONE; in glxWinCreateConfigsExt()
2222 if (screen->has_WGL_ARB_multisample) { in glxWinCreateConfigsExt()
2223 c->base.sampleBuffers = ATTR_VALUE(WGL_SAMPLE_BUFFERS_ARB, 0); in glxWinCreateConfigsExt()
2224 c->base.samples = ATTR_VALUE(WGL_SAMPLES_ARB, 0); in glxWinCreateConfigsExt()
2227 c->base.sampleBuffers = 0; in glxWinCreateConfigsExt()
2228 c->base.samples = 0; in glxWinCreateConfigsExt()
2232 c->base.drawableType = in glxWinCreateConfigsExt()
2239 (it is specified to render to red component in single-channel visuals, in glxWinCreateConfigsExt()
2243 Color index rendering is only supported on single-channel visuals in glxWinCreateConfigsExt()
2245 if (c->base.visualType == GLX_STATIC_COLOR) { in glxWinCreateConfigsExt()
2246 c->base.renderType = GLX_RGBA_BIT | GLX_COLOR_INDEX_BIT; in glxWinCreateConfigsExt()
2249 c->base.renderType = GLX_RGBA_BIT; in glxWinCreateConfigsExt()
2252 c->base.fbconfigID = -1; // will be set by __glXScreenInit() in glxWinCreateConfigsExt()
2255 if (screen->has_WGL_ARB_pbuffer) { in glxWinCreateConfigsExt()
2256 c->base.maxPbufferWidth = ATTR_VALUE(WGL_MAX_PBUFFER_WIDTH_ARB, -1); in glxWinCreateConfigsExt()
2257 c->base.maxPbufferHeight = in glxWinCreateConfigsExt()
2258 ATTR_VALUE(WGL_MAX_PBUFFER_HEIGHT_ARB, -1); in glxWinCreateConfigsExt()
2259 c->base.maxPbufferPixels = in glxWinCreateConfigsExt()
2260 ATTR_VALUE(WGL_MAX_PBUFFER_PIXELS_ARB, -1); in glxWinCreateConfigsExt()
2263 c->base.maxPbufferWidth = -1; in glxWinCreateConfigsExt()
2264 c->base.maxPbufferHeight = -1; in glxWinCreateConfigsExt()
2265 c->base.maxPbufferPixels = -1; in glxWinCreateConfigsExt()
2267 c->base.optimalPbufferWidth = 0; // there is no optimal value in glxWinCreateConfigsExt()
2268 c->base.optimalPbufferHeight = 0; in glxWinCreateConfigsExt()
2274 c->base.visualSelectGroup = 2; in glxWinCreateConfigsExt()
2278 c->base.visualSelectGroup = 1; in glxWinCreateConfigsExt()
2283 c->base.visualSelectGroup = 0; in glxWinCreateConfigsExt()
2290 c->base.swapMethod = GLX_SWAP_EXCHANGE_OML; in glxWinCreateConfigsExt()
2294 c->base.swapMethod = GLX_SWAP_COPY_OML; in glxWinCreateConfigsExt()
2303 c->base.swapMethod = GLX_SWAP_UNDEFINED_OML; in glxWinCreateConfigsExt()
2312 if (screen->has_WGL_ARB_render_texture) { in glxWinCreateConfigsExt()
2313 c->base.bindToTextureRgb = in glxWinCreateConfigsExt()
2314 ATTR_VALUE(WGL_BIND_TO_TEXTURE_RGB_ARB, -1); in glxWinCreateConfigsExt()
2315 c->base.bindToTextureRgba = in glxWinCreateConfigsExt()
2316 ATTR_VALUE(WGL_BIND_TO_TEXTURE_RGBA_ARB, -1); in glxWinCreateConfigsExt()
2319 c->base.bindToTextureRgb = -1; in glxWinCreateConfigsExt()
2320 c->base.bindToTextureRgba = -1; in glxWinCreateConfigsExt()
2322 c->base.bindToMipmapTexture = -1; in glxWinCreateConfigsExt()
2323 c->base.bindToTextureTargets = in glxWinCreateConfigsExt()
2326 c->base.yInverted = -1; in glxWinCreateConfigsExt()
2327 c->base.sRGBCapable = 0; in glxWinCreateConfigsExt()
2345 prev->base.next = &(work->base); in glxWinCreateConfigsExt()
2349 screen->base.numFBConfigs = n; in glxWinCreateConfigsExt()
2350 screen->base.fbconfigs = first ? &(first->base) : NULL; in glxWinCreateConfigsExt()