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/dglcontext.h | 562 ++++++++++----------- 1 file changed, 281 insertions(+), 281 deletions(-) (limited to 'mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h') diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h b/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h index 5c433b857..5eea9de3d 100644 --- a/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h +++ b/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h @@ -1,281 +1,281 @@ -/**************************************************************************** -* -* 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 (Win32) -* -* Description: OpenGL context handling. -* -****************************************************************************/ - -#ifndef __DGLCONTEXT_H -#define __DGLCONTEXT_H - -// Disable compiler complaints about DLL linkage -#pragma warning (disable:4273) - -// Macros to control compilation -#ifndef STRICT -#define STRICT -#endif // STRICT -#define WIN32_LEAN_AND_MEAN -#include -#include - -#ifdef _USE_GLD3_WGL - #include "dglmacros.h" - #include "dglglobals.h" - #include "pixpack.h" - #include "ddlog.h" - #include "dglpf.h" - #include "context.h" // Mesa context -#else - #include - #include - - #include "dglmacros.h" - #include "dglglobals.h" - #include "pixpack.h" - #include "ddlog.h" - #include "dglpf.h" - #include "d3dvertex.h" - - #include "DirectGL.h" - - #include "context.h" // Mesa context - #include "vb.h" // Mesa vertex buffer -#endif // _USE_GLD3_WGL - -/*---------------------- Macros and type definitions ----------------------*/ - -// TODO: Use a list instead of this constant! -#define DGL_MAX_CONTEXTS 32 - -// Structure for describing an OpenGL context -#ifdef _USE_GLD3_WGL -typedef struct { - BOOL bHasBeenCurrent; - DGL_pixelFormat *lpPF; - - // Pointer to private driver data (this also contains the drawable). - void *glPriv; - - // Mesa vars: - GLcontext *glCtx; // The core Mesa context - GLvisual *glVis; // Describes the color buffer - GLframebuffer *glBuffer; // Ancillary buffers - - GLuint ClearIndex; - GLuint CurrentIndex; - GLubyte ClearColor[4]; - GLubyte CurrentColor[4]; - - BOOL EmulateSingle; // Emulate single-buffering - BOOL bDoubleBuffer; - BOOL bDepthBuffer; - - // Shared driver vars: - BOOL bAllocated; - BOOL bFullscreen; // Is this a fullscreen context? - BOOL bSceneStarted; // Has a lpDev->BeginScene been issued? - BOOL bCanRender; // Flag: states whether rendering is OK - BOOL bFrameStarted; // Has frame update started at all? - BOOL bStencil; // TRUE if this context has stencil - BOOL bGDIEraseBkgnd; // GDI Erase Background command - - // Window information - HWND hWnd; // Window handle - HDC hDC; // Windows' Device Context of the window - DWORD dwWidth; // Window width - DWORD dwHeight; // Window height - DWORD dwBPP; // Window bits-per-pixel; - RECT rcScreenRect; // Screen rectangle - DWORD dwModeWidth; // Display mode width - DWORD dwModeHeight; // Display mode height - float dvClipX; - float dvClipY; - LONG lpfnWndProc; // window message handler function - -} DGL_ctx; - -#define GLD_context DGL_ctx -#define GLD_GET_CONTEXT(c) (GLD_context*)(c)->DriverCtx - -#else // _USE_GLD3_WGL - -typedef struct { - BOOL bHasBeenCurrent; - DGL_pixelFormat *lpPF; - // - // Mesa context vars: - // - GLcontext *glCtx; // The core Mesa context - GLvisual *glVis; // Describes the color buffer - GLframebuffer *glBuffer; // Ancillary buffers - - GLuint ClearIndex; - GLuint CurrentIndex; - GLubyte ClearColor[4]; - GLubyte CurrentColor[4]; - - BOOL EmulateSingle; // Emulate single-buffering - BOOL bDoubleBuffer; - BOOL bDepthBuffer; - int iZBufferPF; // Index of Zbuffer pixel format - - // Vertex buffer: one-to-one correlation with Mesa's vertex buffer. - // This will be filled by our setup function (see d3dvsetup.c) - DGL_TLvertex gWin[VB_SIZE]; // Transformed and lit vertices -// DGL_Lvertex gObj[VB_SIZE]; // Lit vertices in object coordinates. - - // Indices for DrawIndexedPrimitive. - // Clipped quads are drawn seperately, so use VB_SIZE. - // 6 indices are needed to make 2 triangles for each possible quad -// WORD wIndices[(VB_SIZE / 4) * 6]; - WORD wIndices[32768]; - - // - // Device driver vars: - // - BOOL bAllocated; - BOOL bFullscreen; // Is this a fullscreen context? - BOOL bSceneStarted; // Has a lpDev->BeginScene been issued? - BOOL bCanRender; // Flag: states whether rendering is OK - BOOL bFrameStarted; // Has frame update started at all? - - // DirectX COM interfaces, postfixed with the interface number - IDirectDraw *lpDD1; - IDirectDraw4 *lpDD4; - IDirect3D3 *lpD3D3; - IDirect3DDevice3 *lpDev3; - IDirect3DViewport3 *lpViewport3; - IDirectDrawSurface4 *lpFront4; - IDirectDrawSurface4 *lpBack4; - IDirectDrawSurface4 *lpDepth4; - - // Vertex buffers - BOOL bD3DPipeline; // True if using D3D geometry pipeline - IDirect3DVertexBuffer *m_vbuf; // Unprocessed vertices - IDirect3DVertexBuffer *m_pvbuf; // Processed vertices ready to be rendered - - D3DTEXTUREOP ColorOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing - D3DTEXTUREOP AlphaOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing - struct gl_texture_object *tObj[MAX_TEXTURE_UNITS]; - - DDCAPS ddCaps; // DirectDraw caps - D3DDEVICEDESC D3DDevDesc; // Direct3D Device description - - DDPIXELFORMAT ddpfRender; // Pixel format of the render buffer - DDPIXELFORMAT ddpfDepth; // Pixel format of the depth buffer - - BOOL bStencil; // TRUE is this context has stencil - - PX_packFunc fnPackFunc; // Pixel packing function for SW - PX_unpackFunc fnUnpackFunc; // Pixel unpacking function for SW - PX_packSpanFunc fnPackSpanFunc; // Pixel span packer - - D3DVIEWPORT2 d3dViewport; // D3D Viewport object - - D3DCULL cullmode; // Direct3D cull mode - D3DCOLOR curcolor; // Current color - DWORD dwColorPF; // Current color, in format of target surface - D3DCOLOR d3dClearColor; // Clear color - D3DCOLOR ConstantColor; // For flat shading - DWORD dwClearColorPF; // Clear color, in format of target surface - BOOL bGDIEraseBkgnd; // GDI Erase Background command - - // Primitive caches -// DGL_vertex LineCache[DGL_MAX_LINE_VERTS]; -// DGL_vertex TriCache[DGL_MAX_TRI_VERTS]; -// DWORD dwNextLineVert; -// DWORD dwNextTriVert; - - // Window information - HWND hWnd; // Window handle - HDC hDC; // Windows' Device Context of the window - DWORD dwWidth; // Window width - DWORD dwHeight; // Window height - DWORD dwBPP; // Window bits-per-pixel; - RECT rcScreenRect; // Screen rectangle - DWORD dwModeWidth; // Display mode width - DWORD dwModeHeight; // Display mode height - float dvClipX; - float dvClipY; - LONG lpfnWndProc; // window message handler function - - // Shared texture palette - IDirectDrawPalette *lpGlobalPalette; - - // Usage counters. - // One of these counters will be incremented when we choose - // between hardware and software rendering functions. -// DWORD dwHWUsageCount; // Hardware usage count -// DWORD dwSWUsageCount; // Software usage count - - // Texture state flags. -// BOOL m_texturing; // TRUE is texturing -// BOOL m_mtex; // TRUE if multitexture -// BOOL m_texHandleValid; // TRUE if tex state valid - - // Renderstate caches to ensure no redundant state changes - DWORD dwRS[256]; // Renderstates - DWORD dwTSS[2][24]; // Texture-stage states - LPDIRECT3DTEXTURE2 lpTex[2]; // Texture (1 per stage) - - DWORD dwMaxTextureSize; // Max texture size: - // clamped to 1024. - -} DGL_ctx; -#endif // _USE_GLD3_WGL - -/*------------------------- Function Prototypes ---------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -HHOOK hKeyHook; -LRESULT CALLBACK dglKeyProc(int code,WPARAM wParam,LPARAM lParam); - -void dglInitContextState(); -void dglDeleteContextState(); -BOOL dglIsValidContext(HGLRC a); -DGL_ctx* dglGetContextAddress(const HGLRC a); -HDC dglGetCurrentDC(void); -HGLRC dglGetCurrentContext(void); -HGLRC dglCreateContext(HDC a, const DGL_pixelFormat *lpPF); -BOOL dglMakeCurrent(HDC a, HGLRC b); -BOOL dglDeleteContext(HGLRC a); -BOOL dglSwapBuffers(HDC hDC); - -#ifdef __cplusplus -} -#endif - -#endif +/**************************************************************************** +* +* 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 (Win32) +* +* Description: OpenGL context handling. +* +****************************************************************************/ + +#ifndef __DGLCONTEXT_H +#define __DGLCONTEXT_H + +// Disable compiler complaints about DLL linkage +#pragma warning (disable:4273) + +// Macros to control compilation +#ifndef STRICT +#define STRICT +#endif // STRICT +#define WIN32_LEAN_AND_MEAN +#include +#include + +#ifdef _USE_GLD3_WGL + #include "dglmacros.h" + #include "dglglobals.h" + #include "pixpack.h" + #include "ddlog.h" + #include "dglpf.h" + #include "context.h" // Mesa context +#else + #include + #include + + #include "dglmacros.h" + #include "dglglobals.h" + #include "pixpack.h" + #include "ddlog.h" + #include "dglpf.h" + #include "d3dvertex.h" + + #include "DirectGL.h" + + #include "context.h" // Mesa context + #include "vb.h" // Mesa vertex buffer +#endif // _USE_GLD3_WGL + +/*---------------------- Macros and type definitions ----------------------*/ + +// TODO: Use a list instead of this constant! +#define DGL_MAX_CONTEXTS 32 + +// Structure for describing an OpenGL context +#ifdef _USE_GLD3_WGL +typedef struct { + BOOL bHasBeenCurrent; + DGL_pixelFormat *lpPF; + + // Pointer to private driver data (this also contains the drawable). + void *glPriv; + + // Mesa vars: + struct gl_context *glCtx; // The core Mesa context + struct gl_config *glVis; // Describes the color buffer + struct gl_framebuffer *glBuffer; // Ancillary buffers + + GLuint ClearIndex; + GLuint CurrentIndex; + GLubyte ClearColor[4]; + GLubyte CurrentColor[4]; + + BOOL EmulateSingle; // Emulate single-buffering + BOOL bDoubleBuffer; + BOOL bDepthBuffer; + + // Shared driver vars: + BOOL bAllocated; + BOOL bFullscreen; // Is this a fullscreen context? + BOOL bSceneStarted; // Has a lpDev->BeginScene been issued? + BOOL bCanRender; // Flag: states whether rendering is OK + BOOL bFrameStarted; // Has frame update started at all? + BOOL bStencil; // TRUE if this context has stencil + BOOL bGDIEraseBkgnd; // GDI Erase Background command + + // Window information + HWND hWnd; // Window handle + HDC hDC; // Windows' Device Context of the window + DWORD dwWidth; // Window width + DWORD dwHeight; // Window height + DWORD dwBPP; // Window bits-per-pixel; + RECT rcScreenRect; // Screen rectangle + DWORD dwModeWidth; // Display mode width + DWORD dwModeHeight; // Display mode height + float dvClipX; + float dvClipY; + LONG lpfnWndProc; // window message handler function + +} DGL_ctx; + +#define GLD_context DGL_ctx +#define GLD_GET_CONTEXT(c) (GLD_context*)(c)->DriverCtx + +#else // _USE_GLD3_WGL + +typedef struct { + BOOL bHasBeenCurrent; + DGL_pixelFormat *lpPF; + // + // Mesa context vars: + // + struct gl_context *glCtx; // The core Mesa context + struct gl_config *glVis; // Describes the color buffer + struct gl_framebuffer *glBuffer; // Ancillary buffers + + GLuint ClearIndex; + GLuint CurrentIndex; + GLubyte ClearColor[4]; + GLubyte CurrentColor[4]; + + BOOL EmulateSingle; // Emulate single-buffering + BOOL bDoubleBuffer; + BOOL bDepthBuffer; + int iZBufferPF; // Index of Zbuffer pixel format + + // Vertex buffer: one-to-one correlation with Mesa's vertex buffer. + // This will be filled by our setup function (see d3dvsetup.c) + DGL_TLvertex gWin[VB_SIZE]; // Transformed and lit vertices +// DGL_Lvertex gObj[VB_SIZE]; // Lit vertices in object coordinates. + + // Indices for DrawIndexedPrimitive. + // Clipped quads are drawn seperately, so use VB_SIZE. + // 6 indices are needed to make 2 triangles for each possible quad +// WORD wIndices[(VB_SIZE / 4) * 6]; + WORD wIndices[32768]; + + // + // Device driver vars: + // + BOOL bAllocated; + BOOL bFullscreen; // Is this a fullscreen context? + BOOL bSceneStarted; // Has a lpDev->BeginScene been issued? + BOOL bCanRender; // Flag: states whether rendering is OK + BOOL bFrameStarted; // Has frame update started at all? + + // DirectX COM interfaces, postfixed with the interface number + IDirectDraw *lpDD1; + IDirectDraw4 *lpDD4; + IDirect3D3 *lpD3D3; + IDirect3DDevice3 *lpDev3; + IDirect3DViewport3 *lpViewport3; + IDirectDrawSurface4 *lpFront4; + IDirectDrawSurface4 *lpBack4; + IDirectDrawSurface4 *lpDepth4; + + // Vertex buffers + BOOL bD3DPipeline; // True if using D3D geometry pipeline + IDirect3DVertexBuffer *m_vbuf; // Unprocessed vertices + IDirect3DVertexBuffer *m_pvbuf; // Processed vertices ready to be rendered + + D3DTEXTUREOP ColorOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing + D3DTEXTUREOP AlphaOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing + struct gl_texture_object *tObj[MAX_TEXTURE_UNITS]; + + DDCAPS ddCaps; // DirectDraw caps + D3DDEVICEDESC D3DDevDesc; // Direct3D Device description + + DDPIXELFORMAT ddpfRender; // Pixel format of the render buffer + DDPIXELFORMAT ddpfDepth; // Pixel format of the depth buffer + + BOOL bStencil; // TRUE is this context has stencil + + PX_packFunc fnPackFunc; // Pixel packing function for SW + PX_unpackFunc fnUnpackFunc; // Pixel unpacking function for SW + PX_packSpanFunc fnPackSpanFunc; // Pixel span packer + + D3DVIEWPORT2 d3dViewport; // D3D Viewport object + + D3DCULL cullmode; // Direct3D cull mode + D3DCOLOR curcolor; // Current color + DWORD dwColorPF; // Current color, in format of target surface + D3DCOLOR d3dClearColor; // Clear color + D3DCOLOR ConstantColor; // For flat shading + DWORD dwClearColorPF; // Clear color, in format of target surface + BOOL bGDIEraseBkgnd; // GDI Erase Background command + + // Primitive caches +// DGL_vertex LineCache[DGL_MAX_LINE_VERTS]; +// DGL_vertex TriCache[DGL_MAX_TRI_VERTS]; +// DWORD dwNextLineVert; +// DWORD dwNextTriVert; + + // Window information + HWND hWnd; // Window handle + HDC hDC; // Windows' Device Context of the window + DWORD dwWidth; // Window width + DWORD dwHeight; // Window height + DWORD dwBPP; // Window bits-per-pixel; + RECT rcScreenRect; // Screen rectangle + DWORD dwModeWidth; // Display mode width + DWORD dwModeHeight; // Display mode height + float dvClipX; + float dvClipY; + LONG lpfnWndProc; // window message handler function + + // Shared texture palette + IDirectDrawPalette *lpGlobalPalette; + + // Usage counters. + // One of these counters will be incremented when we choose + // between hardware and software rendering functions. +// DWORD dwHWUsageCount; // Hardware usage count +// DWORD dwSWUsageCount; // Software usage count + + // Texture state flags. +// BOOL m_texturing; // TRUE is texturing +// BOOL m_mtex; // TRUE if multitexture +// BOOL m_texHandleValid; // TRUE if tex state valid + + // Renderstate caches to ensure no redundant state changes + DWORD dwRS[256]; // Renderstates + DWORD dwTSS[2][24]; // Texture-stage states + LPDIRECT3DTEXTURE2 lpTex[2]; // Texture (1 per stage) + + DWORD dwMaxTextureSize; // Max texture size: + // clamped to 1024. + +} DGL_ctx; +#endif // _USE_GLD3_WGL + +/*------------------------- Function Prototypes ---------------------------*/ + +#ifdef __cplusplus +extern "C" { +#endif + +HHOOK hKeyHook; +LRESULT CALLBACK dglKeyProc(int code,WPARAM wParam,LPARAM lParam); + +void dglInitContextState(); +void dglDeleteContextState(); +BOOL dglIsValidContext(HGLRC a); +DGL_ctx* dglGetContextAddress(const HGLRC a); +HDC dglGetCurrentDC(void); +HGLRC dglGetCurrentContext(void); +HGLRC dglCreateContext(HDC a, const DGL_pixelFormat *lpPF); +BOOL dglMakeCurrent(HDC a, HGLRC b); +BOOL dglDeleteContext(HGLRC a); +BOOL dglSwapBuffers(HDC hDC); + +#ifdef __cplusplus +} +#endif + +#endif -- cgit v1.2.3