00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <windows.h>
00029 #include <stdio.h>
00030
00031 #include "GL/gl.h"
00032
00033 #include "pipe/p_debug.h"
00034
00035 #include "stw_device.h"
00036 #include "stw_icd.h"
00037 #include "stw_wgl.h"
00038
00039
00040 static HGLRC
00041 _drv_lookup_hglrc( DHGLRC dhglrc )
00042 {
00043 if (dhglrc == 0 || dhglrc >= DRV_CONTEXT_MAX)
00044 return NULL;
00045 return stw_dev->ctx_array[dhglrc - 1].hglrc;
00046 }
00047
00048 BOOL APIENTRY
00049 DrvCopyContext(
00050 DHGLRC dhrcSource,
00051 DHGLRC dhrcDest,
00052 UINT fuMask )
00053 {
00054 debug_printf( "%s\n", __FUNCTION__ );
00055
00056 return FALSE;
00057 }
00058
00059 DHGLRC APIENTRY
00060 DrvCreateLayerContext(
00061 HDC hdc,
00062 INT iLayerPlane )
00063 {
00064 DHGLRC dhglrc = 0;
00065
00066 if (iLayerPlane == 0) {
00067 DWORD i;
00068
00069 for (i = 0; i < DRV_CONTEXT_MAX; i++) {
00070 if (stw_dev->ctx_array[i].hglrc == NULL)
00071 break;
00072 }
00073
00074 if (i < DRV_CONTEXT_MAX) {
00075 stw_dev->ctx_array[i].hglrc = wglCreateContext( hdc );
00076 if (stw_dev->ctx_array[i].hglrc != NULL)
00077 dhglrc = i + 1;
00078 }
00079 }
00080
00081 debug_printf( "%s( 0x%p, %d ) = %u\n", __FUNCTION__, hdc, iLayerPlane, dhglrc );
00082
00083 return dhglrc;
00084 }
00085
00086 DHGLRC APIENTRY
00087 DrvCreateContext(
00088 HDC hdc )
00089 {
00090 return DrvCreateLayerContext( hdc, 0 );
00091 }
00092
00093 BOOL APIENTRY
00094 DrvDeleteContext(
00095 DHGLRC dhglrc )
00096 {
00097 HGLRC hglrc = _drv_lookup_hglrc( dhglrc );
00098 BOOL success = FALSE;
00099
00100 if (hglrc != NULL) {
00101 success = wglDeleteContext( hglrc );
00102 if (success)
00103 stw_dev->ctx_array[dhglrc - 1].hglrc = NULL;
00104 }
00105
00106 debug_printf( "%s( %u ) = %s\n", __FUNCTION__, dhglrc, success ? "TRUE" : "FALSE" );
00107
00108 return success;
00109 }
00110
00111 BOOL APIENTRY
00112 DrvDescribeLayerPlane(
00113 HDC hdc,
00114 INT iPixelFormat,
00115 INT iLayerPlane,
00116 UINT nBytes,
00117 LPLAYERPLANEDESCRIPTOR plpd )
00118 {
00119 debug_printf( "%s\n", __FUNCTION__ );
00120
00121 return FALSE;
00122 }
00123
00124 LONG APIENTRY
00125 DrvDescribePixelFormat(
00126 HDC hdc,
00127 INT iPixelFormat,
00128 ULONG cjpfd,
00129 PIXELFORMATDESCRIPTOR *ppfd )
00130 {
00131 LONG r;
00132
00133 r = wglDescribePixelFormat( hdc, iPixelFormat, cjpfd, ppfd );
00134
00135 debug_printf( "%s( 0x%p, %d, %u, 0x%p ) = %d\n", __FUNCTION__, hdc, iPixelFormat, cjpfd, ppfd, r );
00136
00137 return r;
00138 }
00139
00140 int APIENTRY
00141 DrvGetLayerPaletteEntries(
00142 HDC hdc,
00143 INT iLayerPlane,
00144 INT iStart,
00145 INT cEntries,
00146 COLORREF *pcr )
00147 {
00148 debug_printf( "%s\n", __FUNCTION__ );
00149
00150 return 0;
00151 }
00152
00153 PROC APIENTRY
00154 DrvGetProcAddress(
00155 LPCSTR lpszProc )
00156 {
00157 PROC r;
00158
00159 r = wglGetProcAddress( lpszProc );
00160
00161 debug_printf( "%s( \", __FUNCTION__%s\" ) = 0x%p\n", lpszProc, r );
00162
00163 return r;
00164 }
00165
00166 BOOL APIENTRY
00167 DrvRealizeLayerPalette(
00168 HDC hdc,
00169 INT iLayerPlane,
00170 BOOL bRealize )
00171 {
00172 debug_printf( "%s\n", __FUNCTION__ );
00173
00174 return FALSE;
00175 }
00176
00177 BOOL APIENTRY
00178 DrvReleaseContext(
00179 DHGLRC dhglrc )
00180 {
00181 BOOL success = FALSE;
00182
00183 if (dhglrc == stw_dev->ctx_current) {
00184 HGLRC hglrc = _drv_lookup_hglrc( dhglrc );
00185
00186 if (hglrc != NULL) {
00187 success = wglMakeCurrent( NULL, NULL );
00188 if (success)
00189 stw_dev->ctx_current = 0;
00190 }
00191 }
00192
00193 debug_printf( "%s( %u ) = %s\n", __FUNCTION__, dhglrc, success ? "TRUE" : "FALSE" );
00194
00195 return success;
00196 }
00197
00198 void APIENTRY
00199 DrvSetCallbackProcs(
00200 INT nProcs,
00201 PROC *pProcs )
00202 {
00203 debug_printf( "%s( %d, 0x%p )\n", __FUNCTION__, nProcs, pProcs );
00204
00205 return;
00206 }
00207
00208 #define GPA_GL( NAME ) disp->NAME = gl##NAME
00209
00210 static GLCLTPROCTABLE cpt;
00211
00212 PGLCLTPROCTABLE APIENTRY
00213 DrvSetContext(
00214 HDC hdc,
00215 DHGLRC dhglrc,
00216 PFN_SETPROCTABLE pfnSetProcTable )
00217 {
00218 HGLRC hglrc = _drv_lookup_hglrc( dhglrc );
00219 GLDISPATCHTABLE *disp = &cpt.glDispatchTable;
00220
00221 debug_printf( "%s( 0x%p, %u, 0x%p )\n", __FUNCTION__, hdc, dhglrc, pfnSetProcTable );
00222
00223 if (hglrc == NULL)
00224 return NULL;
00225
00226 if (!wglMakeCurrent( hdc, hglrc ))
00227 return NULL;
00228
00229 memset( &cpt, 0, sizeof( cpt ) );
00230 cpt.cEntries = OPENGL_VERSION_110_ENTRIES;
00231
00232 GPA_GL( NewList );
00233 GPA_GL( EndList );
00234 GPA_GL( CallList );
00235 GPA_GL( CallLists );
00236 GPA_GL( DeleteLists );
00237 GPA_GL( GenLists );
00238 GPA_GL( ListBase );
00239 GPA_GL( Begin );
00240 GPA_GL( Bitmap );
00241 GPA_GL( Color3b );
00242 GPA_GL( Color3bv );
00243 GPA_GL( Color3d );
00244 GPA_GL( Color3dv );
00245 GPA_GL( Color3f );
00246 GPA_GL( Color3fv );
00247 GPA_GL( Color3i );
00248 GPA_GL( Color3iv );
00249 GPA_GL( Color3s );
00250 GPA_GL( Color3sv );
00251 GPA_GL( Color3ub );
00252 GPA_GL( Color3ubv );
00253 GPA_GL( Color3ui );
00254 GPA_GL( Color3uiv );
00255 GPA_GL( Color3us );
00256 GPA_GL( Color3usv );
00257 GPA_GL( Color4b );
00258 GPA_GL( Color4bv );
00259 GPA_GL( Color4d );
00260 GPA_GL( Color4dv );
00261 GPA_GL( Color4f );
00262 GPA_GL( Color4fv );
00263 GPA_GL( Color4i );
00264 GPA_GL( Color4iv );
00265 GPA_GL( Color4s );
00266 GPA_GL( Color4sv );
00267 GPA_GL( Color4ub );
00268 GPA_GL( Color4ubv );
00269 GPA_GL( Color4ui );
00270 GPA_GL( Color4uiv );
00271 GPA_GL( Color4us );
00272 GPA_GL( Color4usv );
00273 GPA_GL( EdgeFlag );
00274 GPA_GL( EdgeFlagv );
00275 GPA_GL( End );
00276 GPA_GL( Indexd );
00277 GPA_GL( Indexdv );
00278 GPA_GL( Indexf );
00279 GPA_GL( Indexfv );
00280 GPA_GL( Indexi );
00281 GPA_GL( Indexiv );
00282 GPA_GL( Indexs );
00283 GPA_GL( Indexsv );
00284 GPA_GL( Normal3b );
00285 GPA_GL( Normal3bv );
00286 GPA_GL( Normal3d );
00287 GPA_GL( Normal3dv );
00288 GPA_GL( Normal3f );
00289 GPA_GL( Normal3fv );
00290 GPA_GL( Normal3i );
00291 GPA_GL( Normal3iv );
00292 GPA_GL( Normal3s );
00293 GPA_GL( Normal3sv );
00294 GPA_GL( RasterPos2d );
00295 GPA_GL( RasterPos2dv );
00296 GPA_GL( RasterPos2f );
00297 GPA_GL( RasterPos2fv );
00298 GPA_GL( RasterPos2i );
00299 GPA_GL( RasterPos2iv );
00300 GPA_GL( RasterPos2s );
00301 GPA_GL( RasterPos2sv );
00302 GPA_GL( RasterPos3d );
00303 GPA_GL( RasterPos3dv );
00304 GPA_GL( RasterPos3f );
00305 GPA_GL( RasterPos3fv );
00306 GPA_GL( RasterPos3i );
00307 GPA_GL( RasterPos3iv );
00308 GPA_GL( RasterPos3s );
00309 GPA_GL( RasterPos3sv );
00310 GPA_GL( RasterPos4d );
00311 GPA_GL( RasterPos4dv );
00312 GPA_GL( RasterPos4f );
00313 GPA_GL( RasterPos4fv );
00314 GPA_GL( RasterPos4i );
00315 GPA_GL( RasterPos4iv );
00316 GPA_GL( RasterPos4s );
00317 GPA_GL( RasterPos4sv );
00318 GPA_GL( Rectd );
00319 GPA_GL( Rectdv );
00320 GPA_GL( Rectf );
00321 GPA_GL( Rectfv );
00322 GPA_GL( Recti );
00323 GPA_GL( Rectiv );
00324 GPA_GL( Rects );
00325 GPA_GL( Rectsv );
00326 GPA_GL( TexCoord1d );
00327 GPA_GL( TexCoord1dv );
00328 GPA_GL( TexCoord1f );
00329 GPA_GL( TexCoord1fv );
00330 GPA_GL( TexCoord1i );
00331 GPA_GL( TexCoord1iv );
00332 GPA_GL( TexCoord1s );
00333 GPA_GL( TexCoord1sv );
00334 GPA_GL( TexCoord2d );
00335 GPA_GL( TexCoord2dv );
00336 GPA_GL( TexCoord2f );
00337 GPA_GL( TexCoord2fv );
00338 GPA_GL( TexCoord2i );
00339 GPA_GL( TexCoord2iv );
00340 GPA_GL( TexCoord2s );
00341 GPA_GL( TexCoord2sv );
00342 GPA_GL( TexCoord3d );
00343 GPA_GL( TexCoord3dv );
00344 GPA_GL( TexCoord3f );
00345 GPA_GL( TexCoord3fv );
00346 GPA_GL( TexCoord3i );
00347 GPA_GL( TexCoord3iv );
00348 GPA_GL( TexCoord3s );
00349 GPA_GL( TexCoord3sv );
00350 GPA_GL( TexCoord4d );
00351 GPA_GL( TexCoord4dv );
00352 GPA_GL( TexCoord4f );
00353 GPA_GL( TexCoord4fv );
00354 GPA_GL( TexCoord4i );
00355 GPA_GL( TexCoord4iv );
00356 GPA_GL( TexCoord4s );
00357 GPA_GL( TexCoord4sv );
00358 GPA_GL( Vertex2d );
00359 GPA_GL( Vertex2dv );
00360 GPA_GL( Vertex2f );
00361 GPA_GL( Vertex2fv );
00362 GPA_GL( Vertex2i );
00363 GPA_GL( Vertex2iv );
00364 GPA_GL( Vertex2s );
00365 GPA_GL( Vertex2sv );
00366 GPA_GL( Vertex3d );
00367 GPA_GL( Vertex3dv );
00368 GPA_GL( Vertex3f );
00369 GPA_GL( Vertex3fv );
00370 GPA_GL( Vertex3i );
00371 GPA_GL( Vertex3iv );
00372 GPA_GL( Vertex3s );
00373 GPA_GL( Vertex3sv );
00374 GPA_GL( Vertex4d );
00375 GPA_GL( Vertex4dv );
00376 GPA_GL( Vertex4f );
00377 GPA_GL( Vertex4fv );
00378 GPA_GL( Vertex4i );
00379 GPA_GL( Vertex4iv );
00380 GPA_GL( Vertex4s );
00381 GPA_GL( Vertex4sv );
00382 GPA_GL( ClipPlane );
00383 GPA_GL( ColorMaterial );
00384 GPA_GL( CullFace );
00385 GPA_GL( Fogf );
00386 GPA_GL( Fogfv );
00387 GPA_GL( Fogi );
00388 GPA_GL( Fogiv );
00389 GPA_GL( FrontFace );
00390 GPA_GL( Hint );
00391 GPA_GL( Lightf );
00392 GPA_GL( Lightfv );
00393 GPA_GL( Lighti );
00394 GPA_GL( Lightiv );
00395 GPA_GL( LightModelf );
00396 GPA_GL( LightModelfv );
00397 GPA_GL( LightModeli );
00398 GPA_GL( LightModeliv );
00399 GPA_GL( LineStipple );
00400 GPA_GL( LineWidth );
00401 GPA_GL( Materialf );
00402 GPA_GL( Materialfv );
00403 GPA_GL( Materiali );
00404 GPA_GL( Materialiv );
00405 GPA_GL( PointSize );
00406 GPA_GL( PolygonMode );
00407 GPA_GL( PolygonStipple );
00408 GPA_GL( Scissor );
00409 GPA_GL( ShadeModel );
00410 GPA_GL( TexParameterf );
00411 GPA_GL( TexParameterfv );
00412 GPA_GL( TexParameteri );
00413 GPA_GL( TexParameteriv );
00414 GPA_GL( TexImage1D );
00415 GPA_GL( TexImage2D );
00416 GPA_GL( TexEnvf );
00417 GPA_GL( TexEnvfv );
00418 GPA_GL( TexEnvi );
00419 GPA_GL( TexEnviv );
00420 GPA_GL( TexGend );
00421 GPA_GL( TexGendv );
00422 GPA_GL( TexGenf );
00423 GPA_GL( TexGenfv );
00424 GPA_GL( TexGeni );
00425 GPA_GL( TexGeniv );
00426 GPA_GL( FeedbackBuffer );
00427 GPA_GL( SelectBuffer );
00428 GPA_GL( RenderMode );
00429 GPA_GL( InitNames );
00430 GPA_GL( LoadName );
00431 GPA_GL( PassThrough );
00432 GPA_GL( PopName );
00433 GPA_GL( PushName );
00434 GPA_GL( DrawBuffer );
00435 GPA_GL( Clear );
00436 GPA_GL( ClearAccum );
00437 GPA_GL( ClearIndex );
00438 GPA_GL( ClearColor );
00439 GPA_GL( ClearStencil );
00440 GPA_GL( ClearDepth );
00441 GPA_GL( StencilMask );
00442 GPA_GL( ColorMask );
00443 GPA_GL( DepthMask );
00444 GPA_GL( IndexMask );
00445 GPA_GL( Accum );
00446 GPA_GL( Disable );
00447 GPA_GL( Enable );
00448 GPA_GL( Finish );
00449 GPA_GL( Flush );
00450 GPA_GL( PopAttrib );
00451 GPA_GL( PushAttrib );
00452 GPA_GL( Map1d );
00453 GPA_GL( Map1f );
00454 GPA_GL( Map2d );
00455 GPA_GL( Map2f );
00456 GPA_GL( MapGrid1d );
00457 GPA_GL( MapGrid1f );
00458 GPA_GL( MapGrid2d );
00459 GPA_GL( MapGrid2f );
00460 GPA_GL( EvalCoord1d );
00461 GPA_GL( EvalCoord1dv );
00462 GPA_GL( EvalCoord1f );
00463 GPA_GL( EvalCoord1fv );
00464 GPA_GL( EvalCoord2d );
00465 GPA_GL( EvalCoord2dv );
00466 GPA_GL( EvalCoord2f );
00467 GPA_GL( EvalCoord2fv );
00468 GPA_GL( EvalMesh1 );
00469 GPA_GL( EvalPoint1 );
00470 GPA_GL( EvalMesh2 );
00471 GPA_GL( EvalPoint2 );
00472 GPA_GL( AlphaFunc );
00473 GPA_GL( BlendFunc );
00474 GPA_GL( LogicOp );
00475 GPA_GL( StencilFunc );
00476 GPA_GL( StencilOp );
00477 GPA_GL( DepthFunc );
00478 GPA_GL( PixelZoom );
00479 GPA_GL( PixelTransferf );
00480 GPA_GL( PixelTransferi );
00481 GPA_GL( PixelStoref );
00482 GPA_GL( PixelStorei );
00483 GPA_GL( PixelMapfv );
00484 GPA_GL( PixelMapuiv );
00485 GPA_GL( PixelMapusv );
00486 GPA_GL( ReadBuffer );
00487 GPA_GL( CopyPixels );
00488 GPA_GL( ReadPixels );
00489 GPA_GL( DrawPixels );
00490 GPA_GL( GetBooleanv );
00491 GPA_GL( GetClipPlane );
00492 GPA_GL( GetDoublev );
00493 GPA_GL( GetError );
00494 GPA_GL( GetFloatv );
00495 GPA_GL( GetIntegerv );
00496 GPA_GL( GetLightfv );
00497 GPA_GL( GetLightiv );
00498 GPA_GL( GetMapdv );
00499 GPA_GL( GetMapfv );
00500 GPA_GL( GetMapiv );
00501 GPA_GL( GetMaterialfv );
00502 GPA_GL( GetMaterialiv );
00503 GPA_GL( GetPixelMapfv );
00504 GPA_GL( GetPixelMapuiv );
00505 GPA_GL( GetPixelMapusv );
00506 GPA_GL( GetPolygonStipple );
00507 GPA_GL( GetString );
00508 GPA_GL( GetTexEnvfv );
00509 GPA_GL( GetTexEnviv );
00510 GPA_GL( GetTexGendv );
00511 GPA_GL( GetTexGenfv );
00512 GPA_GL( GetTexGeniv );
00513 GPA_GL( GetTexImage );
00514 GPA_GL( GetTexParameterfv );
00515 GPA_GL( GetTexParameteriv );
00516 GPA_GL( GetTexLevelParameterfv );
00517 GPA_GL( GetTexLevelParameteriv );
00518 GPA_GL( IsEnabled );
00519 GPA_GL( IsList );
00520 GPA_GL( DepthRange );
00521 GPA_GL( Frustum );
00522 GPA_GL( LoadIdentity );
00523 GPA_GL( LoadMatrixf );
00524 GPA_GL( LoadMatrixd );
00525 GPA_GL( MatrixMode );
00526 GPA_GL( MultMatrixf );
00527 GPA_GL( MultMatrixd );
00528 GPA_GL( Ortho );
00529 GPA_GL( PopMatrix );
00530 GPA_GL( PushMatrix );
00531 GPA_GL( Rotated );
00532 GPA_GL( Rotatef );
00533 GPA_GL( Scaled );
00534 GPA_GL( Scalef );
00535 GPA_GL( Translated );
00536 GPA_GL( Translatef );
00537 GPA_GL( Viewport );
00538 GPA_GL( ArrayElement );
00539 GPA_GL( BindTexture );
00540 GPA_GL( ColorPointer );
00541 GPA_GL( DisableClientState );
00542 GPA_GL( DrawArrays );
00543 GPA_GL( DrawElements );
00544 GPA_GL( EdgeFlagPointer );
00545 GPA_GL( EnableClientState );
00546 GPA_GL( IndexPointer );
00547 GPA_GL( Indexub );
00548 GPA_GL( Indexubv );
00549 GPA_GL( InterleavedArrays );
00550 GPA_GL( NormalPointer );
00551 GPA_GL( PolygonOffset );
00552 GPA_GL( TexCoordPointer );
00553 GPA_GL( VertexPointer );
00554 GPA_GL( AreTexturesResident );
00555 GPA_GL( CopyTexImage1D );
00556 GPA_GL( CopyTexImage2D );
00557 GPA_GL( CopyTexSubImage1D );
00558 GPA_GL( CopyTexSubImage2D );
00559 GPA_GL( DeleteTextures );
00560 GPA_GL( GenTextures );
00561 GPA_GL( GetPointerv );
00562 GPA_GL( IsTexture );
00563 GPA_GL( PrioritizeTextures );
00564 GPA_GL( TexSubImage1D );
00565 GPA_GL( TexSubImage2D );
00566 GPA_GL( PopClientAttrib );
00567 GPA_GL( PushClientAttrib );
00568
00569 return &cpt;
00570 }
00571
00572 int APIENTRY
00573 DrvSetLayerPaletteEntries(
00574 HDC hdc,
00575 INT iLayerPlane,
00576 INT iStart,
00577 INT cEntries,
00578 CONST COLORREF *pcr )
00579 {
00580 debug_printf( "%s\n", __FUNCTION__ );
00581
00582 return 0;
00583 }
00584
00585 BOOL APIENTRY
00586 DrvSetPixelFormat(
00587 HDC hdc,
00588 LONG iPixelFormat )
00589 {
00590 PIXELFORMATDESCRIPTOR pfd;
00591 BOOL r;
00592
00593 wglDescribePixelFormat( hdc, iPixelFormat, sizeof( pfd ), &pfd );
00594 r = wglSetPixelFormat( hdc, iPixelFormat, &pfd );
00595
00596 debug_printf( "%s( 0x%p, %d ) = %s\n", __FUNCTION__, hdc, iPixelFormat, r ? "TRUE" : "FALSE" );
00597
00598 return r;
00599 }
00600
00601 BOOL APIENTRY
00602 DrvShareLists(
00603 DHGLRC dhglrc1,
00604 DHGLRC dhglrc2 )
00605 {
00606 debug_printf( "%s\n", __FUNCTION__ );
00607
00608 return FALSE;
00609 }
00610
00611 BOOL APIENTRY
00612 DrvSwapBuffers(
00613 HDC hdc )
00614 {
00615 debug_printf( "%s( 0x%p )\n", __FUNCTION__, hdc );
00616
00617 return wglSwapBuffers( hdc );
00618 }
00619
00620 BOOL APIENTRY
00621 DrvSwapLayerBuffers(
00622 HDC hdc,
00623 UINT fuPlanes )
00624 {
00625 debug_printf( "%s\n", __FUNCTION__ );
00626
00627 return FALSE;
00628 }
00629
00630 BOOL APIENTRY
00631 DrvValidateVersion(
00632 ULONG ulVersion )
00633 {
00634 debug_printf( "%s( %u )\n", __FUNCTION__, ulVersion );
00635
00636 return ulVersion == 1;
00637 }