DXT1/3/5 support was broken, but unnoticeable since we also indicated
it wasn't supported.
This commit is contained in:
parent
5546a02ef6
commit
beb4ac8fe1
|
@ -50,6 +50,7 @@ IDirect3D8* WINAPI Direct3DCreate8(UINT SDKVersion)
|
||||||
IDirect3D8Impl *object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3D8Impl));
|
IDirect3D8Impl *object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3D8Impl));
|
||||||
|
|
||||||
object->lpVtbl = &Direct3D8_Vtbl;
|
object->lpVtbl = &Direct3D8_Vtbl;
|
||||||
|
object->direct3d8 = object;
|
||||||
object->ref = 1;
|
object->ref = 1;
|
||||||
|
|
||||||
TRACE("SDKVersion = %x, Created Direct3D object at %p\n", SDKVersion, object);
|
TRACE("SDKVersion = %x, Created Direct3D object at %p\n", SDKVersion, object);
|
||||||
|
|
|
@ -249,6 +249,7 @@ struct IDirect3D8Impl
|
||||||
|
|
||||||
/* IDirect3D8 fields */
|
/* IDirect3D8 fields */
|
||||||
GL_Info gl_info;
|
GL_Info gl_info;
|
||||||
|
IDirect3D8Impl *direct3d8;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* IUnknown: */
|
/* IUnknown: */
|
||||||
|
|
|
@ -2813,8 +2813,7 @@ HRESULT WINAPI IDirect3DDevice8Impl_SetTexture(LPDIRECT3DDEVICE8 iface, DWORD
|
||||||
/* If Alpha arg1 is texture then handle the special case when there changes between a
|
/* If Alpha arg1 is texture then handle the special case when there changes between a
|
||||||
texture and no texture - See comments in set_tex_op */
|
texture and no texture - See comments in set_tex_op */
|
||||||
if ((This->StateBlock->texture_state[Stage][D3DTSS_ALPHAARG1] == D3DTA_TEXTURE) &&
|
if ((This->StateBlock->texture_state[Stage][D3DTSS_ALPHAARG1] == D3DTA_TEXTURE) &&
|
||||||
((oldTxt == NULL) && (pTexture != NULL)) ||
|
(((oldTxt == NULL) && (pTexture != NULL)) || ((pTexture == NULL) && (oldTxt != NULL))))
|
||||||
((pTexture == NULL) && (oldTxt != NULL)))
|
|
||||||
{
|
{
|
||||||
reapplyFlags |= REAPPLY_ALPHAOP;
|
reapplyFlags |= REAPPLY_ALPHAOP;
|
||||||
}
|
}
|
||||||
|
@ -3096,6 +3095,7 @@ HRESULT WINAPI IDirect3DDevice8Impl_SetTextureStageState(LPDIRECT3DDEVICE8 ifa
|
||||||
glDisable(GL_TEXTURE_GEN_S);
|
glDisable(GL_TEXTURE_GEN_S);
|
||||||
glDisable(GL_TEXTURE_GEN_T);
|
glDisable(GL_TEXTURE_GEN_T);
|
||||||
glDisable(GL_TEXTURE_GEN_R);
|
glDisable(GL_TEXTURE_GEN_R);
|
||||||
|
checkGLcall("glDisable(GL_TEXTURE_GEN_S,T,R)");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case D3DTSS_TCI_CAMERASPACEPOSITION:
|
case D3DTSS_TCI_CAMERASPACEPOSITION:
|
||||||
|
|
|
@ -320,6 +320,15 @@ HRESULT WINAPI IDirect3D8Impl_CheckDeviceFormat (LPDIRECT3D8 iface,
|
||||||
RType, debug_d3dressourcetype(RType),
|
RType, debug_d3dressourcetype(RType),
|
||||||
CheckFormat, debug_d3dformat(CheckFormat));
|
CheckFormat, debug_d3dformat(CheckFormat));
|
||||||
|
|
||||||
|
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
||||||
|
switch (CheckFormat) {
|
||||||
|
case D3DFMT_DXT1:
|
||||||
|
case D3DFMT_DXT3:
|
||||||
|
case D3DFMT_DXT5:
|
||||||
|
return D3D_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (CheckFormat) {
|
switch (CheckFormat) {
|
||||||
case D3DFMT_UYVY:
|
case D3DFMT_UYVY:
|
||||||
case D3DFMT_YUY2:
|
case D3DFMT_YUY2:
|
||||||
|
|
|
@ -409,22 +409,8 @@ SHORT D3DFmtGetBpp(IDirect3DDevice8Impl* This, D3DFORMAT fmt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
GLint D3DFmt2GLIntFmt(IDirect3DDevice8Impl* This, D3DFORMAT fmt) {
|
GLint D3DFmt2GLIntFmt(IDirect3DDevice8Impl* This, D3DFORMAT fmt) {
|
||||||
GLint retVal;
|
GLint retVal = 0;
|
||||||
|
|
||||||
switch (fmt) {
|
|
||||||
case D3DFMT_P8: retVal = GL_COLOR_INDEX8_EXT; break;
|
|
||||||
case D3DFMT_A8P8: 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_R5G6B5: retVal = GL_RGB5; break; /* fixme: internal format 6 for g? */
|
|
||||||
case D3DFMT_A1R5G5B5: retVal = GL_RGB5_A1; break;
|
|
||||||
default:
|
|
||||||
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
|
|
||||||
retVal = GL_RGB8;
|
|
||||||
}
|
|
||||||
#if defined(GL_EXT_texture_compression_s3tc)
|
#if defined(GL_EXT_texture_compression_s3tc)
|
||||||
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
||||||
switch (fmt) {
|
switch (fmt) {
|
||||||
|
@ -437,6 +423,22 @@ GLint D3DFmt2GLIntFmt(IDirect3DDevice8Impl* This, D3DFORMAT fmt) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (retVal == 0) {
|
||||||
|
switch (fmt) {
|
||||||
|
case D3DFMT_P8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||||
|
case D3DFMT_A8P8: 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_R5G6B5: retVal = GL_RGB5; break; /* fixme: internal format 6 for g? */
|
||||||
|
case D3DFMT_A1R5G5B5: retVal = GL_RGB5_A1; break;
|
||||||
|
default:
|
||||||
|
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
|
||||||
|
retVal = GL_RGB8;
|
||||||
|
}
|
||||||
|
}
|
||||||
TRACE("fmt2glintFmt for fmt(%u,%s) = %x\n", fmt, debug_d3dformat(fmt), retVal);
|
TRACE("fmt2glintFmt for fmt(%u,%s) = %x\n", fmt, debug_d3dformat(fmt), retVal);
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue