| @@ -37,7 +37,7 @@ | |||
| #include "dglcontext.h" | |||
| // Get compile errors without this. KeithH | |||
| #include "scitech.h" // ibool, etc. | |||
| //#include "scitech.h" // ibool, etc. | |||
| #ifdef _USE_GLD3_WGL | |||
| #include "gld_driver.h" | |||
| @@ -517,12 +517,12 @@ LRESULT CALLBACK dglKeyProc( | |||
| HGLRC hGLRC = NULL; | |||
| DGL_ctx* lpCtx = NULL; | |||
| int cmd = 0, dx1 = 0, dx2 = 0, i; | |||
| static ibool bAltPressed = false; | |||
| static ibool bCtrlPressed = false; | |||
| static ibool bShiftPressed = false; | |||
| static BOOL bAltPressed = FALSE; | |||
| static BOOL bCtrlPressed = FALSE; | |||
| static BOOL bShiftPressed = FALSE; | |||
| RECT r, rf, rc; | |||
| POINT pt; | |||
| ibool bForceReshape = false; | |||
| BOOL bForceReshape = FALSE; | |||
| return CallNextHookEx(hKeyHook, code, wParam, lParam); | |||
| } | |||
| @@ -39,7 +39,7 @@ | |||
| #include "gld_driver.h" | |||
| #endif | |||
| #include "glu.h" // MUST USE MICROSOFT'S GLU32! | |||
| #include "gl/glu.h" // MUST USE MICROSOFT'S GLU32! | |||
| #ifndef _USE_GLD3_WGL | |||
| extern DGL_mesaFuncs mesaFuncs; | |||
| @@ -43,8 +43,8 @@ | |||
| #include "dllmain.h" | |||
| #include "snap/graphics.h" | |||
| #include "drvlib/os/os.h" | |||
| //#include "snap/graphics.h" | |||
| //#include "drvlib/os/os.h" | |||
| #ifdef _USE_GLD3_WGL | |||
| typedef void (APIENTRY *LPDGLSPLASHSCREEN)(int, int, char*); | |||
| @@ -390,6 +390,7 @@ BOOL dllReadRegistry( | |||
| if (bRegistryError || !bSuccess) | |||
| return FALSE; | |||
| else | |||
| return TRUE; | |||
| #undef REG_READ_DWORD | |||
| @@ -568,7 +569,7 @@ BOOL dglInitDriver(void) | |||
| "Direct3D RGB SW", | |||
| "Direct3D HW", | |||
| }; | |||
| static ibool bWarnOnce = false; | |||
| static BOOL bWarnOnce = FALSE; | |||
| // Already initialized? | |||
| if (bInitialized) | |||
| @@ -586,7 +587,7 @@ BOOL dglInitDriver(void) | |||
| "Please run the configuration program\n" | |||
| "before using GLDirect with applications.\n", | |||
| "GLDirect", MB_OK | MB_ICONWARNING); | |||
| bWarnOnce = true; | |||
| bWarnOnce = TRUE; | |||
| return FALSE; | |||
| } | |||
| @@ -47,7 +47,7 @@ | |||
| #include "DirectGL.h" | |||
| #endif // _USE_GLD3_WGL | |||
| #include "gldirect/regkeys.h" | |||
| //#include "gldirect/regkeys.h" | |||
| #include "dglglobals.h" | |||
| #include "ddlog.h" | |||
| #ifndef _USE_GLD3_WGL | |||
| @@ -69,10 +69,10 @@ D3DX_SURFACEFORMAT _gldD3DXFormatFromSurface(IDirectDrawSurface7 *pSurface); | |||
| static void gld_fetch_1d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -81,9 +81,22 @@ static void gld_fetch_1d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -95,9 +108,23 @@ static void gld_fetch_1d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -109,6 +136,20 @@ static void gld_fetch_1d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -131,10 +172,10 @@ static void gld_fetch_1d_texel_X4R4G4B4( | |||
| static void gld_fetch_2d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -143,9 +184,22 @@ static void gld_fetch_2d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -157,9 +211,23 @@ static void gld_fetch_2d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -171,6 +239,20 @@ static void gld_fetch_2d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -197,10 +279,10 @@ static void gld_fetch_2d_texel_X4R4G4B4( | |||
| static void gld_fetch_3d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -209,9 +291,22 @@ static void gld_fetch_3d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -223,9 +318,23 @@ static void gld_fetch_3d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -237,6 +346,20 @@ static void gld_fetch_3d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -249,6 +372,7 @@ static void gld_fetch_3d_texel_X4R4G4B4( | |||
| const struct gl_texture_format _gld_texformat_X8R8G8B8 = { | |||
| MESA_FORMAT_ARGB8888, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 8, /* RedBits */ | |||
| 8, /* GreenBits */ | |||
| 8, /* BlueBits */ | |||
| @@ -258,14 +382,19 @@ const struct gl_texture_format _gld_texformat_X8R8G8B8 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 4, /* TexelBytes */ | |||
| _mesa_texstore_argb8888, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X8R8G8B8, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X8R8G8B8, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X8R8G8B8, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X8R8G8B8, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X8R8G8B8, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X8R8G8B8, /* FetchTexel3Df */ | |||
| }; | |||
| const struct gl_texture_format _gld_texformat_X1R5G5B5 = { | |||
| MESA_FORMAT_ARGB1555, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 5, /* RedBits */ | |||
| 5, /* GreenBits */ | |||
| 5, /* BlueBits */ | |||
| @@ -275,14 +404,19 @@ const struct gl_texture_format _gld_texformat_X1R5G5B5 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 2, /* TexelBytes */ | |||
| _mesa_texstore_argb1555, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X1R5G5B5, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X1R5G5B5, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X1R5G5B5, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X1R5G5B5, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X1R5G5B5, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X1R5G5B5, /* FetchTexel3Df */ | |||
| }; | |||
| const struct gl_texture_format _gld_texformat_X4R4G4B4 = { | |||
| MESA_FORMAT_ARGB4444, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 4, /* RedBits */ | |||
| 4, /* GreenBits */ | |||
| 4, /* BlueBits */ | |||
| @@ -292,9 +426,13 @@ const struct gl_texture_format _gld_texformat_X4R4G4B4 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 2, /* TexelBytes */ | |||
| _mesa_texstore_argb4444, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X4R4G4B4, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X4R4G4B4, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X4R4G4B4, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X4R4G4B4, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X4R4G4B4, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X4R4G4B4, /* FetchTexel3Df */ | |||
| }; | |||
| //--------------------------------------------------------------------------- | |||
| @@ -887,6 +1025,10 @@ void gld_DrawPixels_DX7( | |||
| D3DX_SURFACEFORMAT sf; | |||
| DWORD dwMipmaps; | |||
| const struct gl_texture_format *MesaFormat; | |||
| MesaFormat = _mesa_choose_tex_format(ctx, format, format, type); | |||
| gldCtx = GLD_GET_CONTEXT(ctx); | |||
| gld = GLD_GET_DX7_DRIVER(gldCtx); | |||
| @@ -923,7 +1065,7 @@ void gld_DrawPixels_DX7( | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| MesaFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_RGBA, | |||
| @@ -1070,9 +1212,9 @@ void gld_ReadPixels_DX7( | |||
| // We need to flip the data. Yuck. | |||
| // Perhaps Mesa has a span packer we can use in future... | |||
| for (i=0; i<height; i++) { | |||
| BYTE *pDestRow = (BYTE*)_mesa_image_address2d(pack, dest, width, height, format, type, 0, i, 0); | |||
| BYTE *pDestRow = (BYTE*)_mesa_image_address(2,pack, dest, width, height, format, type, 0, i, 0); | |||
| BYTE *pSrcRow = (BYTE*)d3dLockedRect.pBits + (d3dLockedRect.Pitch * (height-i-1)); | |||
| _mesa_transfer_teximage( | |||
| texImage->TexFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_RGBA, // base format | |||
| @@ -1295,7 +1437,7 @@ void gld_Bitmap_DX7( | |||
| for (i=0; i<height; i++) { | |||
| GLubyte byte; | |||
| pBits = (D3DCOLOR*)((BYTE*)ddsd.lpSurface + (i*ddsd.lPitch)); | |||
| src = (const GLubyte *) _mesa_image_address2d( | |||
| src = (const GLubyte *) _mesa_image_address(2, | |||
| &ctx->DefaultPacking, pTempBitmap, width, height, GL_COLOR_INDEX, GL_BITMAP, | |||
| 0, i, 0); | |||
| for (j=0; j<(width>>3); j++) { | |||
| @@ -1527,7 +1669,7 @@ void gld_TexImage2D_DX7( | |||
| return; | |||
| } | |||
| // unpack image, apply transfer ops and store in tempImage | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| &_mesa_texformat_argb8888, // dest format | |||
| tempImage, | |||
| width, height, 1, 0, 0, 0, | |||
| @@ -1633,7 +1775,7 @@ void gld_TexImage2D_DX7( | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| texImage->TexFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| texImage->Format, | |||
| @@ -1705,7 +1847,7 @@ void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, | |||
| } | |||
| // unpack image, apply transfer ops and store in tempImage | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| &_mesa_texformat_argb8888, // dest format | |||
| tempImage, | |||
| width, height, 1, 0, 0, 0, | |||
| @@ -1802,7 +1944,7 @@ void gld_TexSubImage2D_DX7( GLcontext *ctx, GLenum target, GLint level, | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| _gldMesaFormatForD3DFormat(_gldD3DXFormatFromSurface(pSurface)), | |||
| ddsd.lpSurface, | |||
| width, height, 1, | |||
| @@ -1,4 +1,4 @@ | |||
| /* $Id: gld_vb_mesa_render_dx7.c,v 1.3 2005/04/14 16:58:25 bencrossman Exp $ */ | |||
| /* $Id: gld_vb_mesa_render_dx7.c,v 1.4 2005/04/15 17:17:47 bencrossman Exp $ */ | |||
| /* | |||
| * Mesa 3-D graphics library | |||
| @@ -420,40 +420,7 @@ static void _gld_mesa_render_stage_check( | |||
| GLcontext *ctx, | |||
| struct tnl_pipeline_stage *stage) | |||
| { | |||
| GLuint inputs = VERT_BIT_CLIP; | |||
| GLuint i; | |||
| if (ctx->Visual.rgbMode) { | |||
| inputs |= VERT_BIT_COLOR0; | |||
| if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) | |||
| inputs |= VERT_BIT_COLOR1; //VERT_BIT_SPEC_RGB; | |||
| //if (ctx->Texture._ReallyEnabled) { | |||
| for (i=0; i<ctx->Const.MaxTextureUnits; i++) { | |||
| if (ctx->Texture.Unit[i]._ReallyEnabled) | |||
| inputs |= VERT_BIT_TEX(i); | |||
| } | |||
| //} | |||
| } else { | |||
| inputs |= VERT_BIT_INDEX; | |||
| } | |||
| if (ctx->Point._Attenuated) | |||
| inputs |= VERT_BIT_POINT_SIZE; | |||
| /* How do drivers turn this off? | |||
| */ | |||
| if (ctx->Fog.Enabled) | |||
| inputs |= VERT_BIT_FOG; // VERT_FOG_COORD; | |||
| if (ctx->_TriangleCaps & DD_TRI_UNFILLED) | |||
| inputs |= VERT_BIT_EDGEFLAG; | |||
| if (ctx->RenderMode==GL_FEEDBACK) | |||
| inputs |= VERT_BITS_TEX_ANY; | |||
| stage->inputs = inputs; | |||
| stage->inputs = TNL_CONTEXT(ctx)->render_inputs; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| @@ -256,7 +256,7 @@ HRESULT _gldCreatePrimitiveBuffer( | |||
| // If CVA (Compiled Vertex Array) is used by an OpenGL app, then we | |||
| // will need enough vertices to cater for Mesa::Const.MaxArrayLockSize. | |||
| // We'll use IMM_SIZE if it's larger (which it should not be). | |||
| dwMaxVertices = (IMM_SIZE < MAX_ARRAY_LOCK_SIZE) ? MAX_ARRAY_LOCK_SIZE : IMM_SIZE; | |||
| dwMaxVertices = MAX_ARRAY_LOCK_SIZE; | |||
| // Max vertex buffer size limited in DX7. (DaveM) | |||
| if (dwMaxVertices*9 > D3DMAXNUMVERTICES) | |||
| @@ -67,10 +67,10 @@ | |||
| static void gld_fetch_1d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -79,9 +79,22 @@ static void gld_fetch_1d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -93,9 +106,23 @@ static void gld_fetch_1d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -107,6 +134,20 @@ static void gld_fetch_1d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -129,10 +170,10 @@ static void gld_fetch_1d_texel_X4R4G4B4( | |||
| static void gld_fetch_2d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -141,9 +182,22 @@ static void gld_fetch_2d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -155,9 +209,23 @@ static void gld_fetch_2d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -169,6 +237,20 @@ static void gld_fetch_2d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -195,10 +277,10 @@ static void gld_fetch_2d_texel_X4R4G4B4( | |||
| static void gld_fetch_3d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -207,9 +289,22 @@ static void gld_fetch_3d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -221,9 +316,23 @@ static void gld_fetch_3d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -235,6 +344,20 @@ static void gld_fetch_3d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -247,7 +370,7 @@ static void gld_fetch_3d_texel_X4R4G4B4( | |||
| const struct gl_texture_format _gld_texformat_X8R8G8B8 = { | |||
| MESA_FORMAT_ARGB8888, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| // GL_UNSIGNED_BYTE, /* Type */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 8, /* RedBits */ | |||
| 8, /* GreenBits */ | |||
| 8, /* BlueBits */ | |||
| @@ -257,15 +380,19 @@ const struct gl_texture_format _gld_texformat_X8R8G8B8 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 4, /* TexelBytes */ | |||
| _mesa_texstore_argb8888, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X8R8G8B8, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X8R8G8B8, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X8R8G8B8, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X8R8G8B8, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X8R8G8B8, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X8R8G8B8, /* FetchTexel3Df */ | |||
| }; | |||
| const struct gl_texture_format _gld_texformat_X1R5G5B5 = { | |||
| MESA_FORMAT_ARGB1555, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| // GL_UNSIGNED_SHORT_1_5_5_5_REV, /* Type */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 5, /* RedBits */ | |||
| 5, /* GreenBits */ | |||
| 5, /* BlueBits */ | |||
| @@ -275,15 +402,19 @@ const struct gl_texture_format _gld_texformat_X1R5G5B5 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 2, /* TexelBytes */ | |||
| _mesa_texstore_argb1555, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X1R5G5B5, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X1R5G5B5, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X1R5G5B5, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X1R5G5B5, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X1R5G5B5, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X1R5G5B5, /* FetchTexel3Df */ | |||
| }; | |||
| const struct gl_texture_format _gld_texformat_X4R4G4B4 = { | |||
| MESA_FORMAT_ARGB4444, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| // GL_UNSIGNED_SHORT_4_4_4_4_REV, /* Type */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 4, /* RedBits */ | |||
| 4, /* GreenBits */ | |||
| 4, /* BlueBits */ | |||
| @@ -293,9 +424,13 @@ const struct gl_texture_format _gld_texformat_X4R4G4B4 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 2, /* TexelBytes */ | |||
| _mesa_texstore_argb4444, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X4R4G4B4, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X4R4G4B4, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X4R4G4B4, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X4R4G4B4, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X4R4G4B4, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X4R4G4B4, /* FetchTexel3Df */ | |||
| }; | |||
| //--------------------------------------------------------------------------- | |||
| @@ -860,6 +995,8 @@ void gld_DrawPixels_DX8( | |||
| HRESULT hr; | |||
| D3DLOCKED_RECT d3dLockedRect; | |||
| const struct gl_texture_format *MesaFormat; | |||
| gldCtx = GLD_GET_CONTEXT(ctx); | |||
| gld = GLD_GET_DX8_DRIVER(gldCtx); | |||
| @@ -884,8 +1021,10 @@ void gld_DrawPixels_DX8( | |||
| return; | |||
| } | |||
| MesaFormat = _mesa_choose_tex_format(ctx, format, format, type); | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| MesaFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_RGBA, | |||
| @@ -1031,9 +1170,9 @@ void gld_ReadPixels_DX8( | |||
| // We need to flip the data. Yuck. | |||
| // Perhaps Mesa has a span packer we can use in future... | |||
| for (i=0; i<height; i++) { | |||
| BYTE *pDestRow = (BYTE*)_mesa_image_address2d(pack, dest, width, height, format, type, 0, i, 0); | |||
| BYTE *pDestRow = (BYTE*)_mesa_image_address(2,pack, dest, width, height, format, type, 0, i, 0); | |||
| BYTE *pSrcRow = (BYTE*)d3dLockedRect.pBits + (d3dLockedRect.Pitch * (height-i-1)); | |||
| _mesa_transfer_teximage( | |||
| MesaFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_RGBA, // base format | |||
| @@ -1203,7 +1342,7 @@ void gld_Bitmap_DX8( | |||
| for (i=0; i<height; i++) { | |||
| GLubyte byte; | |||
| pBits = (D3DCOLOR*)((BYTE*)d3dLockedRect.pBits + (i*d3dLockedRect.Pitch)); | |||
| src = (const GLubyte *) _mesa_image_address2d( | |||
| src = (const GLubyte *) _mesa_image_address(2, | |||
| &ctx->DefaultPacking, pTempBitmap, width, height, GL_COLOR_INDEX, GL_BITMAP, | |||
| 0, i, 0); | |||
| for (j=0; j<(width>>3); j++) { | |||
| @@ -1227,7 +1366,7 @@ void gld_Bitmap_DX8( | |||
| /* | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| texImage->TexFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_BITMAP, | |||
| @@ -1432,7 +1571,7 @@ void gld_TexImage2D_DX8( | |||
| return; | |||
| } | |||
| // unpack image, apply transfer ops and store in tempImage | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| &_mesa_texformat_argb8888, // dest format | |||
| tempImage, | |||
| width, height, 1, 0, 0, 0, | |||
| @@ -1520,7 +1659,7 @@ void gld_TexImage2D_DX8( | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| texImage->TexFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| texImage->Format, | |||
| @@ -1592,7 +1731,7 @@ void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, | |||
| } | |||
| // unpack image, apply transfer ops and store in tempImage | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| &_mesa_texformat_argb8888, // dest format | |||
| tempImage, | |||
| width, height, 1, 0, 0, 0, | |||
| @@ -1673,7 +1812,7 @@ void gld_TexSubImage2D_DX8( GLcontext *ctx, GLenum target, GLint level, | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| _gldMesaFormatForD3DFormat(d3dsd.Format), | |||
| d3dLockedRect.pBits, | |||
| width, height, 1, | |||
| @@ -1,4 +1,4 @@ | |||
| /* $Id: gld_vb_mesa_render_dx8.c,v 1.3 2005/04/14 16:58:25 bencrossman Exp $ */ | |||
| /* $Id: gld_vb_mesa_render_dx8.c,v 1.4 2005/04/15 17:17:47 bencrossman Exp $ */ | |||
| /* | |||
| * Mesa 3-D graphics library | |||
| @@ -443,40 +443,7 @@ static void _gld_mesa_render_stage_check( | |||
| GLcontext *ctx, | |||
| struct tnl_pipeline_stage *stage) | |||
| { | |||
| GLuint inputs = VERT_BIT_CLIP; | |||
| GLuint i; | |||
| if (ctx->Visual.rgbMode) { | |||
| inputs |= VERT_BIT_COLOR0; | |||
| if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) | |||
| inputs |= VERT_BIT_COLOR1; //VERT_BIT_SPEC_RGB; | |||
| //if (ctx->Texture._ReallyEnabled) { | |||
| for (i=0; i<ctx->Const.MaxTextureUnits; i++) { | |||
| if (ctx->Texture.Unit[i]._ReallyEnabled) | |||
| inputs |= VERT_BIT_TEX(i); | |||
| } | |||
| //} | |||
| } else { | |||
| inputs |= VERT_BIT_INDEX; | |||
| } | |||
| if (ctx->Point._Attenuated) | |||
| inputs |= VERT_BIT_POINT_SIZE; | |||
| /* How do drivers turn this off? | |||
| */ | |||
| if (ctx->Fog.Enabled) | |||
| inputs |= VERT_BIT_FOG; // VERT_FOG_COORD; | |||
| if (ctx->_TriangleCaps & DD_TRI_UNFILLED) | |||
| inputs |= VERT_BIT_EDGEFLAG; | |||
| if (ctx->RenderMode==GL_FEEDBACK) | |||
| inputs |= VERT_BITS_TEX_ANY; | |||
| stage->inputs = inputs; | |||
| stage->inputs = TNL_CONTEXT(ctx)->render_inputs; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| @@ -245,7 +245,7 @@ HRESULT _gldCreatePrimitiveBuffer( | |||
| // If CVA (Compiled Vertex Array) is used by an OpenGL app, then we | |||
| // will need enough vertices to cater for Mesa::Const.MaxArrayLockSize. | |||
| // We'll use IMM_SIZE if it's larger (which it should not be). | |||
| dwMaxVertices = (IMM_SIZE < MAX_ARRAY_LOCK_SIZE) ? MAX_ARRAY_LOCK_SIZE : IMM_SIZE; | |||
| dwMaxVertices = MAX_ARRAY_LOCK_SIZE; | |||
| // Now calculate how many vertices to allow for in total | |||
| // 1 per point, 2 per line, 6 per quad = 9 | |||
| @@ -67,10 +67,10 @@ | |||
| static void gld_fetch_1d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -79,9 +79,22 @@ static void gld_fetch_1d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -93,9 +106,23 @@ static void gld_fetch_1d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -107,6 +134,20 @@ static void gld_fetch_1d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_1d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -129,10 +170,10 @@ static void gld_fetch_1d_texel_X4R4G4B4( | |||
| static void gld_fetch_2d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -141,9 +182,22 @@ static void gld_fetch_2d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -155,9 +209,23 @@ static void gld_fetch_2d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -169,6 +237,20 @@ static void gld_fetch_2d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_2d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -195,10 +277,10 @@ static void gld_fetch_2d_texel_X4R4G4B4( | |||
| static void gld_fetch_3d_texel_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| GLchan *rgba = (GLchan *) texel; | |||
| GLchan *rgba = (GLchan *)texel; | |||
| rgba[RCOMP] = src[2]; | |||
| rgba[GCOMP] = src[1]; | |||
| rgba[BCOMP] = src[0]; | |||
| @@ -207,9 +289,22 @@ static void gld_fetch_3d_texel_X8R8G8B8( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X8R8G8B8( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 ); | |||
| texel[RCOMP] = CHAN_TO_FLOAT(src[0]); | |||
| texel[GCOMP] = CHAN_TO_FLOAT(src[1]); | |||
| texel[BCOMP] = CHAN_TO_FLOAT(src[2]); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -221,9 +316,23 @@ static void gld_fetch_3d_texel_X1R5G5B5( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X1R5G5B5( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLvoid *texel ) | |||
| GLint i, GLint j, GLint k, GLchan *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLchan *rgba = (GLchan *) texel; GLushort s = *src; | |||
| @@ -235,6 +344,20 @@ static void gld_fetch_3d_texel_X4R4G4B4( | |||
| //--------------------------------------------------------------------------- | |||
| static void gld_fetch_3d_texel_f_X4R4G4B4( | |||
| const struct gl_texture_image *texImage, | |||
| GLint i, GLint j, GLint k, GLfloat *texel ) | |||
| { | |||
| const GLushort *src = USHORT_SRC( texImage, i, j, k ); | |||
| GLushort s = *src; | |||
| texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf ); | |||
| texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf ); | |||
| texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf ); | |||
| texel[ACOMP] = 1.f; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| #undef CHAN_SRC | |||
| #undef UBYTE_SRC | |||
| #undef USHORT_SRC | |||
| @@ -247,7 +370,7 @@ static void gld_fetch_3d_texel_X4R4G4B4( | |||
| const struct gl_texture_format _gld_texformat_X8R8G8B8 = { | |||
| MESA_FORMAT_ARGB8888, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| // GL_UNSIGNED_BYTE, /* Type */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 8, /* RedBits */ | |||
| 8, /* GreenBits */ | |||
| 8, /* BlueBits */ | |||
| @@ -257,15 +380,19 @@ const struct gl_texture_format _gld_texformat_X8R8G8B8 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 4, /* TexelBytes */ | |||
| _mesa_texstore_argb8888, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X8R8G8B8, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X8R8G8B8, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X8R8G8B8, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X8R8G8B8, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X8R8G8B8, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X8R8G8B8, /* FetchTexel3Df */ | |||
| }; | |||
| const struct gl_texture_format _gld_texformat_X1R5G5B5 = { | |||
| MESA_FORMAT_ARGB1555, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| // GL_UNSIGNED_SHORT_1_5_5_5_REV, /* Type */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 5, /* RedBits */ | |||
| 5, /* GreenBits */ | |||
| 5, /* BlueBits */ | |||
| @@ -275,15 +402,19 @@ const struct gl_texture_format _gld_texformat_X1R5G5B5 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 2, /* TexelBytes */ | |||
| _mesa_texstore_argb1555, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X1R5G5B5, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X1R5G5B5, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X1R5G5B5, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X1R5G5B5, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X1R5G5B5, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X1R5G5B5, /* FetchTexel3Df */ | |||
| }; | |||
| const struct gl_texture_format _gld_texformat_X4R4G4B4 = { | |||
| MESA_FORMAT_ARGB4444, /* MesaFormat */ | |||
| GL_RGBA, /* BaseFormat */ | |||
| // GL_UNSIGNED_SHORT_4_4_4_4_REV, /* Type */ | |||
| GL_UNSIGNED_NORMALIZED_ARB, /* DataType */ | |||
| 4, /* RedBits */ | |||
| 4, /* GreenBits */ | |||
| 4, /* BlueBits */ | |||
| @@ -293,9 +424,13 @@ const struct gl_texture_format _gld_texformat_X4R4G4B4 = { | |||
| 0, /* IndexBits */ | |||
| 0, /* DepthBits */ | |||
| 2, /* TexelBytes */ | |||
| _mesa_texstore_argb4444, /* StoreTexImageFunc */ | |||
| gld_fetch_1d_texel_X4R4G4B4, /* FetchTexel1D */ | |||
| gld_fetch_2d_texel_X4R4G4B4, /* FetchTexel2D */ | |||
| gld_fetch_3d_texel_X4R4G4B4, /* FetchTexel3D */ | |||
| gld_fetch_1d_texel_f_X4R4G4B4, /* FetchTexel1Df */ | |||
| gld_fetch_2d_texel_f_X4R4G4B4, /* FetchTexel2Df */ | |||
| gld_fetch_3d_texel_f_X4R4G4B4, /* FetchTexel3Df */ | |||
| }; | |||
| //--------------------------------------------------------------------------- | |||
| @@ -869,6 +1004,10 @@ void gld_DrawPixels_DX9( | |||
| HRESULT hr; | |||
| D3DLOCKED_RECT d3dLockedRect; | |||
| const struct gl_texture_format *MesaFormat; | |||
| MesaFormat = _mesa_choose_tex_format(ctx, format, format, type); | |||
| // Mesa does not currently handle this format. | |||
| if (format == GL_BGR) | |||
| return; | |||
| @@ -900,7 +1039,7 @@ void gld_DrawPixels_DX9( | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| MesaFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_RGBA, | |||
| @@ -1063,9 +1202,9 @@ void gld_ReadPixels_DX9( | |||
| // We need to flip the data. Yuck. | |||
| // Perhaps Mesa has a span packer we can use in future... | |||
| for (i=0; i<height; i++) { | |||
| BYTE *pDestRow = (BYTE*)_mesa_image_address2d(pack, dest, width, height, format, type, 0, i, 0); | |||
| BYTE *pDestRow = (BYTE*)_mesa_image_address(2,pack, dest, width, height, format, type, 0, i, 0); | |||
| BYTE *pSrcRow = (BYTE*)d3dLockedRect.pBits + (d3dLockedRect.Pitch * (height-i-1)); | |||
| _mesa_transfer_teximage( | |||
| MesaFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_RGBA, // base format | |||
| @@ -1254,7 +1393,7 @@ void gld_Bitmap_DX9( | |||
| for (i=0; i<height; i++) { | |||
| GLubyte byte; | |||
| pBits = (D3DCOLOR*)((BYTE*)d3dLockedRect.pBits + (i*d3dLockedRect.Pitch)); | |||
| src = (const GLubyte *) _mesa_image_address2d( | |||
| src = (const GLubyte *) _mesa_image_address(2, | |||
| &ctx->DefaultPacking, pTempBitmap, width, height, GL_COLOR_INDEX, GL_BITMAP, | |||
| 0, i, 0); | |||
| for (j=0; j<(width>>3); j++) { | |||
| @@ -1278,7 +1417,7 @@ void gld_Bitmap_DX9( | |||
| /* | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| texImage->TexFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| GL_BITMAP, | |||
| @@ -1483,7 +1622,7 @@ void gld_TexImage2D_DX9( | |||
| return; | |||
| } | |||
| // unpack image, apply transfer ops and store in tempImage | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| &_mesa_texformat_argb8888, // dest format | |||
| tempImage, | |||
| width, height, 1, 0, 0, 0, | |||
| @@ -1571,7 +1710,7 @@ void gld_TexImage2D_DX9( | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage( | |||
| texImage->TexFormat->StoreImage( | |||
| ctx, | |||
| 2, | |||
| texImage->Format, | |||
| @@ -1643,7 +1782,7 @@ void gld_TexSubImage2D( GLcontext *ctx, GLenum target, GLint level, | |||
| } | |||
| // unpack image, apply transfer ops and store in tempImage | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| &_mesa_texformat_argb8888, // dest format | |||
| tempImage, | |||
| width, height, 1, 0, 0, 0, | |||
| @@ -1724,7 +1863,7 @@ void gld_TexSubImage2D_DX9( GLcontext *ctx, GLenum target, GLint level, | |||
| } | |||
| // unpack image, apply transfer ops and store directly in texture | |||
| _mesa_transfer_teximage(ctx, 2, texImage->Format, | |||
| texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, | |||
| _gldMesaFormatForD3DFormat(d3dsd.Format), | |||
| d3dLockedRect.pBits, | |||
| width, height, 1, | |||
| @@ -1,4 +1,4 @@ | |||
| /* $Id: gld_vb_mesa_render_dx9.c,v 1.3 2005/04/14 16:58:25 bencrossman Exp $ */ | |||
| /* $Id: gld_vb_mesa_render_dx9.c,v 1.4 2005/04/15 17:17:47 bencrossman Exp $ */ | |||
| /* | |||
| * Mesa 3-D graphics library | |||
| @@ -440,40 +440,7 @@ static void _gld_mesa_render_stage_check( | |||
| GLcontext *ctx, | |||
| struct tnl_pipeline_stage *stage) | |||
| { | |||
| GLuint inputs = VERT_BIT_CLIP; | |||
| GLuint i; | |||
| if (ctx->Visual.rgbMode) { | |||
| inputs |= VERT_BIT_COLOR0; | |||
| if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) | |||
| inputs |= VERT_BIT_COLOR1; //VERT_BIT_SPEC_RGB; | |||
| //if (ctx->Texture._ReallyEnabled) { | |||
| for (i=0; i<ctx->Const.MaxTextureUnits; i++) { | |||
| if (ctx->Texture.Unit[i]._ReallyEnabled) | |||
| inputs |= VERT_BIT_TEX(i); | |||
| } | |||
| //} | |||
| } else { | |||
| inputs |= VERT_BIT_INDEX; | |||
| } | |||
| if (ctx->Point._Attenuated) | |||
| inputs |= VERT_BIT_POINT_SIZE; | |||
| /* How do drivers turn this off? | |||
| */ | |||
| if (ctx->Fog.Enabled) | |||
| inputs |= VERT_BIT_FOG; // VERT_FOG_COORD; | |||
| if (ctx->_TriangleCaps & DD_TRI_UNFILLED) | |||
| inputs |= VERT_BIT_EDGEFLAG; | |||
| if (ctx->RenderMode==GL_FEEDBACK) | |||
| inputs |= VERT_BITS_TEX_ANY; | |||
| stage->inputs = inputs; | |||
| stage->inputs = TNL_CONTEXT(ctx)->render_inputs; | |||
| } | |||
| //--------------------------------------------------------------------------- | |||
| @@ -258,7 +258,7 @@ HRESULT _gldCreatePrimitiveBuffer( | |||
| // If CVA (Compiled Vertex Array) is used by an OpenGL app, then we | |||
| // will need enough vertices to cater for Mesa::Const.MaxArrayLockSize. | |||
| // We'll use IMM_SIZE if it's larger (which it should not be). | |||
| dwMaxVertices = (IMM_SIZE < MAX_ARRAY_LOCK_SIZE) ? MAX_ARRAY_LOCK_SIZE : IMM_SIZE; | |||
| dwMaxVertices = MAX_ARRAY_LOCK_SIZE; | |||
| // Now calculate how many vertices to allow for in total | |||
| // 1 per point, 2 per line, 6 per quad = 9 | |||
| @@ -53,6 +53,7 @@ | |||
| #include "mtypes.h" | |||
| #include "texformat.h" | |||
| #include "texstore.h" | |||
| #include "teximage.h" | |||
| #include "array_cache/acache.h" | |||
| #include "swrast/swrast.h" | |||
| #include "swrast_setup/swrast_setup.h" | |||
| @@ -706,7 +707,7 @@ static clear(GLcontext* ctx, GLbitfield mask, | |||
| if ((mask & (DD_FRONT_LEFT_BIT | DD_BACK_RIGHT_BIT)) && | |||
| ctx->DrawBuffer->UseSoftwareAlphaBuffers && | |||
| ctx->Color.ColorMask[ACOMP]) { | |||
| _mesa_clear_alpha_buffers( ctx ); | |||
| _swrast_clear_alpha_buffers( ctx ); | |||
| } | |||
| if (*colorMask == 0xffffffff && ctx->Color.IndexMask == 0xffffffff) { | |||