diff options
| author | José Fonseca <jfonseca@vmware.com> | 2009-05-30 19:58:50 -0700 | 
|---|---|---|
| committer | José Fonseca <jfonseca@vmware.com> | 2009-05-30 20:29:03 -0700 | 
| commit | fe69b6bdc7bbde2cefec856ff338788d7be20f4e (patch) | |
| tree | 65979af9653c8645a3260c7c422318beba6e31e7 | |
| parent | be7c56be06183239008b168181aa6f1c78591579 (diff) | |
wgl: Use the right pixel format.
There is no current pixel format. Each HDC has its pixelformat which is
kept by gdi and set/get via the SetPixelFormat/GetPixelFormat functions.
Now the HDC's pixelformat is kept in the stw_framebuffer, which is
created during the SetPixelFormat.
9 files changed, 301 insertions, 202 deletions
| diff --git a/src/gallium/state_trackers/wgl/shared/stw_context.c b/src/gallium/state_trackers/wgl/shared/stw_context.c index 09dba61603..662b5fbcd2 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_context.c +++ b/src/gallium/state_trackers/wgl/shared/stw_context.c @@ -90,7 +90,7 @@ stw_share_lists(     ctx2 = stw_lookup_context_locked( hglrc2 );     if (ctx1 && ctx2 && -       ctx1->pfi == ctx2->pfi) {  +       ctx1->iPixelFormat == ctx2->iPixelFormat) {         ret = _mesa_share_state(ctx2->st->ctx, ctx1->st->ctx);     } @@ -104,51 +104,32 @@ stw_create_layer_context(     HDC hdc,     int iLayerPlane )  { -   uint pfi; -   const struct stw_pixelformat_info *pf = NULL; +   int iPixelFormat; +   const struct stw_pixelformat_info *pfi; +   GLvisual visual;     struct stw_context *ctx = NULL; -   GLvisual *visual = NULL;     struct pipe_screen *screen = NULL;     struct pipe_context *pipe = NULL; - +        if(!stw_dev)        return 0;     if (iLayerPlane != 0)        return 0; -   pfi = stw_pixelformat_get( hdc ); -   if (pfi == 0) +   iPixelFormat = GetPixelFormat(hdc); +   if(!iPixelFormat)        return 0; - -   pf = stw_pixelformat_get_info( pfi - 1 ); - +    +   pfi = stw_pixelformat_get_info( iPixelFormat - 1 ); +   stw_pixelformat_visual(&visual, pfi); +        ctx = CALLOC_STRUCT( stw_context );     if (ctx == NULL)        goto no_ctx;     ctx->hdc = hdc; - -   /* Create visual based on flags -    */ -   visual = _mesa_create_visual( -      (pf->pfd.iPixelType == PFD_TYPE_RGBA) ? GL_TRUE : GL_FALSE, -      (pf->pfd.dwFlags & PFD_DOUBLEBUFFER) ? GL_TRUE : GL_FALSE, -      (pf->pfd.dwFlags & PFD_STEREO) ? GL_TRUE : GL_FALSE, -      pf->pfd.cRedBits, -      pf->pfd.cGreenBits, -      pf->pfd.cBlueBits, -      pf->pfd.cAlphaBits, -      (pf->pfd.iPixelType == PFD_TYPE_COLORINDEX) ? pf->pfd.cColorBits : 0, -      pf->pfd.cDepthBits, -      pf->pfd.cStencilBits, -      pf->pfd.cAccumRedBits, -      pf->pfd.cAccumGreenBits, -      pf->pfd.cAccumBlueBits, -      pf->pfd.cAccumAlphaBits, -      pf->numSamples ); -   if (visual == NULL)  -      goto no_visual; +   ctx->iPixelFormat = iPixelFormat;     screen = stw_dev->screen; @@ -168,15 +149,15 @@ stw_create_layer_context(        pipe = trace_context_create(stw_dev->screen, pipe);  #endif +   /* pass to stw_flush_frontbuffer as context_private */     assert(!pipe->priv);     pipe->priv = hdc; -   ctx->st = st_create_context( pipe, visual, NULL ); +   ctx->st = st_create_context( pipe, &visual, NULL );     if (ctx->st == NULL)         goto no_st_ctx;     ctx->st->ctx->DriverCtx = ctx; -   ctx->pfi = pf;     pipe_mutex_lock( stw_dev->mutex );     ctx->hglrc = handle_table_add(stw_dev->ctx_table, ctx); @@ -192,9 +173,7 @@ no_hglrc:  no_st_ctx:     pipe->destroy( pipe );  no_pipe: -   _mesa_destroy_visual( visual ); -no_visual: -   FREE( ctx ); +   FREE(ctx);  no_ctx:     return 0;  } @@ -217,20 +196,11 @@ stw_delete_context(     if (ctx) {        GLcontext *glctx = ctx->st->ctx;        GET_CURRENT_CONTEXT( glcurctx ); -      struct stw_framebuffer *fb; -      /* Unbind current if deleting current context. -       */ +      /* Unbind current if deleting current context. */        if (glcurctx == glctx)           st_make_current( NULL, NULL, NULL ); -      fb = stw_framebuffer_from_hdc( ctx->hdc ); -      if (fb) -         stw_framebuffer_destroy( fb ); - -      if (WindowFromDC( ctx->hdc ) != NULL) -         ReleaseDC( WindowFromDC( ctx->hdc ), ctx->hdc ); -        st_destroy_context(ctx->st);        FREE(ctx); @@ -274,34 +244,6 @@ stw_release_context(     return TRUE;  } -/* Find the width and height of the window named by hdc. - */ -static void -stw_get_window_size( HDC hdc, GLuint *pwidth, GLuint *pheight ) -{ -   GLuint width, height; -   HWND hwnd; - -   hwnd = WindowFromDC( hdc ); -   if (hwnd) { -      RECT rect; -      GetClientRect( hwnd, &rect ); -      width = rect.right - rect.left; -      height = rect.bottom - rect.top; -   } -   else { -      width = GetDeviceCaps( hdc, HORZRES ); -      height = GetDeviceCaps( hdc, VERTRES ); -   } - -   if(width < 1) -      width = 1; -   if(height < 1) -      height = 1; - -   *pwidth = width;  -   *pheight = height;  -}  UINT_PTR  stw_get_current_context( void ) @@ -345,64 +287,68 @@ stw_make_current(     struct stw_context *ctx;     GET_CURRENT_CONTEXT( glcurctx );     struct stw_framebuffer *fb; -   GLuint width = 0; -   GLuint height = 0; -   struct stw_context *curctx = NULL;     if (!stw_dev) -      return FALSE; - -   pipe_mutex_lock( stw_dev->mutex );  -   ctx = stw_lookup_context_locked( hglrc ); -   pipe_mutex_unlock( stw_dev->mutex ); +      goto fail;     if (glcurctx != NULL) { +      struct stw_context *curctx;        curctx = (struct stw_context *) glcurctx->DriverCtx; -      if (curctx != ctx) +      if (curctx->hglrc != hglrc)  	 st_flush(glcurctx->st, PIPE_FLUSH_RENDER_CACHE, NULL); +       +      /* Return if already current. */ +      if (curctx->hglrc == hglrc && curctx->hdc == hdc) +         return TRUE;     }     if (hdc == NULL || hglrc == 0) { -      st_make_current( NULL, NULL, NULL ); -      return TRUE; -   } - -   /* Return if already current. -    */ -   if (glcurctx != NULL) { -      if (curctx != NULL && curctx == ctx && ctx->hdc == hdc) -         return TRUE; +      return st_make_current( NULL, NULL, NULL );     } -   fb = stw_framebuffer_from_hdc( hdc ); - -   if (hdc != NULL) -      stw_get_window_size( hdc, &width, &height ); +   pipe_mutex_lock( stw_dev->mutex );  -   /* Lazy creation of stw_framebuffers. -    */ -   if (fb == NULL && ctx != NULL && hdc != NULL) { -      GLvisual *visual = &ctx->st->ctx->Visual; +   ctx = stw_lookup_context_locked( hglrc ); +   if(!ctx) +      goto fail; -      fb = stw_framebuffer_create( hdc, visual, ctx->pfi, width, height ); -      if (fb == NULL) -         return FALSE; +   fb = stw_framebuffer_from_hdc_locked( hdc ); +   if(!fb) {  +      /* Applications should call SetPixelFormat before creating a context, +       * but not all do, and the opengl32 runtime seems to use a default pixel +       * format in some cases, so we must create a framebuffer for those here +       */ +      int iPixelFormat = GetPixelFormat(hdc); +      if(iPixelFormat) +         fb = stw_framebuffer_create_locked( hdc, iPixelFormat ); +      if(!fb)  +         goto fail;     } +    +   pipe_mutex_unlock( stw_dev->mutex ); -   if (ctx && fb) { -      pipe_mutex_lock( fb->mutex ); -      st_make_current( ctx->st, fb->stfb, fb->stfb ); -      st_resize_framebuffer( fb->stfb, width, height ); -      pipe_mutex_unlock( fb->mutex ); +   if(fb->iPixelFormat != ctx->iPixelFormat) +      goto fail; -      ctx->hdc = hdc; -      ctx->st->pipe->priv = hdc; -   } -   else { -      /* Detach */ -      st_make_current( NULL, NULL, NULL ); -   } +   /* Lazy allocation of the frame buffer */ +   if(!stw_framebuffer_allocate(fb)) +      goto fail; +   /* Bind the new framebuffer */ +   ctx->hdc = hdc; +    +   /* pass to stw_flush_frontbuffer as context_private */ +   ctx->st->pipe->priv = hdc; +    +   if(!st_make_current( ctx->st, fb->stfb, fb->stfb )) +      goto fail; + +   stw_framebuffer_resize(fb); +        return TRUE; + +fail: +   st_make_current( NULL, NULL, NULL ); +   return FALSE;  } diff --git a/src/gallium/state_trackers/wgl/shared/stw_context.h b/src/gallium/state_trackers/wgl/shared/stw_context.h index 92df7e6136..166471de5e 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_context.h +++ b/src/gallium/state_trackers/wgl/shared/stw_context.h @@ -31,14 +31,13 @@  #include <windows.h>  struct st_context; -struct stw_pixelformat_info;  struct stw_context  {     struct st_context *st;     UINT_PTR hglrc; +   int iPixelFormat;     HDC hdc; -   const struct stw_pixelformat_info *pfi;  };  #endif /* STW_CONTEXT_H */ diff --git a/src/gallium/state_trackers/wgl/shared/stw_device.c b/src/gallium/state_trackers/wgl/shared/stw_device.c index ada2511581..1a6b29807d 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_device.c +++ b/src/gallium/state_trackers/wgl/shared/stw_device.c @@ -173,6 +173,8 @@ stw_cleanup(void)     }     pipe_mutex_unlock( stw_dev->mutex ); +   stw_framebuffer_cleanup(); +        pipe_mutex_destroy( stw_dev->mutex );     stw_dev->screen->destroy(stw_dev->screen); diff --git a/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c b/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c index f66f429542..45ac3477e8 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c +++ b/src/gallium/state_trackers/wgl/shared/stw_framebuffer.c @@ -94,32 +94,16 @@ stw_call_window_proc(  } -/* Create a new framebuffer object which will correspond to the given HDC. +/** + * Create a new framebuffer object which will correspond to the given HDC.   */  struct stw_framebuffer * -stw_framebuffer_create( +stw_framebuffer_create_locked(     HDC hdc, -   GLvisual *visual, -   const struct stw_pixelformat_info *pfi, -   GLuint width, -   GLuint height ) +   int iPixelFormat )  { -   enum pipe_format colorFormat, depthFormat, stencilFormat;     struct stw_framebuffer *fb; - -   colorFormat = pfi->color_format; -    -   assert(pf_layout( pfi->depth_stencil_format ) == PIPE_FORMAT_LAYOUT_RGBAZS ); - -   if(pf_get_component_bits( pfi->depth_stencil_format, PIPE_FORMAT_COMP_Z )) -      depthFormat = pfi->depth_stencil_format; -   else -      depthFormat = PIPE_FORMAT_NONE; - -   if(pf_get_component_bits( pfi->depth_stencil_format, PIPE_FORMAT_COMP_S )) -      stencilFormat = pfi->depth_stencil_format; -   else -      stencilFormat = PIPE_FORMAT_NONE; +   const struct stw_pixelformat_info *pfi;     fb = CALLOC_STRUCT( stw_framebuffer );     if (fb == NULL) @@ -127,31 +111,102 @@ stw_framebuffer_create(     fb->hDC = hdc;     fb->hWnd = WindowFromDC( hdc ); +   fb->iPixelFormat = iPixelFormat; -   pipe_mutex_init( fb->mutex ); +   fb->pfi = pfi = stw_pixelformat_get_info( iPixelFormat - 1 ); -   fb->stfb = st_create_framebuffer( -      visual, -      colorFormat, -      depthFormat, -      stencilFormat, -      width, -      height, -      (void *) fb ); -   if(!fb->stfb) { -      FREE(fb); -      return NULL; -   } +   stw_pixelformat_visual(&fb->visual, pfi); +    +   pipe_mutex_init( fb->mutex ); -   pipe_mutex_lock( stw_dev->mutex );     fb->next = stw_dev->fb_head;     stw_dev->fb_head = fb; -   pipe_mutex_unlock( stw_dev->mutex );     return fb;  } + +static void +stw_framebuffer_get_size( struct stw_framebuffer *fb, GLuint *pwidth, GLuint *pheight ) +{ +   GLuint width, height; + +   if (fb->hWnd) { +      RECT rect; +      GetClientRect( fb->hWnd, &rect ); +      width = rect.right - rect.left; +      height = rect.bottom - rect.top; +   } +   else { +      width = GetDeviceCaps( fb->hDC, HORZRES ); +      height = GetDeviceCaps( fb->hDC, VERTRES ); +   } + +   if(width < 1) +      width = 1; +   if(height < 1) +      height = 1; + +   *pwidth = width;  +   *pheight = height;  +} + + +BOOL +stw_framebuffer_allocate( +   struct stw_framebuffer *fb) +{ +   pipe_mutex_lock( fb->mutex ); + +   if(!fb->stfb) { +      const struct stw_pixelformat_info *pfi = fb->pfi; +      enum pipe_format colorFormat, depthFormat, stencilFormat; +      GLuint width, height;  + +      colorFormat = pfi->color_format; +       +      assert(pf_layout( pfi->depth_stencil_format ) == PIPE_FORMAT_LAYOUT_RGBAZS ); +    +      if(pf_get_component_bits( pfi->depth_stencil_format, PIPE_FORMAT_COMP_Z )) +         depthFormat = pfi->depth_stencil_format; +      else +         depthFormat = PIPE_FORMAT_NONE; +    +      if(pf_get_component_bits( pfi->depth_stencil_format, PIPE_FORMAT_COMP_S )) +         stencilFormat = pfi->depth_stencil_format; +      else +         stencilFormat = PIPE_FORMAT_NONE; +    +      stw_framebuffer_get_size(fb, &width, &height); +       +      fb->stfb = st_create_framebuffer( +         &fb->visual, +         colorFormat, +         depthFormat, +         stencilFormat, +         width, +         height, +         (void *) fb ); +   } +    +   pipe_mutex_unlock( fb->mutex ); + +   return fb->stfb ? TRUE : FALSE; +} + +  void +stw_framebuffer_resize( +   struct stw_framebuffer *fb) +{ +   GLuint width, height;  +   assert(fb->stfb); +   stw_framebuffer_get_size(fb, &width, &height); +   st_resize_framebuffer(fb->stfb, width, height); +}                       + + +static INLINE void  stw_framebuffer_destroy(     struct stw_framebuffer *fb )  { @@ -176,19 +231,55 @@ stw_framebuffer_destroy(     FREE( fb );  } + +void +stw_framebuffer_cleanup( void ) +{ +   struct stw_framebuffer *fb; +   struct stw_framebuffer *next; + +   pipe_mutex_lock( stw_dev->mutex ); + +   fb = stw_dev->fb_head; +   while (fb) { +      next = fb->next; +      stw_framebuffer_destroy(fb); +      fb = next; +   } +   stw_dev->fb_head = NULL; +    +   pipe_mutex_unlock( stw_dev->mutex ); +} + +  /**   * Given an hdc, return the corresponding stw_framebuffer.   */  struct stw_framebuffer * -stw_framebuffer_from_hdc( +stw_framebuffer_from_hdc_locked(     HDC hdc )  {     struct stw_framebuffer *fb; -   pipe_mutex_lock( stw_dev->mutex );     for (fb = stw_dev->fb_head; fb != NULL; fb = fb->next)        if (fb->hDC == hdc)           break; + +   return fb; +} + + +/** + * Given an hdc, return the corresponding stw_framebuffer. + */ +struct stw_framebuffer * +stw_framebuffer_from_hdc( +   HDC hdc ) +{ +   struct stw_framebuffer *fb; + +   pipe_mutex_lock( stw_dev->mutex ); +   fb = stw_framebuffer_from_hdc_locked(hdc);     pipe_mutex_unlock( stw_dev->mutex );     return fb; @@ -196,6 +287,62 @@ stw_framebuffer_from_hdc(  BOOL +stw_pixelformat_set( +   HDC hdc, +   int iPixelFormat ) +{ +   uint count; +   uint index; +   struct stw_framebuffer *fb; + +   index = (uint) iPixelFormat - 1; +   count = stw_pixelformat_get_extended_count(); +   if (index >= count) +      return FALSE; + +   pipe_mutex_lock( stw_dev->mutex ); +    +   fb = stw_framebuffer_from_hdc_locked(hdc); +   if(fb) { +      /* SetPixelFormat must be called only once */ +      pipe_mutex_unlock( stw_dev->mutex ); +      return FALSE; +   } + +   fb = stw_framebuffer_create_locked(hdc, iPixelFormat); +   if(!fb) { +      pipe_mutex_unlock( stw_dev->mutex ); +      return FALSE; +   } +       +   pipe_mutex_unlock( stw_dev->mutex ); + +   /* Some applications mistakenly use the undocumented wglSetPixelFormat  +    * function instead of SetPixelFormat, so we call SetPixelFormat here to  +    * avoid opengl32.dll's wglCreateContext to fail */ +   if (GetPixelFormat(hdc) == 0) { +        SetPixelFormat(hdc, iPixelFormat, NULL); +   } +    +   return TRUE; +} + + +int +stw_pixelformat_get( +   HDC hdc ) +{ +   struct stw_framebuffer *fb; + +   fb = stw_framebuffer_from_hdc(hdc); +   if(!fb) +      return 0; +    +   return fb->iPixelFormat; +} + + +BOOL  stw_swap_buffers(     HDC hdc )  { diff --git a/src/gallium/state_trackers/wgl/shared/stw_framebuffer.h b/src/gallium/state_trackers/wgl/shared/stw_framebuffer.h index f5b48db048..e7fa51c3a8 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_framebuffer.h +++ b/src/gallium/state_trackers/wgl/shared/stw_framebuffer.h @@ -44,6 +44,10 @@ struct stw_framebuffer     HDC hDC;     HWND hWnd; +   int iPixelFormat; +   const struct stw_pixelformat_info *pfi; +   GLvisual visual; +     pipe_mutex mutex;     struct st_framebuffer *stfb; @@ -52,17 +56,25 @@ struct stw_framebuffer  };  struct stw_framebuffer * -stw_framebuffer_create( +stw_framebuffer_create_locked(     HDC hdc, -   GLvisual *visual, -   const struct stw_pixelformat_info *pfi, -   GLuint width, -   GLuint height ); +   int iPixelFormat ); -void -stw_framebuffer_destroy( +BOOL +stw_framebuffer_allocate(     struct stw_framebuffer *fb ); +void +stw_framebuffer_resize( +   struct stw_framebuffer *fb); + +void +stw_framebuffer_cleanup(void); + +struct stw_framebuffer * +stw_framebuffer_from_hdc_locked( +   HDC hdc ); +  struct stw_framebuffer *  stw_framebuffer_from_hdc(     HDC hdc ); diff --git a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c index b81d2b59a4..c296744838 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c +++ b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.c @@ -25,12 +25,14 @@   *    **************************************************************************/ +#include "main/mtypes.h" +#include "main/context.h" +  #include "pipe/p_format.h"  #include "pipe/p_defines.h"  #include "pipe/p_screen.h"  #include "util/u_debug.h" -#include "util/u_memory.h"  #include "stw_device.h"  #include "stw_pixelformat.h" @@ -261,6 +263,31 @@ stw_pixelformat_get_info( uint index )  } +void +stw_pixelformat_visual(GLvisual *visual,  +                       const struct stw_pixelformat_info *pfi ) +{ +   memset(visual, 0, sizeof *visual); +   _mesa_initialize_visual( +      visual, +      (pfi->pfd.iPixelType == PFD_TYPE_RGBA) ? GL_TRUE : GL_FALSE, +      (pfi->pfd.dwFlags & PFD_DOUBLEBUFFER) ? GL_TRUE : GL_FALSE, +      (pfi->pfd.dwFlags & PFD_STEREO) ? GL_TRUE : GL_FALSE, +      pfi->pfd.cRedBits, +      pfi->pfd.cGreenBits, +      pfi->pfd.cBlueBits, +      pfi->pfd.cAlphaBits, +      (pfi->pfd.iPixelType == PFD_TYPE_COLORINDEX) ? pfi->pfd.cColorBits : 0, +      pfi->pfd.cDepthBits, +      pfi->pfd.cStencilBits, +      pfi->pfd.cAccumRedBits, +      pfi->pfd.cAccumGreenBits, +      pfi->pfd.cAccumBlueBits, +      pfi->pfd.cAccumAlphaBits, +      pfi->numSamples ); +} + +  int  stw_pixelformat_describe(     HDC hdc, @@ -341,39 +368,3 @@ int stw_pixelformat_choose( HDC hdc,     return bestindex + 1;  } - - -int -stw_pixelformat_get( -   HDC hdc ) -{ -   return stw_tls_get_data()->currentPixelFormat; -} - - -BOOL -stw_pixelformat_set( -   HDC hdc, -   int iPixelFormat ) -{ -   uint count; -   uint index; - -   (void) hdc; - -   index = (uint) iPixelFormat - 1; -   count = stw_pixelformat_get_extended_count(); -   if (index >= count) -      return FALSE; - -   stw_tls_get_data()->currentPixelFormat = iPixelFormat; - -   /* Some applications mistakenly use the undocumented wglSetPixelFormat  -    * function instead of SetPixelFormat, so we call SetPixelFormat here to  -    * avoid opengl32.dll's wglCreateContext to fail */ -   if (GetPixelFormat(hdc) == 0) { -        SetPixelFormat(hdc, iPixelFormat, NULL); -   } -    -   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 34522ebef3..bec429231b 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_pixelformat.h +++ b/src/gallium/state_trackers/wgl/shared/stw_pixelformat.h @@ -30,6 +30,8 @@  #include <windows.h> +#include "main/mtypes.h" +  #include "pipe/p_compiler.h"  #include "pipe/p_format.h" @@ -56,5 +58,8 @@ stw_pixelformat_get_extended_count( void );  const struct stw_pixelformat_info *  stw_pixelformat_get_info( uint index ); +void +stw_pixelformat_visual(GLvisual *visual,  +                       const struct stw_pixelformat_info *pfi );  #endif /* STW_PIXELFORMAT_H */ diff --git a/src/gallium/state_trackers/wgl/shared/stw_tls.c b/src/gallium/state_trackers/wgl/shared/stw_tls.c index 95863ca9cf..0c18a52352 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_tls.c +++ b/src/gallium/state_trackers/wgl/shared/stw_tls.c @@ -53,8 +53,6 @@ stw_tls_data_create()     if (!data)        return NULL; -   data->currentPixelFormat = 0; -        return data;  } diff --git a/src/gallium/state_trackers/wgl/shared/stw_tls.h b/src/gallium/state_trackers/wgl/shared/stw_tls.h index 6cfb0899f2..6af8be70c9 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_tls.h +++ b/src/gallium/state_trackers/wgl/shared/stw_tls.h @@ -32,7 +32,6 @@  struct stw_tls_data  { -   uint currentPixelFormat;     HHOOK hCallWndProcHook;  }; | 
