- first draft of D3DCLIPSTATUS8 handling (not really used for now)
- add a new DEBUG_SINGLE_MODE #define (for debug caps needs)
- better traces for surface dumping
- much better Texture support on Utilities functions and on
CheckDeviceType
- D3DRS_ZVISIBLE as unsupported (as seen in msdn)
diff --git a/dlls/d3d8/utils.c b/dlls/d3d8/utils.c
index 0843a22..9c4d148 100644
--- a/dlls/d3d8/utils.c
+++ b/dlls/d3d8/utils.c
@@ -376,30 +376,41 @@
switch (fmt) {
/* color buffer */
- case D3DFMT_P8: retVal = 1; break;
case D3DFMT_R3G3B2: retVal = 1; break;
- case D3DFMT_V8U8: retVal = 2; break;
case D3DFMT_R5G6B5: retVal = 2; break;
+ case D3DFMT_R8G8B8: retVal = 3; break;
+ case D3DFMT_A1R5G5B5: retVal = 2; break;
case D3DFMT_X1R5G5B5: retVal = 2; break;
case D3DFMT_A4R4G4B4: retVal = 2; break;
case D3DFMT_X4R4G4B4: retVal = 2; break;
- case D3DFMT_A1R5G5B5: retVal = 2; break;
- case D3DFMT_R8G8B8: retVal = 3; break;
- case D3DFMT_X8R8G8B8: retVal = 4; break;
case D3DFMT_A8R8G8B8: retVal = 4; break;
+ case D3DFMT_X8R8G8B8: retVal = 4; break;
+ /* Paletted */
+ case D3DFMT_P8: retVal = 1; break;
+ case D3DFMT_A8P8: retVal = 2; break;
/* depth/stencil buffer */
case D3DFMT_D16_LOCKABLE: retVal = 2; break;
case D3DFMT_D16: retVal = 2; break;
+ case D3DFMT_D32: retVal = 4; break;
case D3DFMT_D15S1: retVal = 2; break;
case D3DFMT_D24X4S4: retVal = 4; break;
case D3DFMT_D24S8: retVal = 4; break;
case D3DFMT_D24X8: retVal = 4; break;
- case D3DFMT_D32: retVal = 4; break;
+ /* Luminance */
+ case D3DFMT_L8: retVal = 1; break;
+ case D3DFMT_A4L4: retVal = 1; break;
+ case D3DFMT_A8L8: retVal = 2; break;
+ /* Bump */
+ case D3DFMT_V8U8: retVal = 2; break;
+ case D3DFMT_L6V5U5: retVal = 2; break;
+ case D3DFMT_V16U16: retVal = 4; break;
+ case D3DFMT_X8L8V8U8: retVal = 4; break;
/* Compressed */
case D3DFMT_DXT1: retVal = 1; break; /* Actually 8 bytes per 16 pixels - Special cased later */
case D3DFMT_DXT3: retVal = 1; break; /* Actually 16 bytes per 16 pixels */
case D3DFMT_DXT5: retVal = 1; break; /* Actually 16 bytes per 16 pixels */
-
+ /* to see */
+ case D3DFMT_A8: retVal = 1; break;
/* unknown */
case D3DFMT_UNKNOWN:
/* Guess at the highest value of the above */
@@ -431,16 +442,30 @@
if (retVal == 0) {
switch (fmt) {
+ /* Paletted */
case D3DFMT_P8: retVal = GL_COLOR_INDEX8_EXT; break;
case D3DFMT_A8P8: retVal = GL_COLOR_INDEX8_EXT; break;
+ /* Luminance */
+ case D3DFMT_L8: retVal = GL_LUMINANCE8; break;
+ case D3DFMT_A8L8: retVal = GL_LUMINANCE8_ALPHA8; break;
+ case D3DFMT_A4L4: retVal = GL_LUMINANCE4_ALPHA4; break;
+ /* Bump */
case D3DFMT_V8U8: retVal = GL_COLOR_INDEX8_EXT; break;
-
- case D3DFMT_A4R4G4B4: retVal = GL_RGBA4; break;
- case D3DFMT_A8R8G8B8: retVal = GL_RGBA8; break;
- case D3DFMT_X8R8G8B8: retVal = GL_RGB8; break;
- case D3DFMT_R8G8B8: retVal = GL_RGB8; break;
+ case D3DFMT_V16U16: retVal = GL_COLOR_INDEX; break;
+ case D3DFMT_L6V5U5: retVal = GL_COLOR_INDEX8_EXT; break;
+ case D3DFMT_X8L8V8U8: retVal = GL_COLOR_INDEX; break;
+ /* color buffer */
+ case D3DFMT_R3G3B2: retVal = GL_R3_G3_B2; break;
case D3DFMT_R5G6B5: retVal = GL_RGB5; break; /* fixme: internal format 6 for g? */
+ case D3DFMT_R8G8B8: retVal = GL_RGB8; break;
case D3DFMT_A1R5G5B5: retVal = GL_RGB5_A1; break;
+ case D3DFMT_X1R5G5B5: retVal = GL_RGB5_A1; break;
+ case D3DFMT_A4R4G4B4: retVal = GL_RGBA4; break;
+ case D3DFMT_X4R4G4B4: retVal = GL_RGBA4; break;
+ case D3DFMT_A8R8G8B8: retVal = GL_RGBA8; break;
+ case D3DFMT_X8R8G8B8: retVal = GL_RGBA8; break;
+ /* to see */
+ case D3DFMT_A8: retVal = GL_ALPHA8; break;
default:
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
retVal = GL_RGB8;
@@ -466,16 +491,30 @@
if (retVal == 0) {
switch (fmt) {
+ /* Paletted */
case D3DFMT_P8: retVal = GL_COLOR_INDEX; break;
case D3DFMT_A8P8: retVal = GL_COLOR_INDEX; break;
+ /* Luminance */
+ case D3DFMT_L8: retVal = GL_LUMINANCE; break;
+ case D3DFMT_A8L8: retVal = GL_LUMINANCE_ALPHA; break;
+ case D3DFMT_A4L4: retVal = GL_LUMINANCE_ALPHA; break;
+ /* Bump */
case D3DFMT_V8U8: retVal = GL_COLOR_INDEX; break;
-
+ case D3DFMT_V16U16: retVal = GL_COLOR_INDEX; break;
+ case D3DFMT_L6V5U5: retVal = GL_COLOR_INDEX; break;
+ case D3DFMT_X8L8V8U8: retVal = GL_COLOR_INDEX; break;
+ /* color buffer */
+ case D3DFMT_R3G3B2: retVal = GL_BGR; break;
+ case D3DFMT_R5G6B5: retVal = GL_RGB; break;
+ case D3DFMT_R8G8B8: retVal = GL_RGB; break;
+ case D3DFMT_A1R5G5B5: retVal = GL_BGRA; break;
+ case D3DFMT_X1R5G5B5: retVal = GL_BGRA; break;
case D3DFMT_A4R4G4B4: retVal = GL_BGRA; break;
+ case D3DFMT_X4R4G4B4: retVal = GL_BGRA; break;
case D3DFMT_A8R8G8B8: retVal = GL_BGRA; break;
case D3DFMT_X8R8G8B8: retVal = GL_BGRA; break;
- case D3DFMT_R8G8B8: retVal = GL_BGR; break;
- case D3DFMT_R5G6B5: retVal = GL_RGB; break;
- case D3DFMT_A1R5G5B5: retVal = GL_BGRA; break;
+ /* to see */
+ case D3DFMT_A8: retVal = GL_ALPHA; break;
default:
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
retVal = GL_BGR;
@@ -502,16 +541,30 @@
if (retVal == 0) {
switch (fmt) {
+ /* Paletted */
case D3DFMT_P8: retVal = GL_UNSIGNED_BYTE; break;
case D3DFMT_A8P8: retVal = GL_UNSIGNED_BYTE; break;
- case D3DFMT_V8U8: retVal = GL_UNSIGNED_BYTE; break;
-
- case D3DFMT_A4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
- case D3DFMT_A8R8G8B8: retVal = GL_UNSIGNED_BYTE; break;
- case D3DFMT_X8R8G8B8: retVal = GL_UNSIGNED_BYTE; break;
+ /* Luminance */
+ case D3DFMT_L8: retVal = GL_UNSIGNED_BYTE; break;
+ case D3DFMT_A8L8: retVal = GL_UNSIGNED_BYTE; break;
+ case D3DFMT_A4L4: retVal = GL_UNSIGNED_BYTE; break;
+ /* Bump */
+ case D3DFMT_V8U8: retVal = GL_UNSIGNED_BYTE; break;
+ case D3DFMT_V16U16: retVal = GL_UNSIGNED_SHORT; break;
+ case D3DFMT_L6V5U5: retVal = GL_UNSIGNED_SHORT_5_5_5_1; break;
+ case D3DFMT_X8L8V8U8: retVal = GL_UNSIGNED_BYTE; break;
+ /* Color buffer */
+ case D3DFMT_R3G3B2: retVal = GL_UNSIGNED_BYTE_2_3_3_REV; break;
case D3DFMT_R5G6B5: retVal = GL_UNSIGNED_SHORT_5_6_5; break;
case D3DFMT_R8G8B8: retVal = GL_UNSIGNED_BYTE; break;
case D3DFMT_A1R5G5B5: retVal = GL_UNSIGNED_SHORT_1_5_5_5_REV; break;
+ case D3DFMT_X1R5G5B5: retVal = GL_UNSIGNED_SHORT_1_5_5_5_REV; break;
+ case D3DFMT_A4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
+ case D3DFMT_X4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
+ case D3DFMT_A8R8G8B8: retVal = GL_UNSIGNED_INT_8_8_8_8_REV; break;
+ case D3DFMT_X8R8G8B8: retVal = GL_UNSIGNED_INT_8_8_8_8_REV; break;
+ /* to see */
+ case D3DFMT_A8: retVal = GL_ALPHA; break;
default:
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
retVal = GL_UNSIGNED_BYTE;