wgl: Implement ShareLists.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 1 May 2009 17:49:22 +0000 (18:49 +0100)
committerKeith Whitwell <keithw@vmware.com>
Fri, 8 May 2009 09:04:13 +0000 (10:04 +0100)
src/gallium/state_trackers/wgl/icd/stw_icd.c
src/gallium/state_trackers/wgl/shared/stw_context.c
src/gallium/state_trackers/wgl/shared/stw_public.h
src/gallium/state_trackers/wgl/wgl/stw_wgl.c

index b259ea91f58cabf031c7fc6d10a9ec24d7668213..62af76521160fd623dcfb3d8b5b0f4af0d50d3cc 100644 (file)
@@ -562,7 +562,7 @@ DrvShareLists(
    if (DBG)
       debug_printf( "%s\n", __FUNCTION__ );
 
-   return FALSE;
+   return stw_share_lists(dhglrc1, dhglrc2);
 }
 
 BOOL APIENTRY
index 473e3308c6cc4a784b67fa7590603d27273e87bb..e172f09bdfe3e1ba93b9a997a90052605a2ed4a5 100644 (file)
@@ -74,6 +74,30 @@ stw_copy_context(
    return ret;
 }
 
+BOOL
+stw_share_lists(
+   UINT_PTR hglrc1, 
+   UINT_PTR hglrc2 )
+{
+   struct stw_context *ctx1;
+   struct stw_context *ctx2;
+   BOOL ret = FALSE;
+
+   pipe_mutex_lock( stw_dev->mutex );
+   
+   ctx1 = stw_lookup_context_locked( hglrc1 );
+   ctx2 = stw_lookup_context_locked( hglrc2 );
+
+   if (ctx1 && ctx2 &&
+       ctx1->pfi == ctx2->pfi) { 
+      ret = _mesa_share_state(ctx2->st->ctx, ctx1->st->ctx);
+   }
+
+   pipe_mutex_unlock( stw_dev->mutex );
+   
+   return ret;
+}
+
 UINT_PTR
 stw_create_layer_context(
    HDC hdc,
index 59d709a6d403cd136e8561758e1e098b8de4d2f6..7fe9cfb3561a351b3aaf926a99c617409fa2a514 100644 (file)
@@ -37,6 +37,8 @@ BOOL stw_copy_context( UINT_PTR hglrcSrc,
 UINT_PTR stw_create_layer_context( HDC hdc, 
                                    int iLayerPlane );
 
+BOOL stw_share_lists( UINT_PTR hglrc1, UINT_PTR hglrc2 );
+
 BOOL stw_delete_context( UINT_PTR hglrc );
 
 BOOL
index 30e42e0ec5fbaa909a6e8007cff582de543fabcf..a131292f7aedccbf84667aa0a2e358dfe35826d1 100644 (file)
@@ -186,12 +186,7 @@ wglShareLists(
    HGLRC hglrc1,
    HGLRC hglrc2 )
 {
-   (void) hglrc1;
-   (void) hglrc2;
-
-   assert( 0 );
-
-   return FALSE;
+   return stw_share_lists( (UINT_PTR)hglrc1, (UINT_PTR)hglrc2);;
 }
 
 WINGDIAPI BOOL APIENTRY