From 40e8ab0c082b458f9596d988e53345398f6c0764 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 2 Jan 2015 03:32:58 +0100 Subject: [PATCH] Added patches for D3DXComputeNormals and D3DXComputeNormalMap. --- README.md | 4 +- debian/changelog | 1 + patches/Makefile | 30 +++++------- .../definition | 1 - patches/d3dx9_36-D3DXIntersect/definition | 2 - ...d-stub-for-D3DXComputeTangentFrameEx.patch | 4 +- ...d3dx9_36-Add-stub-for-D3DXIntersect.patch} | 4 +- ...3dx9_36-Implement-D3DXComputeNormals.patch | 49 +++++++++++++++++++ ...36-Add-stub-for-D3DXComputeNormalMap.patch | 49 +++++++++++++++++++ patches/d3dx9_36-D3DXStubs/definition | 4 ++ 10 files changed, 122 insertions(+), 26 deletions(-) delete mode 100644 patches/d3dx9_36-D3DXComputeTangentFrameEx/definition delete mode 100644 patches/d3dx9_36-D3DXIntersect/definition rename patches/{d3dx9_36-D3DXComputeTangentFrameEx => d3dx9_36-D3DXStubs}/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch (99%) rename patches/{d3dx9_36-D3DXIntersect/0001-d3dx9_36-Add-stub-for-D3DXIntersect.patch => d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch} (96%) create mode 100644 patches/d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch create mode 100644 patches/d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch create mode 100644 patches/d3dx9_36-D3DXStubs/definition diff --git a/README.md b/README.md index 852d123f..a9c4453c 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,9 @@ Wine. All those differences are also documented on the Included bug fixes and improvements =================================== -**Bugfixes and features included in the next upcoming release [16]:** +**Bugfixes and features included in the next upcoming release [18]:** +* Add stub for D3DXComputeNormalMap * Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984)) * Add stub for D3DXIntersect * Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854)) @@ -50,6 +51,7 @@ Included bug fixes and improvements * IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests ([Wine Bug #37767](https://bugs.winehq.org/show_bug.cgi?id=37767)) * Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101)) * Implement IDXGIOutput::GetDesc +* Support for D3DXComputeNormals ([Wine Bug #26379](https://bugs.winehq.org/show_bug.cgi?id=26379)) * Support for ID3DXFont::DrawTextA/W ([Wine Bug #24754](https://bugs.winehq.org/show_bug.cgi?id=24754)) * Support for SLGetWindowsInformationDWORD ([Wine Bug #36709](https://bugs.winehq.org/show_bug.cgi?id=36709)) * Support for named pipe message mode (Linux only) ([Wine Bug #17195](https://bugs.winehq.org/show_bug.cgi?id=17195)) diff --git a/debian/changelog b/debian/changelog index 502bbcfa..ec7bbe56 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,7 @@ wine-staging (1.7.34) UNRELEASED; urgency=low * Added patch for ID3DXFont::DrawTextA/W support. * Added patch to fix parameters for ConvertToIndexedBlendedMesh stub. * Added patch for nvcuda. + * Added patches for D3DXComputeNormals and D3DXComputeNormalMap. * Removed patch to implement combase HSTRING objects (accepted upstream). * Removed patch to add fake ProductId to registry (accepted upstream). * Removed patch to implement stubs for MFStartup and MFShutdown (accepted upstream). diff --git a/patches/Makefile b/patches/Makefile index a020e12c..619b1a56 100644 --- a/patches/Makefile +++ b/patches/Makefile @@ -28,8 +28,7 @@ PATCHLIST := \ configure-Absolute_RPATH.ok \ d3d9-Surface_Refcount.ok \ d3dx9_36-ConvertToIndexedBlended.ok \ - d3dx9_36-D3DXComputeTangentFrameEx.ok \ - d3dx9_36-D3DXIntersect.ok \ + d3dx9_36-D3DXStubs.ok \ d3dx9_36-DXTn.ok \ d3dx9_36-DrawText.ok \ d3dx9_36-Filter_Warnings.ok \ @@ -352,10 +351,11 @@ d3dx9_36-ConvertToIndexedBlended.ok: echo '+ { "Christian Costa", "d3dx9_36: Fix d3dx9_skin_info_ConvertToIndexedBlendedMesh stub.", 1 },'; \ ) > d3dx9_36-ConvertToIndexedBlended.ok -# Patchset d3dx9_36-D3DXComputeTangentFrameEx +# Patchset d3dx9_36-D3DXStubs # | # | This patchset fixes the following Wine bugs: # | * [#31984] Add stub for D3DXComputeTangentFrameEx +# | * [#26379] Support for D3DXComputeNormals # | # | Modified files: # | * dlls/d3dx9_24/d3dx9_24.spec, dlls/d3dx9_25/d3dx9_25.spec, dlls/d3dx9_26/d3dx9_26.spec, dlls/d3dx9_27/d3dx9_27.spec, @@ -365,24 +365,18 @@ d3dx9_36-ConvertToIndexedBlended.ok: # | dlls/d3dx9_39/d3dx9_39.spec, dlls/d3dx9_40/d3dx9_40.spec, dlls/d3dx9_41/d3dx9_41.spec, dlls/d3dx9_42/d3dx9_42.spec, # | dlls/d3dx9_43/d3dx9_43.spec # | -.INTERMEDIATE: d3dx9_36-D3DXComputeTangentFrameEx.ok -d3dx9_36-D3DXComputeTangentFrameEx.ok: - $(call APPLY_FILE,d3dx9_36-D3DXComputeTangentFrameEx/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch) +.INTERMEDIATE: d3dx9_36-D3DXStubs.ok +d3dx9_36-D3DXStubs.ok: + $(call APPLY_FILE,d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch) + $(call APPLY_FILE,d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch) + $(call APPLY_FILE,d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch) + $(call APPLY_FILE,d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch) @( \ echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeTangentFrameEx.", 1 },'; \ - ) > d3dx9_36-D3DXComputeTangentFrameEx.ok - -# Patchset d3dx9_36-D3DXIntersect -# | -# | Modified files: -# | * dlls/d3dx9_36/d3dx9_36.spec, dlls/d3dx9_36/mesh.c -# | -.INTERMEDIATE: d3dx9_36-D3DXIntersect.ok -d3dx9_36-D3DXIntersect.ok: d3dx9_36-D3DXComputeTangentFrameEx.ok - $(call APPLY_FILE,d3dx9_36-D3DXIntersect/0001-d3dx9_36-Add-stub-for-D3DXIntersect.patch) - @( \ echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXIntersect.", 1 },'; \ - ) > d3dx9_36-D3DXIntersect.ok + echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXComputeNormals.", 1 },'; \ + echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeNormalMap.", 1 },'; \ + ) > d3dx9_36-D3DXStubs.ok # Patchset d3dx9_36-DXTn # | diff --git a/patches/d3dx9_36-D3DXComputeTangentFrameEx/definition b/patches/d3dx9_36-D3DXComputeTangentFrameEx/definition deleted file mode 100644 index d380579f..00000000 --- a/patches/d3dx9_36-D3DXComputeTangentFrameEx/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [31984] Add stub for D3DXComputeTangentFrameEx diff --git a/patches/d3dx9_36-D3DXIntersect/definition b/patches/d3dx9_36-D3DXIntersect/definition deleted file mode 100644 index 217ab28b..00000000 --- a/patches/d3dx9_36-D3DXIntersect/definition +++ /dev/null @@ -1,2 +0,0 @@ -Depends: d3dx9_36-D3DXComputeTangentFrameEx -Fixes: Add stub for D3DXIntersect diff --git a/patches/d3dx9_36-D3DXComputeTangentFrameEx/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch b/patches/d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch similarity index 99% rename from patches/d3dx9_36-D3DXComputeTangentFrameEx/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch rename to patches/d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch index 623519c5..e0b3a485 100644 --- a/patches/d3dx9_36-D3DXComputeTangentFrameEx/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch +++ b/patches/d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch @@ -1,4 +1,4 @@ -From 22d02997812e5ed4cc71e8b114fe8fad1ef67d81 Mon Sep 17 00:00:00 2001 +From 9b5a18d6eb150dfacbee644e7abebc4019232a9c Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Sat, 20 Dec 2014 15:40:10 +0100 Subject: d3dx9_36: Add stub for D3DXComputeTangentFrameEx. @@ -316,5 +316,5 @@ index 0cb9e31..40406a4 100644 @ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr) d3dx9_36.D3DXConvertMeshSubsetToSingleStrip @ stdcall D3DXConvertMeshSubsetToStrips(ptr long long ptr ptr ptr ptr) d3dx9_36.D3DXConvertMeshSubsetToStrips -- -2.1.3 +2.2.1 diff --git a/patches/d3dx9_36-D3DXIntersect/0001-d3dx9_36-Add-stub-for-D3DXIntersect.patch b/patches/d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch similarity index 96% rename from patches/d3dx9_36-D3DXIntersect/0001-d3dx9_36-Add-stub-for-D3DXIntersect.patch rename to patches/d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch index adf5e0f5..a66fdd26 100644 --- a/patches/d3dx9_36-D3DXIntersect/0001-d3dx9_36-Add-stub-for-D3DXIntersect.patch +++ b/patches/d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch @@ -1,4 +1,4 @@ -From 6be11442b0b1e9591ab10c3d24cade5b2b01b043 Mon Sep 17 00:00:00 2001 +From dee29ce2f8e464e88a3235e3691f6891082a2fdb Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Sat, 20 Dec 2014 16:28:58 +0100 Subject: d3dx9_36: Add stub for D3DXIntersect. @@ -42,5 +42,5 @@ index 39ee53b..5e6d267 100644 + return E_NOTIMPL; +} -- -2.1.3 +2.2.1 diff --git a/patches/d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch b/patches/d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch new file mode 100644 index 00000000..63b3cfd2 --- /dev/null +++ b/patches/d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch @@ -0,0 +1,49 @@ +From ab64c3a7500e2ccccc0549c6ab1ed04746696ffb Mon Sep 17 00:00:00 2001 +From: Christian Costa +Date: Wed, 31 Dec 2014 18:22:26 +0100 +Subject: d3dx9_36: Implement D3DXComputeNormals. + +--- + dlls/d3dx9_36/d3dx9_36.spec | 2 +- + dlls/d3dx9_36/mesh.c | 12 ++++++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec +index be5f819..4a473e6 100644 +--- a/dlls/d3dx9_36/d3dx9_36.spec ++++ b/dlls/d3dx9_36/d3dx9_36.spec +@@ -23,7 +23,7 @@ + @ stub D3DXComputeIMTFromSignal(ptr long long long long ptr ptr ptr ptr ptr) + @ stub D3DXComputeIMTFromTexture(ptr ptr long long ptr ptr ptr) + @ stub D3DXComputeNormalMap(ptr ptr ptr long long long) +-@ stub D3DXComputeNormals(ptr ptr) ++@ stdcall D3DXComputeNormals(ptr ptr) + @ stub D3DXComputeTangent(ptr long long long long ptr) + @ stub D3DXComputeTangentFrame(ptr long) + @ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr) +diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c +index 5e6d267..7c9d0e1 100644 +--- a/dlls/d3dx9_36/mesh.c ++++ b/dlls/d3dx9_36/mesh.c +@@ -7256,6 +7256,18 @@ HRESULT WINAPI D3DXComputeTangentFrameEx(ID3DXMesh *Mesh, DWORD TextureInSemanti + } + + /************************************************************************* ++ * D3DXComputeNormals (D3DX9_36.@) ++ */ ++HRESULT WINAPI D3DXComputeNormals(ID3DXBaseMesh *mesh, const DWORD *adjacency) ++{ ++ TRACE("mesh %p, adjacency %p.\n", mesh, adjacency); ++ ++ return D3DXComputeTangentFrameEx((ID3DXMesh *)mesh, D3DX_DEFAULT, 0, D3DX_DEFAULT, 0, D3DX_DEFAULT, 0, ++ D3DDECLUSAGE_NORMAL, 0, D3DXTANGENT_GENERATE_IN_PLACE | D3DXTANGENT_CALCULATE_NORMALS, ++ adjacency, -1.01f, -0.01f, -1.01f, NULL, NULL); ++} ++ ++/************************************************************************* + * D3DXIntersect (D3DX9_36.@) + */ + HRESULT WINAPI D3DXIntersect(ID3DXBaseMesh *Mesh, const D3DXVECTOR3 *RayPos, const D3DXVECTOR3 *RayDir, BOOL *Hit, +-- +2.2.1 + diff --git a/patches/d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch b/patches/d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch new file mode 100644 index 00000000..7c200fd8 --- /dev/null +++ b/patches/d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch @@ -0,0 +1,49 @@ +From 704432d4e84d6ed8da895bce0012b9afb8dc3fdc Mon Sep 17 00:00:00 2001 +From: Christian Costa +Date: Wed, 31 Dec 2014 18:45:24 +0100 +Subject: d3dx9_36: Add stub for D3DXComputeNormalMap. + +--- + dlls/d3dx9_36/d3dx9_36.spec | 2 +- + dlls/d3dx9_36/mesh.c | 12 ++++++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec +index 4a473e6..8a66668 100644 +--- a/dlls/d3dx9_36/d3dx9_36.spec ++++ b/dlls/d3dx9_36/d3dx9_36.spec +@@ -22,7 +22,7 @@ + @ stub D3DXComputeIMTFromPerTexelSignal(ptr long ptr long long long long long ptr ptr ptr) + @ stub D3DXComputeIMTFromSignal(ptr long long long long ptr ptr ptr ptr ptr) + @ stub D3DXComputeIMTFromTexture(ptr ptr long long ptr ptr ptr) +-@ stub D3DXComputeNormalMap(ptr ptr ptr long long long) ++@ stdcall D3DXComputeNormalMap(ptr ptr ptr long long long) + @ stdcall D3DXComputeNormals(ptr ptr) + @ stub D3DXComputeTangent(ptr long long long long ptr) + @ stub D3DXComputeTangentFrame(ptr long) +diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c +index 7c9d0e1..842abc8 100644 +--- a/dlls/d3dx9_36/mesh.c ++++ b/dlls/d3dx9_36/mesh.c +@@ -7268,6 +7268,18 @@ HRESULT WINAPI D3DXComputeNormals(ID3DXBaseMesh *mesh, const DWORD *adjacency) + } + + /************************************************************************* ++ * D3DXComputeNormalMap (D3DX9_36.@) ++ */ ++HRESULT WINAPI D3DXComputeNormalMap(IDirect3DTexture9 *texture, IDirect3DTexture9 *src_texture, ++ const PALETTEENTRY *src_palette, DWORD flags, DWORD channel, FLOAT amplitude) ++{ ++ FIXME("texture %p, src_texture %p, src_palette %p, flags %#x, channel %u, amplitude %f stub.\n", ++ texture, src_texture, src_palette, flags, channel, amplitude); ++ ++ return D3D_OK; ++} ++ ++/************************************************************************* + * D3DXIntersect (D3DX9_36.@) + */ + HRESULT WINAPI D3DXIntersect(ID3DXBaseMesh *Mesh, const D3DXVECTOR3 *RayPos, const D3DXVECTOR3 *RayDir, BOOL *Hit, +-- +2.2.1 + diff --git a/patches/d3dx9_36-D3DXStubs/definition b/patches/d3dx9_36-D3DXStubs/definition new file mode 100644 index 00000000..dd309338 --- /dev/null +++ b/patches/d3dx9_36-D3DXStubs/definition @@ -0,0 +1,4 @@ +Fixes: [31984] Add stub for D3DXComputeTangentFrameEx +Fixes: Add stub for D3DXIntersect +Fixes: [26379] Support for D3DXComputeNormals +Fixes: Add stub for D3DXComputeNormalMap