Updated empty ddraw hardware flags patches.

This commit is contained in:
Erich E. Hoover 2014-08-08 09:52:59 -06:00
parent dea02ac53a
commit 0ee71b2abe
5 changed files with 100 additions and 75 deletions

View File

@ -155,8 +155,8 @@ comctl32-LoadIconMetric.ok:
# |
.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
$(PATCH) < ddraw-Empty_Hardware_Flags/0001-ddraw-tests-Remove-broken-tests-of-D3DTRANSFORM_UNCL.patch
$(PATCH) < ddraw-Empty_Hardware_Flags/0002-ddraw-Return-empty-D3D-hardware-flags-for-RGB-device.patch
@( \
echo '+ { "ddraw-Empty_Hardware_Flags", "Erich E. Hoover", "Return empty D3D hardware flags for HEL device enumeration." },'; \
) > ddraw-Empty_Hardware_Flags.ok

View File

@ -1,26 +0,0 @@
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,29 @@
From a88740c95d8250e95bf215169896c0eb54a7eb6c 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: Remove broken tests of D3DTRANSFORM_UNCLIPPED.
---
dlls/ddraw/tests/d3d.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index 209555a..35987cb 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -1256,12 +1256,6 @@ static void Direct3D1Test(void)
out[i].x, out[i].y, out[i].z, out[i].rhw,
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) {
- ok(FALSE, "Homogeneous output was generated despite UNCLIPPED flag\n");
- break;
- }
- }
SET_VP_DATA(vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
--
1.7.9.5

View File

@ -1,47 +0,0 @@
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,69 @@
From 512926550611374900b9117f1c8c0da493b5a031 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 RGB device enumeration.
---
dlls/ddraw/ddraw.c | 2 ++
dlls/ddraw/tests/d3d.c | 12 ++++++++++++
2 files changed, 14 insertions(+)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 011c115..df74122 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;
+ /* RGB, RAMP and MMX devices cannot report HAL 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 35987cb..64bd0b9 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -537,12 +537,18 @@ 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 hal caps has hardware flags %x\n", ver, hal->dwFlags);
+ ok(hel->dwFlags != 0, "RGB Device %u hel caps has hardware flags %x\n", ver, hel->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 hal caps has hardware flags %x\n", ver, hal->dwFlags);
+ ok(hel->dwFlags != 0, "HAL Device %u hel caps has hardware flags %x\n", ver, hel->dwFlags);
}
else if(IsEqualGUID(&IID_IDirect3DRefDevice, Guid))
{
@@ -587,6 +593,9 @@ static HRESULT WINAPI enumDevicesCallback(GUID *Guid, char *DeviceDescription,
ok(hal->dcmColorModel == 0, "Ramp Device %u hal caps has colormodel %u\n", ver, hal->dcmColorModel);
ok(hel->dcmColorModel == D3DCOLOR_MONO, "Ramp Device %u hel caps has colormodel %u\n",
ver, hel->dcmColorModel);
+
+ ok(hal->dwFlags == 0, "Ramp Device %u hal caps has hardware flags %x\n", ver, hal->dwFlags);
+ ok(hel->dwFlags != 0, "Ramp Device %u hel caps has hardware flags %x\n", ver, hel->dwFlags);
}
else if(IsEqualGUID(&IID_IDirect3DMMXDevice, Guid))
{
@@ -610,6 +619,9 @@ static HRESULT WINAPI enumDevicesCallback(GUID *Guid, char *DeviceDescription,
ok(hal->dcmColorModel == 0, "MMX Device %u hal caps has colormodel %u\n", ver, hal->dcmColorModel);
ok(hel->dcmColorModel == D3DCOLOR_RGB, "MMX Device %u hel caps has colormodel %u\n", ver, hel->dcmColorModel);
+
+ ok(hal->dwFlags == 0, "MMX Device %u hal caps has hardware flags %x\n", ver, hal->dwFlags);
+ ok(hel->dwFlags != 0, "MMX Device %u hel caps has hardware flags %x\n", ver, hel->dwFlags);
}
else
{
--
1.7.9.5