diff --git a/README.md b/README.md index b6271297..cb4076d4 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,11 @@ Wine. All those differences are also documented on the Included bug fixes and improvements =================================== -**Bugfixes and features included in the next upcoming release [2]:** +**Bugfixes and features included in the next upcoming release [3]:** * Avoid race-conditions in NtReadFile() operations with write watches. * Avoid race-conditions with write watches in WS2_async_accept. +* Implement D3DXGetShaderOutputSemantics **Bugs fixed in Wine Staging 1.7.36 [167]:** diff --git a/debian/changelog b/debian/changelog index 52b53431..85bf8346 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ wine-staging (1.7.37) UNRELEASED; urgency=low * Update patchset for RtlUnwindEx on x86_64 and fix a second bug. * Added patch to avoid race-conditions in NtReadFile() operations with write watches. * Added patch to avoid race-conditions with write watches in WS2_async_accept. + * Added patch to implement D3DXGetShaderOutputSemantics. * Removed patches for UTF7 support (accepted upstream). * Removed patches for SIO_ADDRESS_LIST_CHANGE ioctl (accepted upstream). -- Sebastian Lackner Sun, 08 Feb 2015 20:29:38 +0100 diff --git a/patches/d3dx9_36-GetShaderSemantics/0002-d3dx9_36-Implement-D3DXGetShaderOutputSemantics.patch b/patches/d3dx9_36-GetShaderSemantics/0002-d3dx9_36-Implement-D3DXGetShaderOutputSemantics.patch new file mode 100644 index 00000000..5ad81704 --- /dev/null +++ b/patches/d3dx9_36-GetShaderSemantics/0002-d3dx9_36-Implement-D3DXGetShaderOutputSemantics.patch @@ -0,0 +1,82 @@ +From a3f87586958bbc1c1bb2df30b7605705254f7655 Mon Sep 17 00:00:00 2001 +From: Christian Costa +Date: Tue, 10 Feb 2015 00:45:05 +0100 +Subject: d3dx9_36: Implement D3DXGetShaderOutputSemantics. + +--- + dlls/d3dx9_36/d3dx9_36.spec | 2 +- + dlls/d3dx9_36/shader.c | 27 +++++++++++++++++++++------ + 2 files changed, 22 insertions(+), 7 deletions(-) + +diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec +index 1fb2aaf..13b1684 100644 +--- a/dlls/d3dx9_36/d3dx9_36.spec ++++ b/dlls/d3dx9_36/d3dx9_36.spec +@@ -160,7 +160,7 @@ + @ stdcall D3DXGetShaderConstantTable(ptr ptr) + @ stdcall D3DXGetShaderConstantTableEx(ptr long ptr) + @ stdcall D3DXGetShaderInputSemantics(ptr ptr ptr) +-@ stub D3DXGetShaderOutputSemantics(ptr ptr ptr) ++@ stdcall D3DXGetShaderOutputSemantics(ptr ptr ptr) + @ stdcall D3DXGetShaderSamplers(ptr ptr ptr) + @ stdcall D3DXGetShaderSize(ptr) + @ stdcall D3DXGetShaderVersion(ptr) +diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c +index 63852d0..c3f02d2 100644 +--- a/dlls/d3dx9_36/shader.c ++++ b/dlls/d3dx9_36/shader.c +@@ -2166,7 +2166,7 @@ static UINT get_shader_semantics(const DWORD *byte_code, D3DXSEMANTIC *semantics + { + if (*ptr & (1 << 31)) + { +- FIXME("Opcode expected\n"); ++ FIXME("Opcode expected but got %#x\n", *ptr); + return 0; + } + else if ((*ptr & D3DSI_OPCODE_MASK) == D3DSIO_DCL) +@@ -2180,7 +2180,7 @@ static UINT get_shader_semantics(const DWORD *byte_code, D3DXSEMANTIC *semantics + TRACE("D3DSIO_DCL param1: %#x, param2: %#x, usage: %u, usage_index: %u, reg_type: %u\n", + param1, param2, usage, usage_index, reg_type); + +- if (input && (reg_type == D3DSPR_INPUT)) ++ if ((input && (reg_type == D3DSPR_INPUT)) || (!input && (reg_type == D3DSPR_OUTPUT))) + { + if (semantics) + { +@@ -2189,10 +2189,7 @@ static UINT get_shader_semantics(const DWORD *byte_code, D3DXSEMANTIC *semantics + } + i++; + } +- else +- { +- /* FIXME: Support for output semantics */ +- } ++ + ptr++; + } + else +@@ -2220,3 +2217,21 @@ HRESULT WINAPI D3DXGetShaderInputSemantics(const DWORD *byte_code, D3DXSEMANTIC + + return D3D_OK; + } ++ ++ ++HRESULT WINAPI D3DXGetShaderOutputSemantics(const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count) ++{ ++ UINT nb_semantics; ++ ++ TRACE("byte_code %p, semantics %p, count %p\n", byte_code, semantics, count); ++ ++ if (!byte_code) ++ return D3DERR_INVALIDCALL; ++ ++ nb_semantics = get_shader_semantics(byte_code, semantics, FALSE); ++ ++ if (count) ++ *count = nb_semantics; ++ ++ return D3D_OK; ++} +-- +2.2.2 + diff --git a/patches/d3dx9_36-GetShaderSemantics/definition b/patches/d3dx9_36-GetShaderSemantics/definition index dab0808e..96bc5a31 100644 --- a/patches/d3dx9_36-GetShaderSemantics/definition +++ b/patches/d3dx9_36-GetShaderSemantics/definition @@ -1 +1,2 @@ Fixes: [22682] Support for D3DXGetShaderInputSemantics +Fixes: Implement D3DXGetShaderOutputSemantics diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index a3fd3a7b..d10f99eb 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -1348,8 +1348,10 @@ fi # | if test "$enable_d3dx9_36_GetShaderSemantics" -eq 1; then patch_apply d3dx9_36-GetShaderSemantics/0001-d3dx9_36-Implement-D3DXGetShaderInputSemantics-tests.patch + patch_apply d3dx9_36-GetShaderSemantics/0002-d3dx9_36-Implement-D3DXGetShaderOutputSemantics.patch ( echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXGetShaderInputSemantics + tests.", 1 },'; + echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXGetShaderOutputSemantics.", 1 },'; ) >> "$patchlist" fi