From 807c6931fe683fd844ceec1b023232181e6aae03 Mon Sep 17 00:00:00 2001 From: marha Date: Tue, 28 Dec 2010 16:10:20 +0000 Subject: xserver and mesa git update 28-12-2010 --- .../src/mesa/drivers/windows/gldirect/gld_driver.c | 558 ++++++++++----------- 1 file changed, 279 insertions(+), 279 deletions(-) (limited to 'mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c') diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c b/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c index f7c575614..226dc5a5a 100644 --- a/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c +++ b/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c @@ -1,279 +1,279 @@ -/**************************************************************************** -* -* Mesa 3-D graphics library -* Direct3D Driver Interface -* -* ======================================================================== -* -* Copyright (C) 1991-2004 SciTech Software, 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, sublicense, -* 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 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 NONINFRINGEMENT. IN NO EVENT SHALL -* SCITECH SOFTWARE INC 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. -* -* ====================================================================== -* -* Language: ANSI C -* Environment: Windows 9x/2000/XP/XBox (Win32) -* -* Description: Driver functions and interfaces -* -****************************************************************************/ - -#define STRICT -#define WIN32_LEAN_AND_MEAN -#include - -#include "gld_driver.h" -#include "ddlog.h" -#include "glheader.h" - -// For glGetString(). -#include "common_x86_asm.h" - -//--------------------------------------------------------------------------- - -static char *szDriverError = "Driver used before initialisation!"; - -// This holds our dynamically created OpenGL renderer string. -// 256 chars should be plenty - remember that some apps display this. -static char _gldRendererString[256]; - -static char *szVendor = "SciTech Software, Inc."; - -//--------------------------------------------------------------------------- - -extern BOOL gldGetDXErrorString_DX(HRESULT hr, char *buf, int nBufSize); - -extern BOOL gldCreateDrawable_MesaSW(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers); -extern BOOL gldResizeDrawable_MesaSW(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers); -extern BOOL gldDestroyDrawable_MesaSW(DGL_ctx *ctx); -extern BOOL gldCreatePrivateGlobals_MesaSW(void); -extern BOOL gldDestroyPrivateGlobals_MesaSW(void); -extern BOOL gldBuildPixelformatList_MesaSW(void); -extern BOOL gldInitialiseMesa_MesaSW(DGL_ctx *ctx); -extern BOOL gldSwapBuffers_MesaSW(DGL_ctx *ctx, HDC hDC, HWND hWnd); -extern PROC gldGetProcAddress_MesaSW(LPCSTR a); -extern BOOL gldGetDisplayMode_MesaSW(DGL_ctx *ctx, GLD_displayMode *glddm); - -extern BOOL gldCreateDrawable_DX(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers); -extern BOOL gldResizeDrawable_DX(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers); -extern BOOL gldDestroyDrawable_DX(DGL_ctx *ctx); -extern BOOL gldCreatePrivateGlobals_DX(void); -extern BOOL gldDestroyPrivateGlobals_DX(void); -extern BOOL gldBuildPixelformatList_DX(void); -extern BOOL gldInitialiseMesa_DX(DGL_ctx *ctx); -extern BOOL gldSwapBuffers_DX(DGL_ctx *ctx, HDC hDC, HWND hWnd); -extern PROC gldGetProcAddress_DX(LPCSTR a); -extern BOOL gldGetDisplayMode_DX(DGL_ctx *ctx, GLD_displayMode *glddm); - -//--------------------------------------------------------------------------- -// NOP functions. Called if proper driver functions are not set. -//--------------------------------------------------------------------------- - -static BOOL _gldDriverError(void) -{ - ddlogMessage(DDLOG_CRITICAL, szDriverError); - return FALSE; -} - -//--------------------------------------------------------------------------- - -static BOOL _GetDXErrorString_ERROR( - HRESULT hr, - char *buf, - int nBufSize) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _CreateDrawable_ERROR( - DGL_ctx *ctx, - BOOL bPersistantInterface, - BOOL bPersistantBuffers) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _ResizeDrawable_ERROR( - DGL_ctx *ctx, - BOOL bDefaultDriver, - BOOL bPersistantInterface, - BOOL bPersistantBuffers) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _DestroyDrawable_ERROR( - DGL_ctx *ctx) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _CreatePrivateGlobals_ERROR(void) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _DestroyPrivateGlobals_ERROR(void) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _BuildPixelformatList_ERROR(void) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - - -static BOOL _InitialiseMesa_ERROR( - DGL_ctx *ctx) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static BOOL _SwapBuffers_ERROR( - DGL_ctx *ctx, - HDC hDC, - HWND hWnd) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- - -static PROC _GetProcAddress_ERROR( - LPCSTR a) -{ - _gldDriverError(); - return NULL; -} - -//--------------------------------------------------------------------------- - -static BOOL _GetDisplayMode_ERROR( - DGL_ctx *ctx, - GLD_displayMode *glddm) -{ - return _gldDriverError(); -} - -//--------------------------------------------------------------------------- -// Functions useful to all drivers -//--------------------------------------------------------------------------- - -const GLubyte* _gldGetStringGeneric( - GLcontext *ctx, - GLenum name) -{ - if (!ctx) - return NULL; - - switch (name) { - case GL_RENDERER: - sprintf(_gldRendererString, "GLDirect 4.0 %s%s%s%s (%s %s)", - _mesa_x86_cpu_features ? "/x86" : "", - cpu_has_mmx ? "/MMX" : "", - cpu_has_3dnow ? "/3DNow!" : "", - cpu_has_xmm ? "/SSE" : "", - __DATE__, __TIME__); - return (const GLubyte *) _gldRendererString; - case GL_VENDOR: - return (const GLubyte *) szVendor; - default: - return NULL; - } -} - -//--------------------------------------------------------------------------- -// Global driver function pointers, initially set to functions that -// will report an error when called. -//--------------------------------------------------------------------------- - -GLD_driver _gldDriver = { - _GetDXErrorString_ERROR, - _CreateDrawable_ERROR, - _ResizeDrawable_ERROR, - _DestroyDrawable_ERROR, - _CreatePrivateGlobals_ERROR, - _DestroyPrivateGlobals_ERROR, - _BuildPixelformatList_ERROR, - _InitialiseMesa_ERROR, - _SwapBuffers_ERROR, - _GetProcAddress_ERROR, - _GetDisplayMode_ERROR -}; - -//--------------------------------------------------------------------------- -// Init function. Should be called as soon as regkeys/ini-settings are read. -//--------------------------------------------------------------------------- - -BOOL gldInitDriverPointers( - DWORD dwDriver) -{ - _gldDriver.GetDXErrorString = gldGetDXErrorString_DX; - - if (dwDriver == GLDS_DRIVER_MESA_SW) { - // Mesa Software driver - _gldDriver.CreateDrawable = gldCreateDrawable_MesaSW; - _gldDriver.ResizeDrawable = gldResizeDrawable_MesaSW; - _gldDriver.DestroyDrawable = gldDestroyDrawable_MesaSW; - _gldDriver.CreatePrivateGlobals = gldCreatePrivateGlobals_MesaSW; - _gldDriver.DestroyPrivateGlobals = gldDestroyPrivateGlobals_MesaSW; - _gldDriver.BuildPixelformatList = gldBuildPixelformatList_MesaSW; - _gldDriver.InitialiseMesa = gldInitialiseMesa_MesaSW; - _gldDriver.SwapBuffers = gldSwapBuffers_MesaSW; - _gldDriver.wglGetProcAddress = gldGetProcAddress_MesaSW; - _gldDriver.GetDisplayMode = gldGetDisplayMode_MesaSW; - return TRUE; - } - - if ((dwDriver == GLDS_DRIVER_REF) || (dwDriver == GLDS_DRIVER_HAL)) { - // Direct3D driver, either HW or SW - _gldDriver.CreateDrawable = gldCreateDrawable_DX; - _gldDriver.ResizeDrawable = gldResizeDrawable_DX; - _gldDriver.DestroyDrawable = gldDestroyDrawable_DX; - _gldDriver.CreatePrivateGlobals = gldCreatePrivateGlobals_DX; - _gldDriver.DestroyPrivateGlobals = gldDestroyPrivateGlobals_DX; - _gldDriver.BuildPixelformatList = gldBuildPixelformatList_DX; - _gldDriver.InitialiseMesa = gldInitialiseMesa_DX; - _gldDriver.SwapBuffers = gldSwapBuffers_DX; - _gldDriver.wglGetProcAddress = gldGetProcAddress_DX; - _gldDriver.GetDisplayMode = gldGetDisplayMode_DX; - return TRUE; - }; - - return FALSE; -} - -//--------------------------------------------------------------------------- +/**************************************************************************** +* +* Mesa 3-D graphics library +* Direct3D Driver Interface +* +* ======================================================================== +* +* Copyright (C) 1991-2004 SciTech Software, 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, sublicense, +* 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 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 NONINFRINGEMENT. IN NO EVENT SHALL +* SCITECH SOFTWARE INC 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. +* +* ====================================================================== +* +* Language: ANSI C +* Environment: Windows 9x/2000/XP/XBox (Win32) +* +* Description: Driver functions and interfaces +* +****************************************************************************/ + +#define STRICT +#define WIN32_LEAN_AND_MEAN +#include + +#include "gld_driver.h" +#include "ddlog.h" +#include "glheader.h" + +// For glGetString(). +#include "common_x86_asm.h" + +//--------------------------------------------------------------------------- + +static char *szDriverError = "Driver used before initialisation!"; + +// This holds our dynamically created OpenGL renderer string. +// 256 chars should be plenty - remember that some apps display this. +static char _gldRendererString[256]; + +static char *szVendor = "SciTech Software, Inc."; + +//--------------------------------------------------------------------------- + +extern BOOL gldGetDXErrorString_DX(HRESULT hr, char *buf, int nBufSize); + +extern BOOL gldCreateDrawable_MesaSW(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers); +extern BOOL gldResizeDrawable_MesaSW(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers); +extern BOOL gldDestroyDrawable_MesaSW(DGL_ctx *ctx); +extern BOOL gldCreatePrivateGlobals_MesaSW(void); +extern BOOL gldDestroyPrivateGlobals_MesaSW(void); +extern BOOL gldBuildPixelformatList_MesaSW(void); +extern BOOL gldInitialiseMesa_MesaSW(DGL_ctx *ctx); +extern BOOL gldSwapBuffers_MesaSW(DGL_ctx *ctx, HDC hDC, HWND hWnd); +extern PROC gldGetProcAddress_MesaSW(LPCSTR a); +extern BOOL gldGetDisplayMode_MesaSW(DGL_ctx *ctx, GLD_displayMode *glddm); + +extern BOOL gldCreateDrawable_DX(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers); +extern BOOL gldResizeDrawable_DX(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers); +extern BOOL gldDestroyDrawable_DX(DGL_ctx *ctx); +extern BOOL gldCreatePrivateGlobals_DX(void); +extern BOOL gldDestroyPrivateGlobals_DX(void); +extern BOOL gldBuildPixelformatList_DX(void); +extern BOOL gldInitialiseMesa_DX(DGL_ctx *ctx); +extern BOOL gldSwapBuffers_DX(DGL_ctx *ctx, HDC hDC, HWND hWnd); +extern PROC gldGetProcAddress_DX(LPCSTR a); +extern BOOL gldGetDisplayMode_DX(DGL_ctx *ctx, GLD_displayMode *glddm); + +//--------------------------------------------------------------------------- +// NOP functions. Called if proper driver functions are not set. +//--------------------------------------------------------------------------- + +static BOOL _gldDriverError(void) +{ + ddlogMessage(DDLOG_CRITICAL, szDriverError); + return FALSE; +} + +//--------------------------------------------------------------------------- + +static BOOL _GetDXErrorString_ERROR( + HRESULT hr, + char *buf, + int nBufSize) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _CreateDrawable_ERROR( + DGL_ctx *ctx, + BOOL bPersistantInterface, + BOOL bPersistantBuffers) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _ResizeDrawable_ERROR( + DGL_ctx *ctx, + BOOL bDefaultDriver, + BOOL bPersistantInterface, + BOOL bPersistantBuffers) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _DestroyDrawable_ERROR( + DGL_ctx *ctx) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _CreatePrivateGlobals_ERROR(void) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _DestroyPrivateGlobals_ERROR(void) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _BuildPixelformatList_ERROR(void) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + + +static BOOL _InitialiseMesa_ERROR( + DGL_ctx *ctx) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static BOOL _SwapBuffers_ERROR( + DGL_ctx *ctx, + HDC hDC, + HWND hWnd) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- + +static PROC _GetProcAddress_ERROR( + LPCSTR a) +{ + _gldDriverError(); + return NULL; +} + +//--------------------------------------------------------------------------- + +static BOOL _GetDisplayMode_ERROR( + DGL_ctx *ctx, + GLD_displayMode *glddm) +{ + return _gldDriverError(); +} + +//--------------------------------------------------------------------------- +// Functions useful to all drivers +//--------------------------------------------------------------------------- + +const GLubyte* _gldGetStringGeneric( + struct gl_context *ctx, + GLenum name) +{ + if (!ctx) + return NULL; + + switch (name) { + case GL_RENDERER: + sprintf(_gldRendererString, "GLDirect 4.0 %s%s%s%s (%s %s)", + _mesa_x86_cpu_features ? "/x86" : "", + cpu_has_mmx ? "/MMX" : "", + cpu_has_3dnow ? "/3DNow!" : "", + cpu_has_xmm ? "/SSE" : "", + __DATE__, __TIME__); + return (const GLubyte *) _gldRendererString; + case GL_VENDOR: + return (const GLubyte *) szVendor; + default: + return NULL; + } +} + +//--------------------------------------------------------------------------- +// Global driver function pointers, initially set to functions that +// will report an error when called. +//--------------------------------------------------------------------------- + +GLD_driver _gldDriver = { + _GetDXErrorString_ERROR, + _CreateDrawable_ERROR, + _ResizeDrawable_ERROR, + _DestroyDrawable_ERROR, + _CreatePrivateGlobals_ERROR, + _DestroyPrivateGlobals_ERROR, + _BuildPixelformatList_ERROR, + _InitialiseMesa_ERROR, + _SwapBuffers_ERROR, + _GetProcAddress_ERROR, + _GetDisplayMode_ERROR +}; + +//--------------------------------------------------------------------------- +// Init function. Should be called as soon as regkeys/ini-settings are read. +//--------------------------------------------------------------------------- + +BOOL gldInitDriverPointers( + DWORD dwDriver) +{ + _gldDriver.GetDXErrorString = gldGetDXErrorString_DX; + + if (dwDriver == GLDS_DRIVER_MESA_SW) { + // Mesa Software driver + _gldDriver.CreateDrawable = gldCreateDrawable_MesaSW; + _gldDriver.ResizeDrawable = gldResizeDrawable_MesaSW; + _gldDriver.DestroyDrawable = gldDestroyDrawable_MesaSW; + _gldDriver.CreatePrivateGlobals = gldCreatePrivateGlobals_MesaSW; + _gldDriver.DestroyPrivateGlobals = gldDestroyPrivateGlobals_MesaSW; + _gldDriver.BuildPixelformatList = gldBuildPixelformatList_MesaSW; + _gldDriver.InitialiseMesa = gldInitialiseMesa_MesaSW; + _gldDriver.SwapBuffers = gldSwapBuffers_MesaSW; + _gldDriver.wglGetProcAddress = gldGetProcAddress_MesaSW; + _gldDriver.GetDisplayMode = gldGetDisplayMode_MesaSW; + return TRUE; + } + + if ((dwDriver == GLDS_DRIVER_REF) || (dwDriver == GLDS_DRIVER_HAL)) { + // Direct3D driver, either HW or SW + _gldDriver.CreateDrawable = gldCreateDrawable_DX; + _gldDriver.ResizeDrawable = gldResizeDrawable_DX; + _gldDriver.DestroyDrawable = gldDestroyDrawable_DX; + _gldDriver.CreatePrivateGlobals = gldCreatePrivateGlobals_DX; + _gldDriver.DestroyPrivateGlobals = gldDestroyPrivateGlobals_DX; + _gldDriver.BuildPixelformatList = gldBuildPixelformatList_DX; + _gldDriver.InitialiseMesa = gldInitialiseMesa_DX; + _gldDriver.SwapBuffers = gldSwapBuffers_DX; + _gldDriver.wglGetProcAddress = gldGetProcAddress_DX; + _gldDriver.GetDisplayMode = gldGetDisplayMode_DX; + return TRUE; + }; + + return FALSE; +} + +//--------------------------------------------------------------------------- -- cgit v1.2.3