Ivan Gyurdiev : wined3d: Map D3DFMT_L16,
D3DFMT_A16B16G16R16 to OpenGL formats.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Apr 10 06:29:09 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 5c12c043df3798cfeb42851170664b935b2e6881
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=5c12c043df3798cfeb42851170664b935b2e6881
Author: Ivan Gyurdiev <ivg2 at cornell.edu>
Date: Mon Apr 10 05:13:17 2006 -0400
wined3d: Map D3DFMT_L16, D3DFMT_A16B16G16R16 to OpenGL formats.
Map:
D3DFMT_L16 -> GL_LUMINANCE16_EXT
D3DFMT_A16B16G16R16 -> GL_RGBA16_EXT
as Raphael suggested.
Also increase the returned Bpp for unknown and unhandled formats from
4 to 8 bytes - this part fixes segfault in the F.E.A.R demo. It now
shows some flashy graphics before it dies again :)
---
dlls/wined3d/utils.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index ba1eb81..c1eb03e 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -1634,6 +1634,7 @@ GLint D3DFmt2GLIntFmt(IWineD3DDeviceImpl
case WINED3DFMT_A8P8: retVal = GL_COLOR_INDEX8_EXT; break;
/* Luminance */
case WINED3DFMT_L8: retVal = GL_LUMINANCE8; break;
+ case WINED3DFMT_L16: retVal = GL_LUMINANCE16_EXT; break;
case WINED3DFMT_A8L8: retVal = GL_LUMINANCE8_ALPHA8; break;
case WINED3DFMT_A4L4: retVal = GL_LUMINANCE4_ALPHA4; break;
/* Bump */
@@ -1655,6 +1656,7 @@ GLint D3DFmt2GLIntFmt(IWineD3DDeviceImpl
case WINED3DFMT_A8B8G8R8: retVal = GL_RGBA8; break;
case WINED3DFMT_A2R10G10B10: retVal = GL_RGBA8; break;
case WINED3DFMT_X8R8G8B8: retVal = GL_RGB; break;
+ case WINED3DFMT_A16B16G16R16: retVal = GL_RGBA16_EXT; break;
/* to see */
case WINED3DFMT_A8: retVal = GL_ALPHA8; break;
@@ -1700,6 +1702,7 @@ GLenum D3DFmt2GLFmt(IWineD3DDeviceImpl*
case WINED3DFMT_A8P8: retVal = GL_COLOR_INDEX; break;
/* Luminance */
case WINED3DFMT_L8: retVal = GL_LUMINANCE; break;
+ case WINED3DFMT_L16: retVal = GL_LUMINANCE; break;
case WINED3DFMT_A8L8: retVal = GL_LUMINANCE_ALPHA; break;
case WINED3DFMT_A4L4: retVal = GL_LUMINANCE_ALPHA; break;
/* Bump */
@@ -1721,6 +1724,7 @@ GLenum D3DFmt2GLFmt(IWineD3DDeviceImpl*
case WINED3DFMT_A8B8G8R8: retVal = GL_RGBA; break;
case WINED3DFMT_A2R10G10B10: retVal = GL_BGRA; break;
case WINED3DFMT_X8R8G8B8: retVal = GL_BGRA; break;
+ case WINED3DFMT_A16B16G16R16: retVal = GL_RGBA; break;
/* to see */
case WINED3DFMT_A8: retVal = GL_ALPHA; break;
/* Depth + Stencil */
@@ -1765,6 +1769,7 @@ GLenum D3DFmt2GLType(IWineD3DDeviceImpl*
case WINED3DFMT_A8P8: retVal = GL_UNSIGNED_BYTE; break;
/* Luminance */
case WINED3DFMT_L8: retVal = GL_UNSIGNED_BYTE; break;
+ case WINED3DFMT_L16: retVal = GL_UNSIGNED_BYTE; break;
case WINED3DFMT_A8L8: retVal = GL_UNSIGNED_BYTE; break;
case WINED3DFMT_A4L4: retVal = GL_UNSIGNED_BYTE; break;
/* Bump */
@@ -1828,6 +1833,7 @@ SHORT D3DFmtGetBpp(IWineD3DDeviceImpl* T
case WINED3DFMT_A8B8G8R8: retVal = 4; break;
case WINED3DFMT_A2R10G10B10: retVal = 4; break;
case WINED3DFMT_X8R8G8B8: retVal = 4; break;
+ case WINED3DFMT_A16B16G16R16: retVal = 8; break;
/* Paletted */
case WINED3DFMT_P8: retVal = 1; break;
case WINED3DFMT_A8P8: retVal = 2; break;
@@ -1842,6 +1848,7 @@ SHORT D3DFmtGetBpp(IWineD3DDeviceImpl* T
case WINED3DFMT_D24X8: retVal = 4; break;
/* Luminance */
case WINED3DFMT_L8: retVal = 1; break;
+ case WINED3DFMT_L16: retVal = 2; break;
case WINED3DFMT_A4L4: retVal = 1; break;
case WINED3DFMT_A8L8: retVal = 2; break;
/* Bump */
@@ -1862,13 +1869,13 @@ SHORT D3DFmtGetBpp(IWineD3DDeviceImpl* T
/* unknown */
case WINED3DFMT_UNKNOWN:
/* Guess at the highest value of the above */
- TRACE("WINED3DFMT_UNKNOWN - Guessing at 4 bytes/pixel %u\n", fmt);
- retVal = 4;
+ TRACE("WINED3DFMT_UNKNOWN - Guessing at 8 bytes/pixel %u\n", fmt);
+ retVal = 8;
break;
default:
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
- retVal = 4;
+ retVal = 8;
}
TRACE("bytes/Pxl for fmt(%u,%s) = %d\n", fmt, debug_d3dformat(fmt), retVal);
return retVal;
More information about the wine-cvs
mailing list