From d32ae764e930abb70ca2cc79ad18fdb32141ca0d Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Thu, 19 Feb 2009 10:52:08 +0000 Subject: wgl: Share more code between icd and standalone driver. --- src/gallium/state_trackers/wgl/SConscript | 4 - src/gallium/state_trackers/wgl/icd/stw_icd.c | 217 ++------------------- .../state_trackers/wgl/shared/stw_context.c | 204 ++++++++++++------- .../state_trackers/wgl/shared/stw_context.h | 11 -- src/gallium/state_trackers/wgl/shared/stw_device.c | 38 +++- src/gallium/state_trackers/wgl/shared/stw_device.h | 21 +- src/gallium/state_trackers/wgl/shared/stw_public.h | 27 +-- src/gallium/state_trackers/wgl/stw.c | 57 ------ src/gallium/state_trackers/wgl/stw.h | 53 ----- src/gallium/state_trackers/wgl/wgl/stw_wgl.c | 30 +-- src/gallium/state_trackers/wgl/wgl/stw_wgl.h | 2 +- 11 files changed, 219 insertions(+), 445 deletions(-) delete mode 100644 src/gallium/state_trackers/wgl/stw.c delete mode 100644 src/gallium/state_trackers/wgl/stw.h (limited to 'src') diff --git a/src/gallium/state_trackers/wgl/SConscript b/src/gallium/state_trackers/wgl/SConscript index c72f495735..d2c41f49c5 100644 --- a/src/gallium/state_trackers/wgl/SConscript +++ b/src/gallium/state_trackers/wgl/SConscript @@ -14,13 +14,9 @@ if env['platform'] in ['windows']: env.Append(CPPDEFINES = [ '_GDI32_', # prevent wgl* being declared __declspec(dllimport) 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers - '__GL_EXPORTS', - '_GNU_H_WINDOWS32_DEFINES', ]) sources = [ - 'stw.c', - 'icd/stw_icd.c', 'wgl/stw_wgl.c', diff --git a/src/gallium/state_trackers/wgl/icd/stw_icd.c b/src/gallium/state_trackers/wgl/icd/stw_icd.c index 5ac871da81..8ae6aa1f3e 100644 --- a/src/gallium/state_trackers/wgl/icd/stw_icd.c +++ b/src/gallium/state_trackers/wgl/icd/stw_icd.c @@ -35,77 +35,11 @@ #include "shared/stw_public.h" #include "icd/stw_icd.h" -#include "stw.h" -#define DRV_CONTEXT_MAX 32 +static GLCLTPROCTABLE cpt; +static boolean cpt_initialized = FALSE; -struct stw_icd -{ - pipe_mutex mutex; - - GLCLTPROCTABLE cpt; - boolean cpt_initialized; - - struct { - struct stw_context *ctx; - } ctx_array[DRV_CONTEXT_MAX]; -}; - - -static struct stw_icd *stw_icd = NULL; - - -boolean -stw_icd_init( void ) -{ - static struct stw_icd stw_icd_storage; - - assert(!stw_icd); - - stw_icd = &stw_icd_storage; - memset(stw_icd, 0, sizeof *stw_icd); - - pipe_mutex_init( stw_icd->mutex ); - - return TRUE; -} - -void -stw_icd_cleanup(void) -{ - int i; - - if (!stw_icd) - return; - - pipe_mutex_lock( stw_icd->mutex ); - { - /* Ensure all contexts are destroyed */ - for (i = 0; i < DRV_CONTEXT_MAX; i++) - if (stw_icd->ctx_array[i].ctx) - stw_delete_context( stw_icd->ctx_array[i].ctx ); - } - pipe_mutex_unlock( stw_icd->mutex ); - - pipe_mutex_init( stw_icd->mutex ); - stw_icd = NULL; -} - - -static struct stw_context * -lookup_context( struct stw_icd *icd, - DHGLRC dhglrc ) -{ - if (dhglrc == 0 || - dhglrc >= DRV_CONTEXT_MAX) - return NULL; - - if (icd == NULL) - return NULL; - - return icd->ctx_array[dhglrc - 1].ctx; -} BOOL APIENTRY DrvCopyContext( @@ -113,63 +47,16 @@ DrvCopyContext( DHGLRC dhrcDest, UINT fuMask ) { - BOOL ret = FALSE; - - if (!stw_icd) - return FALSE; - - pipe_mutex_lock( stw_icd->mutex ); - { - struct stw_context *src = lookup_context( stw_icd, dhrcSource ); - struct stw_context *dst = lookup_context( stw_icd, dhrcDest ); - - if (src == NULL || dst == NULL) - goto done; - - ret = stw_copy_context( src, dst, fuMask ); - } -done: - pipe_mutex_unlock( stw_icd->mutex ); - - return ret; + return stw_copy_context(dhrcSource, dhrcDest, fuMask); } + DHGLRC APIENTRY DrvCreateLayerContext( HDC hdc, INT iLayerPlane ) { - DHGLRC handle = 0; - - if (!stw_icd) - return handle; - - pipe_mutex_lock( stw_icd->mutex ); - { - int i; - - for (i = 0; i < DRV_CONTEXT_MAX; i++) { - if (stw_icd->ctx_array[i].ctx == NULL) - break; - } - - /* No slot available, fail: - */ - if (i == DRV_CONTEXT_MAX) - goto done; - - stw_icd->ctx_array[i].ctx = stw_create_context( hdc, iLayerPlane ); - if (stw_icd->ctx_array[i].ctx == NULL) - goto done; - - /* success: - */ - handle = (DHGLRC) i + 1; - } -done: - pipe_mutex_unlock( stw_icd->mutex ); - - return handle; + return stw_create_layer_context( hdc, iLayerPlane ); } DHGLRC APIENTRY @@ -183,30 +70,7 @@ BOOL APIENTRY DrvDeleteContext( DHGLRC dhglrc ) { - BOOL ret = FALSE; - - if (!stw_icd) - return ret; - - pipe_mutex_lock( stw_icd->mutex ); - { - struct stw_context *ctx; - - ctx = lookup_context( stw_icd, dhglrc ); - if (ctx == NULL) - goto done; - - if (stw_delete_context( ctx ) == FALSE) - goto done; - - stw_icd->ctx_array[dhglrc - 1].ctx = NULL; - ret = TRUE; - - } -done: - pipe_mutex_unlock( stw_icd->mutex ); - - return ret; + return stw_delete_context( dhglrc ); } BOOL APIENTRY @@ -280,32 +144,7 @@ BOOL APIENTRY DrvReleaseContext( DHGLRC dhglrc ) { - BOOL ret = FALSE; - - if (!stw_icd) - return ret; - - pipe_mutex_lock( stw_icd->mutex ); - { - struct stw_context *ctx; - - /* XXX: The expectation is that ctx is the same context which is - * current for this thread. We should check that and return False - * if not the case. - */ - ctx = lookup_context( stw_icd, dhglrc ); - if (ctx == NULL) - goto done; - - if (stw_make_current( NULL, NULL ) == FALSE) - goto done; - - ret = TRUE; - } -done: - pipe_mutex_unlock( stw_icd->mutex ); - - return ret; + return stw_release_context(dhglrc); } void APIENTRY @@ -671,38 +510,20 @@ DrvSetContext( DHGLRC dhglrc, PFN_SETPROCTABLE pfnSetProcTable ) { - PGLCLTPROCTABLE result = NULL; - - if (!stw_icd) - return result; - - pipe_mutex_lock( stw_icd->mutex ); - { - struct stw_context *ctx; - - debug_printf( "%s( 0x%p, %u, 0x%p )\n", - __FUNCTION__, hdc, dhglrc, pfnSetProcTable ); - - /* Although WGL allows different dispatch entrypoints per - */ - if (!stw_icd->cpt_initialized) { - init_proc_table( &stw_icd->cpt ); - stw_icd->cpt_initialized = TRUE; - } - - ctx = lookup_context( stw_icd, dhglrc ); - if (ctx == NULL) - goto done; - - if (!stw_make_current( hdc, ctx )) - goto done; - - result = &stw_icd->cpt; + debug_printf( "%s( 0x%p, %u, 0x%p )\n", + __FUNCTION__, hdc, dhglrc, pfnSetProcTable ); + + /* Although WGL allows different dispatch entrypoints per + */ + if (!cpt_initialized) { + init_proc_table( &cpt ); + cpt_initialized = TRUE; } -done: - pipe_mutex_unlock( stw_icd->mutex ); - return result; + if (!stw_make_current( hdc, dhglrc )) + return NULL; + + return &cpt; } int APIENTRY diff --git a/src/gallium/state_trackers/wgl/shared/stw_context.c b/src/gallium/state_trackers/wgl/shared/stw_context.c index 2abf97b5ad..0b996d788f 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_context.c +++ b/src/gallium/state_trackers/wgl/shared/stw_context.c @@ -40,26 +40,38 @@ #include "stw_public.h" #include "stw_context.h" -static struct stw_context *ctx_head = NULL; - static HDC current_hdc = NULL; -static struct stw_context *current_hrc = NULL; +static UINT_PTR current_hglrc = 0; BOOL stw_copy_context( - struct stw_context *src, - struct stw_context *dst, + UINT_PTR hglrcSrc, + UINT_PTR hglrcDst, UINT mask ) { - (void) src; - (void) dst; - (void) mask; + struct stw_context *src; + struct stw_context *dst; + BOOL ret = FALSE; + + pipe_mutex_lock( stw_dev->mutex ); + + src = stw_lookup_context( hglrcSrc ); + dst = stw_lookup_context( hglrcDst ); + + if (src && dst) { + /* FIXME */ + (void) src; + (void) dst; + (void) mask; + } - return FALSE; + pipe_mutex_unlock( stw_dev->mutex ); + + return ret; } -struct stw_context * -stw_create_context( +UINT_PTR +stw_create_layer_context( HDC hdc, int iLayerPlane ) { @@ -68,19 +80,23 @@ stw_create_context( struct stw_context *ctx = NULL; GLvisual *visual = NULL; struct pipe_context *pipe = NULL; + UINT_PTR hglrc; + if(!stw_dev) + return 0; + if (iLayerPlane != 0) - return NULL; + return 0; pfi = stw_pixelformat_get( hdc ); if (pfi == 0) - return NULL; + return 0; pf = pixelformat_get_info( pfi - 1 ); ctx = CALLOC_STRUCT( stw_context ); if (ctx == NULL) - return NULL; + return 0; ctx->hdc = hdc; ctx->color_bits = GetDeviceCaps( ctx->hdc, BITSPIXEL ); @@ -119,10 +135,30 @@ stw_create_context( ctx->st->ctx->DriverCtx = ctx; - ctx->next = ctx_head; - ctx_head = ctx; + pipe_mutex_lock( stw_dev->mutex ); + { + UINT_PTR i; + + for (i = 0; i < STW_CONTEXT_MAX; i++) { + if (stw_dev->ctx_array[i].ctx == NULL) + break; + } + + /* No slot available, fail: + */ + if (i == STW_CONTEXT_MAX) + goto done; + + stw_dev->ctx_array[i].ctx = ctx; + + /* success: + */ + hglrc = i + 1; + } +done: + pipe_mutex_unlock( stw_dev->mutex ); - return ctx; + return hglrc; fail: if (visual) @@ -132,47 +168,80 @@ fail: pipe->destroy( pipe ); FREE( ctx ); - return NULL; + return 0; } - BOOL stw_delete_context( - struct stw_context *hglrc ) + UINT_PTR hglrc ) { - struct stw_context **link = &ctx_head; - struct stw_context *ctx = ctx_head; + struct stw_context *ctx ; + BOOL ret = FALSE; + + pipe_mutex_lock( stw_dev->mutex ); - while (ctx != NULL) { - if (ctx == hglrc) { - GLcontext *glctx = ctx->st->ctx; - GET_CURRENT_CONTEXT( glcurctx ); - struct stw_framebuffer *fb; + ctx = stw_lookup_context(hglrc); + if (ctx) { + GLcontext *glctx = ctx->st->ctx; + GET_CURRENT_CONTEXT( glcurctx ); + struct stw_framebuffer *fb; - /* Unbind current if deleting current context. - */ - if (glcurctx == glctx) - st_make_current( NULL, NULL, NULL ); + /* Unbind current if deleting current context. + */ + if (glcurctx == glctx) + st_make_current( NULL, NULL, NULL ); - fb = framebuffer_from_hdc( ctx->hdc ); - if (fb) - framebuffer_destroy( fb ); + fb = framebuffer_from_hdc( ctx->hdc ); + if (fb) + framebuffer_destroy( fb ); - if (WindowFromDC( ctx->hdc ) != NULL) - ReleaseDC( WindowFromDC( ctx->hdc ), ctx->hdc ); + if (WindowFromDC( ctx->hdc ) != NULL) + ReleaseDC( WindowFromDC( ctx->hdc ), ctx->hdc ); - st_destroy_context( ctx->st ); + st_destroy_context( ctx->st ); - *link = ctx->next; - FREE( ctx ); - return TRUE; - } + FREE( ctx ); + + stw_dev->ctx_array[hglrc - 1].ctx = NULL; + + ret = TRUE; + } + + pipe_mutex_unlock( stw_dev->mutex ); + + return ret; +} - link = &ctx->next; - ctx = ctx->next; +BOOL +stw_release_context( + UINT_PTR hglrc ) +{ + BOOL ret = FALSE; + + if (!stw_dev) + return ret; + + pipe_mutex_lock( stw_dev->mutex ); + { + struct stw_context *ctx; + + /* XXX: The expectation is that ctx is the same context which is + * current for this thread. We should check that and return False + * if not the case. + */ + ctx = stw_lookup_context( hglrc ); + if (ctx == NULL) + goto done; + + if (stw_make_current( NULL, 0 ) == FALSE) + goto done; + + ret = TRUE; } +done: + pipe_mutex_unlock( stw_dev->mutex ); - return FALSE; + return ret; } /* Find the width and height of the window named by hdc. @@ -193,10 +262,10 @@ get_window_size( HDC hdc, GLuint *width, GLuint *height ) } } -struct stw_context * +UINT_PTR stw_get_current_context( void ) { - return current_hrc; + return current_hglrc; } HDC @@ -208,30 +277,32 @@ stw_get_current_dc( void ) BOOL stw_make_current( HDC hdc, - struct stw_context *hglrc ) + UINT_PTR hglrc ) { - struct stw_context *ctx = ctx_head; + struct stw_context *ctx; GET_CURRENT_CONTEXT( glcurctx ); struct stw_framebuffer *fb; GLuint width = 0; GLuint height = 0; + if (!stw_dev) + return FALSE; + + pipe_mutex_lock( stw_dev->mutex ); + ctx = stw_lookup_context( hglrc ); + pipe_mutex_unlock( stw_dev->mutex ); + + if (ctx == NULL) + return FALSE; + current_hdc = hdc; - current_hrc = hglrc; + current_hglrc = hglrc; - if (hdc == NULL || hglrc == NULL) { + if (hdc == NULL || hglrc == 0) { st_make_current( NULL, NULL, NULL ); return TRUE; } - while (ctx != NULL) { - if (ctx == hglrc) - break; - ctx = ctx->next; - } - if (ctx == NULL) - return FALSE; - /* Return if already current. */ if (glcurctx != NULL) { @@ -273,20 +344,3 @@ stw_make_current( return TRUE; } - -struct stw_context * -stw_context_from_hdc( - HDC hdc ) -{ - struct stw_context *ctx = ctx_head; - - while (ctx != NULL) { - if (ctx->hdc == hdc) - return ctx; - ctx = ctx->next; - } - return NULL; -} - - - diff --git a/src/gallium/state_trackers/wgl/shared/stw_context.h b/src/gallium/state_trackers/wgl/shared/stw_context.h index 89a8f900d8..b289615272 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_context.h +++ b/src/gallium/state_trackers/wgl/shared/stw_context.h @@ -37,17 +37,6 @@ struct stw_context struct st_context *st; HDC hdc; DWORD color_bits; - struct stw_context *next; }; -struct stw_context * -stw_context_from_hdc(HDC hdc ); - - - - - - - - #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 4b3cf51a53..d85cb45084 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_device.c +++ b/src/gallium/state_trackers/wgl/shared/stw_device.c @@ -34,7 +34,6 @@ #include "shared/stw_winsys.h" #include "shared/stw_pixelformat.h" #include "shared/stw_public.h" -#include "stw.h" struct stw_device *stw_dev = NULL; @@ -57,7 +56,7 @@ st_flush_frontbuffer(struct pipe_screen *screen, boolean -stw_shared_init(const struct stw_winsys *stw_winsys) +st_init(const struct stw_winsys *stw_winsys) { static struct stw_device stw_dev_storage; @@ -78,6 +77,8 @@ stw_shared_init(const struct stw_winsys *stw_winsys) stw_dev->screen->flush_frontbuffer = st_flush_frontbuffer; + pipe_mutex_init( stw_dev->mutex ); + pixelformat_init(); return TRUE; @@ -89,8 +90,24 @@ error1: void -stw_shared_cleanup(void) +st_cleanup(void) { + UINT_PTR i; + + if (!stw_dev) + return; + + pipe_mutex_lock( stw_dev->mutex ); + { + /* Ensure all contexts are destroyed */ + for (i = 0; i < STW_CONTEXT_MAX; i++) + if (stw_dev->ctx_array[i].ctx) + stw_delete_context( i + 1 ); + } + pipe_mutex_unlock( stw_dev->mutex ); + + pipe_mutex_destroy( stw_dev->mutex ); + if(stw_dev) { #ifdef DEBUG debug_memory_end(stw_dev->memdbg_no); @@ -99,3 +116,18 @@ stw_shared_cleanup(void) stw_dev = NULL; } + + +struct stw_context * +stw_lookup_context( UINT_PTR dhglrc ) +{ + if (dhglrc == 0 || + dhglrc >= STW_CONTEXT_MAX) + return NULL; + + if (stw_dev == NULL) + return NULL; + + return stw_dev->ctx_array[dhglrc - 1].ctx; +} + diff --git a/src/gallium/state_trackers/wgl/shared/stw_device.h b/src/gallium/state_trackers/wgl/shared/stw_device.h index c1e041212b..80da14b84f 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_device.h +++ b/src/gallium/state_trackers/wgl/shared/stw_device.h @@ -25,8 +25,15 @@ * **************************************************************************/ -#ifndef ST_DEVICE_H_ -#define ST_DEVICE_H_ +#ifndef STW_DEVICE_H_ +#define STW_DEVICE_H_ + + +#include "pipe/p_compiler.h" +#include "pipe/p_thread.h" + + +#define STW_CONTEXT_MAX 32 struct pipe_screen; @@ -36,13 +43,21 @@ struct stw_device const struct stw_winsys *stw_winsys; struct pipe_screen *screen; + pipe_mutex mutex; + + struct { + struct stw_context *ctx; + } ctx_array[STW_CONTEXT_MAX]; + #ifdef DEBUG unsigned long memdbg_no; #endif }; +struct stw_context * +stw_lookup_context( UINT_PTR hglrc ); extern struct stw_device *stw_dev; -#endif /* ST_DEVICE_H_ */ +#endif /* STW_DEVICE_H_ */ diff --git a/src/gallium/state_trackers/wgl/shared/stw_public.h b/src/gallium/state_trackers/wgl/shared/stw_public.h index 75b504a50f..39d377c16b 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_public.h +++ b/src/gallium/state_trackers/wgl/shared/stw_public.h @@ -29,31 +29,24 @@ #define STW_PUBLIC_H #include -#include "pipe/p_compiler.h" -struct stw_winsys; -struct stw_context; - -boolean -st_shared_init(const struct stw_winsys *stw_winsys); - -void -st_shared_cleanup(void); - - -BOOL stw_copy_context( struct stw_context *src, - struct stw_context *dst, +BOOL stw_copy_context( UINT_PTR hglrcSrc, + UINT_PTR hglrcDst, UINT mask ); -struct stw_context *stw_create_context( HDC hdc, int iLayerPlane ); +UINT_PTR stw_create_layer_context( HDC hdc, + int iLayerPlane ); + +BOOL stw_delete_context( UINT_PTR hglrc ); -BOOL stw_delete_context( struct stw_context *ctx ); +BOOL +stw_release_context( UINT_PTR dhglrc ); -struct stw_context *stw_get_current_context( void ); +UINT_PTR stw_get_current_context( void ); HDC stw_get_current_dc( void ); -BOOL stw_make_current( HDC hdc, struct stw_context *ctx ); +BOOL stw_make_current( HDC hdc, UINT_PTR hglrc ); BOOL stw_swap_buffers( HDC hdc ); diff --git a/src/gallium/state_trackers/wgl/stw.c b/src/gallium/state_trackers/wgl/stw.c deleted file mode 100644 index 8bccdad221..0000000000 --- a/src/gallium/state_trackers/wgl/stw.c +++ /dev/null @@ -1,57 +0,0 @@ -/************************************************************************** - * - * Copyright 2009, VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -#include "stw.h" -#include "shared/stw_winsys.h" - -boolean -st_init(const struct stw_winsys *stw_winsys) -{ - if (!stw_shared_init( stw_winsys )) - goto fail; - - if (!stw_icd_init()) - goto fail; - - if (!stw_wgl_init()) - goto fail; - - return TRUE; - -fail: - st_cleanup(); - return FALSE; -} - - -void -st_cleanup(void) -{ - stw_icd_cleanup(); - stw_shared_cleanup(); - stw_wgl_cleanup(); -} diff --git a/src/gallium/state_trackers/wgl/stw.h b/src/gallium/state_trackers/wgl/stw.h deleted file mode 100644 index 450af4ccb6..0000000000 --- a/src/gallium/state_trackers/wgl/stw.h +++ /dev/null @@ -1,53 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -#ifndef STW_H -#define STW_H - -#include "pipe/p_compiler.h" - -struct stw_winsys; - -/* Public interface: - */ -boolean stw_init( const struct stw_winsys *stw_winsys ); -void stw_cleanup( void ); - - - -/* Internal functions - */ -boolean stw_shared_init( const struct stw_winsys *stw_winsys ); -boolean stw_icd_init( void ); -boolean stw_wgl_init( void ); - -void stw_shared_cleanup( void ); -void stw_icd_cleanup( void ); -void stw_wgl_cleanup( void ); - - -#endif /* STW_H */ diff --git a/src/gallium/state_trackers/wgl/wgl/stw_wgl.c b/src/gallium/state_trackers/wgl/wgl/stw_wgl.c index d7077ca5d4..e06d2640b4 100644 --- a/src/gallium/state_trackers/wgl/wgl/stw_wgl.c +++ b/src/gallium/state_trackers/wgl/wgl/stw_wgl.c @@ -30,22 +30,6 @@ #include "util/u_debug.h" #include "shared/stw_public.h" #include "stw_wgl.h" -#include "stw.h" - -boolean stw_wgl_init( void ) -{ - debug_printf("%s\n", __FUNCTION__); - return TRUE; -} - -void stw_wgl_cleanup( void ) -{ -} - -static INLINE struct stw_context *stw_context( HGLRC hglrc ) -{ - return (struct stw_context *)hglrc; -} WINGDIAPI BOOL APIENTRY @@ -54,8 +38,8 @@ wglCopyContext( HGLRC hglrcDst, UINT mask ) { - return stw_copy_context( stw_context(hglrcSrc), - stw_context(hglrcDst), + return stw_copy_context( (UINT_PTR)hglrcSrc, + (UINT_PTR)hglrcDst, mask ); } @@ -63,7 +47,7 @@ WINGDIAPI HGLRC APIENTRY wglCreateContext( HDC hdc ) { - return (HGLRC) stw_create_context( hdc, 0 ); + return wglCreateLayerContext(hdc, 0); } WINGDIAPI HGLRC APIENTRY @@ -71,21 +55,21 @@ wglCreateLayerContext( HDC hdc, int iLayerPlane ) { - return (HGLRC) stw_create_context( hdc, iLayerPlane ); + return (HGLRC) stw_create_layer_context( hdc, iLayerPlane ); } WINGDIAPI BOOL APIENTRY wglDeleteContext( HGLRC hglrc ) { - return stw_delete_context( stw_context(hglrc) ); + return stw_delete_context( (UINT_PTR)hglrc ); } WINGDIAPI HGLRC APIENTRY wglGetCurrentContext( VOID ) { - return (HGLRC) stw_get_current_context(); + return (HGLRC)stw_get_current_context(); } WINGDIAPI HDC APIENTRY @@ -99,7 +83,7 @@ wglMakeCurrent( HDC hdc, HGLRC hglrc ) { - return stw_make_current( hdc, stw_context(hglrc) ); + return stw_make_current( hdc, (UINT_PTR)hglrc ); } diff --git a/src/gallium/state_trackers/wgl/wgl/stw_wgl.h b/src/gallium/state_trackers/wgl/wgl/stw_wgl.h index b86cc240f2..a98179944a 100644 --- a/src/gallium/state_trackers/wgl/wgl/stw_wgl.h +++ b/src/gallium/state_trackers/wgl/wgl/stw_wgl.h @@ -31,7 +31,7 @@ #include -#include "GL/gl.h" +#include /* -- cgit v1.2.3