mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
more gldirect compile fixes. Getting near the linking stage now. No build file yet.
This commit is contained in:
parent
efb41b07ff
commit
509710cfd7
14 changed files with 511 additions and 188 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue