Mesa (gallium-0.2): stw: move pixelformat_get/set to shared

Keith Whitwell keithw at kemper.freedesktop.org
Mon Feb 2 12:21:34 UTC 2009


Module: Mesa
Branch: gallium-0.2
Commit: c3d744f5bbdc24792183a9ee162ebc6cb5f8d1f6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3d744f5bbdc24792183a9ee162ebc6cb5f8d1f6

Author: Keith Whitwell <keith at tungstengraphics.com>
Date:   Wed Jan 28 13:43:10 2009 +0000

stw: move pixelformat_get/set to shared

---

 src/gallium/state_trackers/wgl/icd/stw_icd.c       |    5 +-
 .../state_trackers/wgl/shared/stw_context.c        |   54 ------------
 .../state_trackers/wgl/shared/stw_pixelformat.c    |   87 ++++++++++++++++++++
 .../state_trackers/wgl/shared/stw_pixelformat.h    |    9 ++
 .../state_trackers/wgl/wgl/stw_wgl_pixelformat.c   |   19 +----
 5 files changed, 100 insertions(+), 74 deletions(-)

diff --git a/src/gallium/state_trackers/wgl/icd/stw_icd.c b/src/gallium/state_trackers/wgl/icd/stw_icd.c
index 5504ac1..0c1cfad 100644
--- a/src/gallium/state_trackers/wgl/icd/stw_icd.c
+++ b/src/gallium/state_trackers/wgl/icd/stw_icd.c
@@ -594,12 +594,9 @@ DrvSetPixelFormat(
    HDC hdc,
    LONG iPixelFormat )
 {
-   PIXELFORMATDESCRIPTOR pfd;
    BOOL r;
 
-   stw_pixelformat_describe( hdc, iPixelFormat, sizeof( pfd ), &pfd );
-
-   r = wglSetPixelFormat( hdc, iPixelFormat, &pfd );
+   r = stw_pixelformat_set( hdc, iPixelFormat );
 
    debug_printf( "%s( 0x%p, %d ) = %s\n", __FUNCTION__, hdc, iPixelFormat, r ? "TRUE" : "FALSE" );
 
diff --git a/src/gallium/state_trackers/wgl/shared/stw_context.c b/src/gallium/state_trackers/wgl/shared/stw_context.c
index e894385..75cfcda 100644
--- a/src/gallium/state_trackers/wgl/shared/stw_context.c
+++ b/src/gallium/state_trackers/wgl/shared/stw_context.c
@@ -289,57 +289,3 @@ wgl_context_from_hdc(
 
 
 
-int
-stw_pixelformat_describe(
-   HDC hdc,
-   int iPixelFormat,
-   UINT nBytes,
-   LPPIXELFORMATDESCRIPTOR ppfd )
-{
-   uint count;
-   uint index;
-   const struct pixelformat_info *pf;
-
-   (void) hdc;
-
-   count = pixelformat_get_extended_count();
-   index = (uint) iPixelFormat - 1;
-
-   if (ppfd == NULL)
-      return count;
-   if (index >= count || nBytes != sizeof( PIXELFORMATDESCRIPTOR ))
-      return 0;
-
-   pf = pixelformat_get_info( index );
-
-   ppfd->nSize = sizeof( PIXELFORMATDESCRIPTOR );
-   ppfd->nVersion = 1;
-   ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
-   if (pf->flags & PF_FLAG_DOUBLEBUFFER)
-      ppfd->dwFlags |= PFD_DOUBLEBUFFER | PFD_SWAP_COPY;
-   ppfd->iPixelType = PFD_TYPE_RGBA;
-   ppfd->cColorBits = pf->color.redbits + pf->color.greenbits + pf->color.bluebits;
-   ppfd->cRedBits = pf->color.redbits;
-   ppfd->cRedShift = pf->color.redshift;
-   ppfd->cGreenBits = pf->color.greenbits;
-   ppfd->cGreenShift = pf->color.greenshift;
-   ppfd->cBlueBits = pf->color.bluebits;
-   ppfd->cBlueShift = pf->color.blueshift;
-   ppfd->cAlphaBits = pf->alpha.alphabits;
-   ppfd->cAlphaShift = pf->alpha.alphashift;
-   ppfd->cAccumBits = 0;
-   ppfd->cAccumRedBits = 0;
-   ppfd->cAccumGreenBits = 0;
-   ppfd->cAccumBlueBits = 0;
-   ppfd->cAccumAlphaBits = 0;
-   ppfd->cDepthBits = pf->depth.depthbits;
-   ppfd->cStencilBits = pf->depth.stencilbits;
-   ppfd->cAuxBuffers = 0;
-   ppfd->iLayerType = 0;
-   ppfd->bReserved = 0;
-   ppfd->dwLayerMask = 0;
-   ppfd->dwVisibleMask = 0;
-   ppfd->dwDamageMask = 0;
-
-   return count;
-}
diff --git a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c
index 7a054af..76fe7cb 100644
--- a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c
+++ b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c
@@ -34,6 +34,9 @@ static struct pixelformat_info pixelformats[MAX_PIXELFORMATS];
 static uint pixelformat_count = 0;
 static uint pixelformat_extended_count = 0;
 
+static uint currentpixelformat = 0;
+
+
 static void
 add_standard_pixelformats(
    struct pixelformat_info **ppf,
@@ -118,3 +121,87 @@ pixelformat_get_info( uint index )
 
    return &pixelformats[index];
 }
+
+
+int
+stw_pixelformat_describe(
+   HDC hdc,
+   int iPixelFormat,
+   UINT nBytes,
+   LPPIXELFORMATDESCRIPTOR ppfd )
+{
+   uint count;
+   uint index;
+   const struct pixelformat_info *pf;
+
+   (void) hdc;
+
+   count = pixelformat_get_extended_count();
+   index = (uint) iPixelFormat - 1;
+
+   if (ppfd == NULL)
+      return count;
+   if (index >= count || nBytes != sizeof( PIXELFORMATDESCRIPTOR ))
+      return 0;
+
+   pf = pixelformat_get_info( index );
+
+   ppfd->nSize = sizeof( PIXELFORMATDESCRIPTOR );
+   ppfd->nVersion = 1;
+   ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+   if (pf->flags & PF_FLAG_DOUBLEBUFFER)
+      ppfd->dwFlags |= PFD_DOUBLEBUFFER | PFD_SWAP_COPY;
+   ppfd->iPixelType = PFD_TYPE_RGBA;
+   ppfd->cColorBits = pf->color.redbits + pf->color.greenbits + pf->color.bluebits;
+   ppfd->cRedBits = pf->color.redbits;
+   ppfd->cRedShift = pf->color.redshift;
+   ppfd->cGreenBits = pf->color.greenbits;
+   ppfd->cGreenShift = pf->color.greenshift;
+   ppfd->cBlueBits = pf->color.bluebits;
+   ppfd->cBlueShift = pf->color.blueshift;
+   ppfd->cAlphaBits = pf->alpha.alphabits;
+   ppfd->cAlphaShift = pf->alpha.alphashift;
+   ppfd->cAccumBits = 0;
+   ppfd->cAccumRedBits = 0;
+   ppfd->cAccumGreenBits = 0;
+   ppfd->cAccumBlueBits = 0;
+   ppfd->cAccumAlphaBits = 0;
+   ppfd->cDepthBits = pf->depth.depthbits;
+   ppfd->cStencilBits = pf->depth.stencilbits;
+   ppfd->cAuxBuffers = 0;
+   ppfd->iLayerType = 0;
+   ppfd->bReserved = 0;
+   ppfd->dwLayerMask = 0;
+   ppfd->dwVisibleMask = 0;
+   ppfd->dwDamageMask = 0;
+
+   return count;
+}
+
+
+int
+stw_pixelformat_get(
+   HDC hdc )
+{
+   return currentpixelformat;
+}
+
+
+BOOL
+stw_pixelformat_set(
+   HDC hdc,
+   int iPixelFormat )
+{
+   uint count;
+   uint index;
+
+   (void) hdc;
+
+   index = (uint) iPixelFormat - 1;
+   count = pixelformat_get_extended_count();
+   if (index >= count)
+      return FALSE;
+
+   currentpixelformat = iPixelFormat;
+   return TRUE;
+}
diff --git a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.h b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.h
index da26df5..982de22 100644
--- a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.h
+++ b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.h
@@ -83,5 +83,14 @@ stw_pixelformat_describe(
    UINT nBytes,
    LPPIXELFORMATDESCRIPTOR ppfd );
 
+int
+stw_pixelformat_get(
+   HDC hdc );
+
+BOOL
+stw_pixelformat_set(
+   HDC hdc,
+   int iPixelFormat );
+
 
 #endif /* PIXELFORMAT_H */
diff --git a/src/gallium/state_trackers/wgl/wgl/stw_wgl_pixelformat.c b/src/gallium/state_trackers/wgl/wgl/stw_wgl_pixelformat.c
index 20d7adc..40c6eaf 100644
--- a/src/gallium/state_trackers/wgl/wgl/stw_wgl_pixelformat.c
+++ b/src/gallium/state_trackers/wgl/wgl/stw_wgl_pixelformat.c
@@ -32,8 +32,6 @@
 #include "shared/stw_pixelformat.h"
 #include "stw_wgl.h"
 
-static uint currentpixelformat = 0;
-
 WINGDIAPI int APIENTRY
 wglChoosePixelFormat(
    HDC hdc,
@@ -115,9 +113,7 @@ WINGDIAPI int APIENTRY
 wglGetPixelFormat(
    HDC hdc )
 {
-   (void) hdc;
-
-   return currentpixelformat;
+   return stw_pixelformat_get( hdc );
 }
 
 WINGDIAPI BOOL APIENTRY
@@ -126,17 +122,8 @@ wglSetPixelFormat(
    int iPixelFormat,
    const PIXELFORMATDESCRIPTOR *ppfd )
 {
-   uint count;
-   uint index;
-
-   (void) hdc;
-
-   count = pixelformat_get_extended_count();
-   index = (uint) iPixelFormat - 1;
-
-   if (index >= count || ppfd->nSize != sizeof( PIXELFORMATDESCRIPTOR ))
+   if (ppfd->nSize != sizeof( PIXELFORMATDESCRIPTOR ))
       return FALSE;
 
-   currentpixelformat = index + 1;
-   return TRUE;
+   return stw_pixelformat_set( hdc, iPixelFormat );
 }




More information about the mesa-commit mailing list