Added patch to return empty D3D hardware flags for HEL device enumeration.

This commit is contained in:
Erich E. Hoover 2014-07-30 17:03:13 -06:00
parent f84058ab42
commit 8f48583742
6 changed files with 100 additions and 1 deletions

View File

@ -27,6 +27,7 @@ Wine-Compholio contains fixes for the following Wine bugs:
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](http://bugs.winehq.org/show_bug.cgi?id=13829 "Wine does not have CJK fonts"))
* Implement an Arial replacement font ([Wine Bug #32323](http://bugs.winehq.org/show_bug.cgi?id=32323 "Netflix (Silverlight 4.x) and several .NET Framework 3.x/4.0 WPF apps require either Arial or Verdana to be installed"))
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](http://bugs.winehq.org/show_bug.cgi?id=7115 "Need for Speed III installer fails in Win9X mode, reporting \"Could not get 'HardWareKey' value\" (active PnP device keys in 'HKEY_DYN_DATA\\\\Config Manager\\\\Enum' missing)"))
* Old games cannot locate software-only renderer ([Wine Bug #32581](http://bugs.winehq.org/show_bug.cgi?id=32581 "Invalid dwFlags of reference rasterizer's HAL D3DDEVICEDESC"))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](http://bugs.winehq.org/show_bug.cgi?id=23174 "Fallout 3: Diologue and Video/sound issues"))
* SHCreateSessionKey not implemented ([Wine Bug #35630](http://bugs.winehq.org/show_bug.cgi?id=35630 "SHCreateSessionKey is unimplemented"))
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](http://bugs.winehq.org/show_bug.cgi?id=34372 "Add missing function AllocateAndGetTcpExTableFromStack() to iphlpapi.dll"))

3
debian/changelog vendored
View File

@ -8,7 +8,8 @@ wine-compholio (1.7.24) UNRELEASED; urgency=low
* Added patch to implement AllocateAndGetTcpExTableFromStack.
* Added patch to fix ConnectNamedPort return value in overlapped mode.
* Added patch to store IOCS data in a property instead of GWLP_USERDATA.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sun, 27 Jul 2014 12:53:18 -0600
* Added patch to return empty D3D hardware flags for HEL device enumeration.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Wed, 30 Jul 2014 17:02:55 -0600
wine-compholio (1.7.23) unstable; urgency=low
* Rewrite of patch system to simplify maintaining large patchsets.

View File

@ -8,6 +8,7 @@ PATCH := $(CURDIR)/../debian/tools/gitapply.sh -d $(DESTDIR)
PATCHLIST := Miscellaneous.ok \
Pipelight.ok \
atl-IOCS_Property.ok \
ddraw-Empty_Hardware_Flags.ok \
fonts-Missing_Fonts.ok \
iphlpapi-TCP_Table.ok \
kernel32-GetSystemTimes.ok \
@ -114,6 +115,25 @@ atl-IOCS_Property.ok:
echo '+ { "atl-IOCS_Property", "Qian Hong", "Store IOCS data in a property instead of GWLP_USERDATA." },'; \
) > atl-IOCS_Property.ok
# Patchset ddraw-Empty_Hardware_Flags
# |
# | Included patches:
# | * Return empty D3D hardware flags for HEL device enumeration. [by Erich E. Hoover]
# |
# | This patchset fixes the following Wine bugs:
# | * [#32581] Invalid dwFlags of reference rasterizer's HAL D3DDEVICEDESC
# |
# | Modified files:
# | * dlls/ddraw/ddraw.c, dlls/ddraw/tests/d3d.c
# |
.INTERMEDIATE: ddraw-Empty_Hardware_Flags.ok
ddraw-Empty_Hardware_Flags.ok:
$(PATCH) < ddraw-Empty_Hardware_Flags/0001-ddraw-tests-Ignore-broken-behavior-of-D3DTRANSFORM_U.patch
$(PATCH) < ddraw-Empty_Hardware_Flags/0002-ddraw-Return-empty-D3D-hardware-flags-for-HEL-device.patch
@( \
echo '+ { "ddraw-Empty_Hardware_Flags", "Erich E. Hoover", "Return empty D3D hardware flags for HEL device enumeration." },'; \
) > ddraw-Empty_Hardware_Flags.ok
# Patchset fonts-Missing_Fonts
# |
# | Included patches:

View File

@ -0,0 +1,26 @@
From f62d9448825cd452107a595b5022b58e5ab63efc Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sun, 16 Feb 2014 14:14:13 -0700
Subject: ddraw/tests: Ignore broken behavior of D3DTRANSFORM_UNCLIPPED.
---
dlls/ddraw/tests/d3d.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index 209555a..b3bd3c8 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -1257,7 +1257,8 @@ static void Direct3D1Test(void)
cmp[i].x, cmp[i].y, cmp[i].z, cmp[i].rhw);
}
for(i = 0; i < sizeof(outH); i++) {
- if(((unsigned char *) outH)[i] != 0xcc) {
+ unsigned char byte = ((unsigned char *) outH)[i];
+ if(byte != 0xcc && !broken(byte == 0x0)) {
ok(FALSE, "Homogeneous output was generated despite UNCLIPPED flag\n");
break;
}
--
1.7.9.5

View File

@ -0,0 +1,47 @@
From d9f356f8ab9ab852a98cf766cf6abaf26a87cf57 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Sun, 16 Feb 2014 14:14:42 -0700
Subject: ddraw: Return empty D3D hardware flags for HEL device enumeration.
---
dlls/ddraw/ddraw.c | 2 ++
dlls/ddraw/tests/d3d.c | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 011c115..f6618d7 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -3683,6 +3683,8 @@ static HRESULT WINAPI d3d3_EnumDevices(IDirect3D3 *iface, LPD3DENUMDEVICESCALLBA
| D3DPTEXTURECAPS_NONPOW2CONDITIONAL | D3DPTEXTURECAPS_PERSPECTIVE);
/* RGB, RAMP and MMX devices have a HAL dcmColorModel of 0 */
hal_desc.dcmColorModel = 0;
+ /* The HEL device cannot report hardware flags */
+ hal_desc.dwFlags = 0;
hr = callback((GUID *)&IID_IDirect3DRGBDevice, reference_description,
device_name, &hal_desc, &hel_desc, context);
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index b3bd3c8..de5c0ba 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -537,12 +537,16 @@ static HRESULT WINAPI enumDevicesCallback(GUID *Guid, char *DeviceDescription,
ok(hal->dcmColorModel == 0, "RGB Device %u hal caps has colormodel %u\n", ver, hal->dcmColorModel);
ok(hel->dcmColorModel == D3DCOLOR_RGB, "RGB Device %u hel caps has colormodel %u\n", ver, hel->dcmColorModel);
+
+ ok(hal->dwFlags == 0, "RGB Device %u has hardware flags %x\n", ver, hal->dwFlags);
}
else if(IsEqualGUID(&IID_IDirect3DHALDevice, Guid))
{
trace("HAL Device %d\n", ver);
ok(hal->dcmColorModel == D3DCOLOR_RGB, "HAL Device %u hal caps has colormodel %u\n", ver, hel->dcmColorModel);
ok(hel->dcmColorModel == 0, "HAL Device %u hel caps has colormodel %u\n", ver, hel->dcmColorModel);
+
+ ok(hal->dwFlags != 0, "HAL Device %u has hardware flags %x\n", ver, hal->dwFlags);
}
else if(IsEqualGUID(&IID_IDirect3DRefDevice, Guid))
{
--
1.7.9.5

View File

@ -0,0 +1,4 @@
Author: Erich E. Hoover
Subject: Return empty D3D hardware flags for HEL device enumeration.
Revision: 1
Fixes: [32581] Old games cannot locate software-only renderer