You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
146 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1942fb8bc1 | ||
|
52f252eeb6 | ||
|
8493f61af5 | ||
|
6b7e43830c | ||
|
4482bd3493 | ||
|
b285e35fca | ||
|
a88d536fba | ||
|
e5cf862a14 | ||
|
df9ad11eef | ||
|
94caef272e | ||
|
d745d08cd7 | ||
|
a6448966cf | ||
|
01fbf6d356 | ||
|
e57244a59e | ||
|
fe6a869e0b | ||
|
a45cfa1ee2 | ||
|
abbfbb8e15 | ||
|
6882ba5e7b | ||
|
b97718a0a9 | ||
|
1fe536ee75 | ||
|
2d8c5f88c3 | ||
|
ef85449de2 | ||
|
d94c192f10 | ||
|
fcff74d6c6 | ||
|
22ba0ef2a3 | ||
|
95679a2f40 | ||
|
a7a75d0d06 | ||
|
e930be3974 | ||
|
d7080ec990 | ||
|
22d9eec489 | ||
|
eb5a19f4fd | ||
|
db6b479557 | ||
|
f14d68c258 | ||
|
117d2b2107 | ||
|
8273be2218 | ||
|
adda594159 | ||
|
710e29cc68 | ||
|
6c167535e3 | ||
|
e9b0c33d65 | ||
|
d44a516142 | ||
|
453c5cda07 | ||
|
d3d87f1a2c | ||
|
42e2a72d37 | ||
|
d7bbcc7ad9 | ||
|
4625289771 | ||
|
cda4a1e125 | ||
|
1039d808e2 | ||
|
6173bd8b0d | ||
|
ba6e2398d7 | ||
|
2dcacd0dbf | ||
|
1039396c8e | ||
|
f8cc3baab3 | ||
|
7665942477 | ||
|
0cd181d0ce | ||
|
a580edefe1 | ||
|
fe6cfefe64 | ||
|
6900845545 | ||
|
3e3ebf5cfc | ||
|
f48794a9ce | ||
|
27397d1764 | ||
|
ca7fc8fb51 | ||
|
cc0df4cd1b | ||
|
8791ceb20d | ||
|
09808df495 | ||
|
9c995c8d8e | ||
|
b72829659d | ||
|
88ffa2bda8 | ||
|
2524bc48fe | ||
|
00ec1171cc | ||
|
277ed0c6fb | ||
|
0c2c469c7b | ||
|
7f36a96808 | ||
|
566a2bcdfd | ||
|
4eb322dc41 | ||
|
182d6c76e3 | ||
|
3e931ce80f | ||
|
716e192182 | ||
|
fba1e773c7 | ||
|
26a1ee0ee9 | ||
|
9d65092519 | ||
|
49dcc78363 | ||
|
64774ec3e5 | ||
|
4211bac798 | ||
|
aaa21bda9c | ||
|
9d5115a9ee | ||
|
9cb0330037 | ||
|
abe75a7741 | ||
|
be92c5d768 | ||
|
6d45ccd523 | ||
|
6dbab0f2e5 | ||
|
e0766792bd | ||
|
df3886edb6 | ||
|
7bcf1f6358 | ||
|
cd4d265f07 | ||
|
cf29ed121d | ||
|
09634de79c | ||
|
68cc39d3ba | ||
|
3a47cfd8a5 | ||
|
fab4cd0932 | ||
|
2ac5cdbf37 | ||
|
e3a3dcd0ce | ||
|
aa36637563 | ||
|
70958b46d0 | ||
|
575f6f67cc | ||
|
9929ac3038 | ||
|
cd22a0fb15 | ||
|
f7b671178c | ||
|
dc43a031be | ||
|
7b0d44f887 | ||
|
0611b4d10c | ||
|
b9421d8376 | ||
|
a11194038c | ||
|
d8293544f4 | ||
|
bf7a234e0c | ||
|
1f76f7faec | ||
|
4d98c8839b | ||
|
53e545fe79 | ||
|
996b5b4cea | ||
|
c1b4af92f7 | ||
|
c542e21406 | ||
|
95f5c850de | ||
|
daff95e4a0 | ||
|
c920a7b45f | ||
|
a737381889 | ||
|
3367490837 | ||
|
b75b4fc0fa | ||
|
c1951fe5d2 | ||
|
7a0d4fb5b3 | ||
|
c26b832223 | ||
|
0159beff44 | ||
|
87f3369577 | ||
|
86a67397f7 | ||
|
f2f8b949b1 | ||
|
dde734350d | ||
|
e113a09752 | ||
|
0e512f9c79 | ||
|
e222e26baa | ||
|
1e9c7533cb | ||
|
89aa62efe0 | ||
|
6d4f5803c8 | ||
|
33879905f2 | ||
|
d6ac81a83b | ||
|
c7feffdb95 | ||
|
fc3f586bd4 | ||
|
5fe0566802 | ||
|
484054b204 |
9
.github/workflows/macOS.yml
vendored
9
.github/workflows/macOS.yml
vendored
@@ -33,12 +33,13 @@ jobs:
|
||||
mkdir $GITHUB_WORKSPACE/wine
|
||||
cd wine
|
||||
git init
|
||||
git fetch git://source.winehq.org/git/wine.git $($GITHUB_WORKSPACE/patches/patchinstall.sh --upstream-commit) --depth=1
|
||||
git checkout $($GITHUB_WORKSPACE/patches/patchinstall.sh --upstream-commit)
|
||||
git fetch git://source.winehq.org/git/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
|
||||
git checkout $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit)
|
||||
|
||||
- name: Run patchinstall.sh --all
|
||||
- name: Run patchinstall.py --all
|
||||
run: |
|
||||
$GITHUB_WORKSPACE/patches/patchinstall.sh DESTDIR=$GITHUB_WORKSPACE/wine --all
|
||||
cd wine
|
||||
$GITHUB_WORKSPACE/staging/patchinstall.py DESTDIR=. --all
|
||||
|
||||
- name: Configure wine64
|
||||
env:
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,2 @@
|
||||
staging/wine
|
||||
*.pyc
|
||||
.patchupdate.cache
|
||||
|
@@ -33,11 +33,11 @@ of information about that is collected in the
|
||||
[WineHQ Wiki](http://wiki.winehq.org/BuildingWine).
|
||||
|
||||
In order to apply all Wine Staging patches it is recommended to use the
|
||||
`patchinstall.sh` utility which takes care of applying all patches in the
|
||||
`patchinstall.py` utility which takes care of applying all patches in the
|
||||
correct order. For reference, the possible commandline arguments are:
|
||||
|
||||
```
|
||||
Usage: ./patchinstall.sh [DESTDIR=path] [--all] [-W patchset] [patchset ...]
|
||||
Usage: ./staging/patchinstall.py [DESTDIR=path] [-W patchset] [patchset ...]
|
||||
|
||||
Autogenerated script to apply all Wine Staging patches on your Wine
|
||||
source tree.
|
||||
@@ -55,17 +55,14 @@ Configuration:
|
||||
|
||||
Backends:
|
||||
--backend=patch Use regular 'patch' utility to apply patches (default)
|
||||
--backend=eapply Use 'eapply' to apply patches (Gentoo only)
|
||||
--backend=epatch Use 'epatch' to apply patches (Gentoo only, deprecated)
|
||||
--backend=git-am Use 'git am' to apply patches
|
||||
--backend=git-apply Use 'git apply' to apply patches
|
||||
--backend=stg Import the patches using stacked git
|
||||
```
|
||||
|
||||
If you want to apply *all* patches with the `patch` utility, the commandline
|
||||
should look similar to this:
|
||||
```
|
||||
./patches/patchinstall.sh DESTDIR="/path/to/wine" --all
|
||||
./staging/patchinstall.py DESTDIR="/path/to/wine" --all
|
||||
```
|
||||
|
||||
Before you proceed with the compilation, please make sure that you installed all
|
||||
|
@@ -1,25 +0,0 @@
|
||||
From e35d665256d08ebccee30361867ba57f790d519f Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 22 Mar 2016 23:01:32 +0100
|
||||
Subject: rpcrt4: Avoid implicit cast of interface pointer.
|
||||
|
||||
---
|
||||
dlls/rpcrt4/cstub.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/rpcrt4/cstub.c b/dlls/rpcrt4/cstub.c
|
||||
index 838ed03..992c235 100644
|
||||
--- a/dlls/rpcrt4/cstub.c
|
||||
+++ b/dlls/rpcrt4/cstub.c
|
||||
@@ -59,7 +59,7 @@ typedef struct
|
||||
|
||||
static inline cstdstubbuffer_delegating_t *impl_from_delegating( IRpcStubBuffer *iface )
|
||||
{
|
||||
- return CONTAINING_RECORD(iface, cstdstubbuffer_delegating_t, stub_buffer);
|
||||
+ return CONTAINING_RECORD((void *)iface, cstdstubbuffer_delegating_t, stub_buffer);
|
||||
}
|
||||
|
||||
HRESULT CStdStubBuffer_Construct(REFIID riid,
|
||||
--
|
||||
2.7.1
|
||||
|
@@ -0,0 +1,69 @@
|
||||
From b30d3de1043cef20b57984035968fc78d5fcd2bb Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 22 Jul 2023 10:22:03 +1000
|
||||
Subject: [PATCH] d3d12core: Add D3D12GetInterface stub
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55135
|
||||
---
|
||||
dlls/d3d12core/Makefile.in | 3 +++
|
||||
dlls/d3d12core/d3d12core.spec | 2 +-
|
||||
dlls/d3d12core/d3d12core_main.c | 30 ++++++++++++++++++++++++++++++
|
||||
3 files changed, 34 insertions(+), 1 deletion(-)
|
||||
create mode 100644 dlls/d3d12core/d3d12core_main.c
|
||||
|
||||
diff --git a/dlls/d3d12core/Makefile.in b/dlls/d3d12core/Makefile.in
|
||||
index 8778b66138b..94d8fd4da00 100644
|
||||
--- a/dlls/d3d12core/Makefile.in
|
||||
+++ b/dlls/d3d12core/Makefile.in
|
||||
@@ -1 +1,4 @@
|
||||
MODULE = d3d12core.dll
|
||||
+
|
||||
+C_SRCS = \
|
||||
+ d3d12core_main.c
|
||||
diff --git a/dlls/d3d12core/d3d12core.spec b/dlls/d3d12core/d3d12core.spec
|
||||
index c9c73bd4ee4..3f3e0a0f2e1 100644
|
||||
--- a/dlls/d3d12core/d3d12core.spec
|
||||
+++ b/dlls/d3d12core/d3d12core.spec
|
||||
@@ -1,2 +1,2 @@
|
||||
-@ stub D3D12GetInterface
|
||||
+@ stdcall D3D12GetInterface(ptr ptr ptr)
|
||||
@ stub D3D12SDKVersion
|
||||
diff --git a/dlls/d3d12core/d3d12core_main.c b/dlls/d3d12core/d3d12core_main.c
|
||||
new file mode 100644
|
||||
index 00000000000..75a083ad276
|
||||
--- /dev/null
|
||||
+++ b/dlls/d3d12core/d3d12core_main.c
|
||||
@@ -0,0 +1,30 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2023 Alistair Leslie-Hughes
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
+ */
|
||||
+
|
||||
+#include <stdarg.h>
|
||||
+
|
||||
+#include "wine/debug.h"
|
||||
+
|
||||
+WINE_DEFAULT_DEBUG_CHANNEL(d3d12core);
|
||||
+
|
||||
+HRESULT WINAPI D3D12GetInterface(REFCLSID rclsid, REFIID riid, void **out)
|
||||
+{
|
||||
+ FIXME("%d, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), out);
|
||||
+
|
||||
+ return E_NOINTERFACE;
|
||||
+}
|
||||
--
|
||||
2.40.1
|
||||
|
1
patches/d3d12core-D3D12GetInterface/definition
Normal file
1
patches/d3d12core-D3D12GetInterface/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [55135] d3d12core: Add D3D12GetInterface stub
|
@@ -0,0 +1,127 @@
|
||||
From cf47173eec41f4427248796a781e3aa4463a79db Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mu=C5=BCy=C5=82o?= <galtgendo@o2.pl>
|
||||
Date: Wed, 7 Jun 2023 08:17:59 +1000
|
||||
Subject: [PATCH] d3dx9: Improve handling of Sprite render states
|
||||
|
||||
---
|
||||
dlls/d3dx9_36/sprite.c | 76 +++++++++++++++++++++++-------------------
|
||||
1 file changed, 41 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/sprite.c b/dlls/d3dx9_36/sprite.c
|
||||
index 1a072e52cda..0ce2ab977f3 100644
|
||||
--- a/dlls/d3dx9_36/sprite.c
|
||||
+++ b/dlls/d3dx9_36/sprite.c
|
||||
@@ -193,7 +193,7 @@ static HRESULT WINAPI d3dx9_sprite_SetWorldViewLH(ID3DXSprite *iface,
|
||||
}
|
||||
|
||||
/* Helper function */
|
||||
-static void set_states(struct d3dx9_sprite *object)
|
||||
+static void set_states(struct d3dx9_sprite *object, DWORD flags)
|
||||
{
|
||||
D3DXMATRIX mat;
|
||||
D3DVIEWPORT9 vp;
|
||||
@@ -204,32 +204,35 @@ static void set_states(struct d3dx9_sprite *object)
|
||||
IDirect3DDevice9_SetNPatchMode(object->device, 0.0f);
|
||||
|
||||
/* Render states */
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHABLENDENABLE, TRUE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAFUNC, D3DCMP_GREATER);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAREF, 0x00);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHATESTENABLE, object->alphacmp_caps);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_BLENDOP, D3DBLENDOP_ADD);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPING, TRUE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPLANEENABLE, 0);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA | D3DCOLORWRITEENABLE_BLUE |
|
||||
- D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_RED);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_CULLMODE, D3DCULL_NONE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ENABLEADAPTIVETESSELLATION, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_FILLMODE, D3DFILL_SOLID);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_FOGENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_LIGHTING, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_RANGEFOGENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SEPARATEALPHABLENDENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SPECULARENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRGBWRITEENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_STENCILENABLE, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_VERTEXBLEND, FALSE);
|
||||
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_WRAP0, 0);
|
||||
+ if (!(flags & D3DXSPRITE_DONOTMODIFY_RENDERSTATE))
|
||||
+ {
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHABLENDENABLE, TRUE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAFUNC, D3DCMP_GREATER);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAREF, 0x00);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHATESTENABLE, object->alphacmp_caps);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_BLENDOP, D3DBLENDOP_ADD);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPING, TRUE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPLANEENABLE, 0);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA | D3DCOLORWRITEENABLE_BLUE |
|
||||
+ D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_RED);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_CULLMODE, D3DCULL_NONE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ENABLEADAPTIVETESSELLATION, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_FILLMODE, D3DFILL_SOLID);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_FOGENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_LIGHTING, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_RANGEFOGENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SEPARATEALPHABLENDENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SPECULARENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRGBWRITEENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_STENCILENABLE, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_VERTEXBLEND, FALSE);
|
||||
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_WRAP0, 0);
|
||||
+ }
|
||||
|
||||
/* Texture stage states */
|
||||
IDirect3DDevice9_SetTextureStageState(object->device, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
|
||||
@@ -266,12 +269,15 @@ static void set_states(struct d3dx9_sprite *object)
|
||||
IDirect3DDevice9_SetSamplerState(object->device, 0, D3DSAMP_SRGBTEXTURE, 0);
|
||||
|
||||
/* Matrices */
|
||||
- D3DXMatrixIdentity(&mat);
|
||||
- IDirect3DDevice9_SetTransform(object->device, D3DTS_WORLD, &mat);
|
||||
- IDirect3DDevice9_SetTransform(object->device, D3DTS_VIEW, &object->view);
|
||||
- IDirect3DDevice9_GetViewport(object->device, &vp);
|
||||
- D3DXMatrixOrthoOffCenterLH(&mat, vp.X+0.5f, (float)vp.Width+vp.X+0.5f, (float)vp.Height+vp.Y+0.5f, vp.Y+0.5f, vp.MinZ, vp.MaxZ);
|
||||
- IDirect3DDevice9_SetTransform(object->device, D3DTS_PROJECTION, &mat);
|
||||
+ if (!(flags & D3DXSPRITE_OBJECTSPACE))
|
||||
+ {
|
||||
+ D3DXMatrixIdentity(&mat);
|
||||
+ IDirect3DDevice9_SetTransform(object->device, D3DTS_WORLD, &mat);
|
||||
+ IDirect3DDevice9_SetTransform(object->device, D3DTS_VIEW, &object->view);
|
||||
+ IDirect3DDevice9_GetViewport(object->device, &vp);
|
||||
+ D3DXMatrixOrthoOffCenterLH(&mat, vp.X+0.5f, (float)vp.Width+vp.X+0.5f, (float)vp.Height+vp.Y+0.5f, vp.Y+0.5f, vp.MinZ, vp.MaxZ);
|
||||
+ IDirect3DDevice9_SetTransform(object->device, D3DTS_PROJECTION, &mat);
|
||||
+ }
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_sprite_Begin(ID3DXSprite *iface, DWORD flags)
|
||||
@@ -317,7 +323,7 @@ D3DXSPRITE_SORT_TEXTURE: sort by texture (so that it doesn't change too often)
|
||||
hr=IDirect3DDevice9_BeginStateBlock(This->device);
|
||||
if(hr!=D3D_OK) return hr;
|
||||
|
||||
- set_states(This);
|
||||
+ set_states(This, flags);
|
||||
|
||||
IDirect3DDevice9_SetVertexDeclaration(This->device, This->vdecl);
|
||||
IDirect3DDevice9_SetStreamSource(This->device, 0, NULL, 0, sizeof(struct sprite_vertex));
|
||||
@@ -330,7 +336,7 @@ D3DXSPRITE_SORT_TEXTURE: sort by texture (so that it doesn't change too often)
|
||||
}
|
||||
|
||||
/* Apply device state */
|
||||
- set_states(This);
|
||||
+ set_states(This, flags);
|
||||
|
||||
This->flags=flags;
|
||||
This->ready=TRUE;
|
||||
--
|
||||
2.40.1
|
||||
|
1
patches/d3dx9-sprite-state/definition
Normal file
1
patches/d3dx9-sprite-state/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [54034] d3dx9: Improve sprite rendering state handling.
|
@@ -1,4 +1,4 @@
|
||||
From 6c3aa646aff81104eb7783138a71d4bb8cf192a7 Mon Sep 17 00:00:00 2001
|
||||
From 0ba05ea85f8f2de3c802083340eb3a9ee8df209e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Sat, 13 Feb 2016 15:29:37 +0100
|
||||
Subject: [PATCH] d3dx9_36: Implement D3DXDisassembleShader. (v2)
|
||||
@@ -6,11 +6,11 @@ Subject: [PATCH] d3dx9_36: Implement D3DXDisassembleShader. (v2)
|
||||
Changes in v2 (by Christian Costa):
|
||||
* More generic code for D3DXDisassembleShader.
|
||||
---
|
||||
dlls/d3dx9_36/shader.c | 332 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 327 insertions(+), 5 deletions(-)
|
||||
dlls/d3dx9_36/shader.c | 335 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 329 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
|
||||
index fe0f99180ac..54d0b158568 100644
|
||||
index 1aa75d64dc5..d98345e2288 100644
|
||||
--- a/dlls/d3dx9_36/shader.c
|
||||
+++ b/dlls/d3dx9_36/shader.c
|
||||
@@ -1,6 +1,7 @@
|
||||
@@ -21,22 +21,27 @@ index fe0f99180ac..54d0b158568 100644
|
||||
* Copyright 2011 Travis Athougies
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
@@ -18,7 +19,7 @@
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
@@ -19,6 +20,7 @@
|
||||
*/
|
||||
|
||||
-
|
||||
#include <assert.h>
|
||||
+#include <stdio.h>
|
||||
|
||||
#include "d3dx9_private.h"
|
||||
#include "d3dcommon.h"
|
||||
#include "d3dcompiler.h"
|
||||
@@ -2336,13 +2337,334 @@ HRESULT WINAPI D3DXGetShaderSamplers(const DWORD *byte_code, const char **sample
|
||||
@@ -2347,13 +2349,334 @@ HRESULT WINAPI D3DXGetShaderSamplers(const DWORD *byte_code, const char **sample
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
-HRESULT WINAPI D3DXDisassembleShader(const DWORD *shader, BOOL colorcode, const char *comments,
|
||||
- ID3DXBuffer **buffer)
|
||||
-{
|
||||
- TRACE("shader %p, colorcode %d, comments %s, buffer %p.\n", shader, colorcode, debugstr_a(comments), buffer);
|
||||
+static const char *decl_usage[] = { "position", "blendweight", "blendindices", "normal", "psize", "texcoord",
|
||||
+ "tangent", "binormal", "tessfactor", "positiont", "color" };
|
||||
+
|
||||
|
||||
- return D3DDisassemble(shader, D3DXGetShaderSize(shader), colorcode ? D3D_DISASM_ENABLE_COLOR_CODE : 0,
|
||||
- comments, (ID3DBlob **)buffer);
|
||||
+static const char *tex_type[] = { "", "1d", "2d", "cube", "volume" };
|
||||
+
|
||||
+static int add_modifier(char *buffer, DWORD param)
|
||||
@@ -298,11 +303,9 @@ index fe0f99180ac..54d0b158568 100644
|
||||
+ { D3DSIO_COMMENT, "", 0, instr_comment, 0x0100, 0xFFFF }
|
||||
+};
|
||||
+
|
||||
HRESULT WINAPI D3DXDisassembleShader(const DWORD *shader, BOOL colorcode, const char *comments,
|
||||
- ID3DXBuffer **buffer)
|
||||
+HRESULT WINAPI D3DXDisassembleShader(const DWORD *shader, BOOL colorcode, const char *comments,
|
||||
+ ID3DXBuffer **disassembly)
|
||||
{
|
||||
- TRACE("shader %p, colorcode %d, comments %s, buffer %p.\n", shader, colorcode, debugstr_a(comments), buffer);
|
||||
+{
|
||||
+ DWORD *ptr = (DWORD *)shader;
|
||||
+ char *buffer, *buf;
|
||||
+ UINT capacity = 4096;
|
||||
@@ -314,9 +317,7 @@ index fe0f99180ac..54d0b158568 100644
|
||||
+
|
||||
+ if (!shader || !disassembly)
|
||||
+ return D3DERR_INVALIDCALL;
|
||||
|
||||
- return D3DDisassemble(shader, D3DXGetShaderSize(shader), colorcode ? D3D_DISASM_ENABLE_COLOR_CODE : 0,
|
||||
- comments, (ID3DBlob **)buffer);
|
||||
+
|
||||
+ buf = buffer = HeapAlloc(GetProcessHeap(), 0, capacity);
|
||||
+ if (!buffer)
|
||||
+ return E_OUTOFMEMORY;
|
||||
@@ -370,5 +371,5 @@ index fe0f99180ac..54d0b158568 100644
|
||||
|
||||
struct d3dx9_texture_shader
|
||||
--
|
||||
2.32.0
|
||||
2.39.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From f22ce02d880a9a6723d202eaf959d1eaa7a4c3df Mon Sep 17 00:00:00 2001
|
||||
From 28b0030ac5f486875dff6f5f34779844f1a031cf Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Sun, 11 Jan 2015 16:29:30 +0100
|
||||
Subject: [PATCH] d3dx9_36: Improve D3DXSaveTextureToFile to save simple
|
||||
@@ -11,23 +11,23 @@ Subject: [PATCH] d3dx9_36: Improve D3DXSaveTextureToFile to save simple
|
||||
3 files changed, 65 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/d3dx9_private.h b/dlls/d3dx9_36/d3dx9_private.h
|
||||
index 9497343f422..679b57b2626 100644
|
||||
index 5d8f5b332f8..f1f41c6e4d7 100644
|
||||
--- a/dlls/d3dx9_36/d3dx9_private.h
|
||||
+++ b/dlls/d3dx9_36/d3dx9_private.h
|
||||
@@ -125,6 +125,8 @@ HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLO
|
||||
IDirect3DSurface9 **temp_surface, BOOL write) DECLSPEC_HIDDEN;
|
||||
@@ -127,6 +127,8 @@ HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLO
|
||||
IDirect3DSurface9 **temp_surface, BOOL write);
|
||||
HRESULT unlock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect,
|
||||
IDirect3DSurface9 *temp_surface, BOOL update) DECLSPEC_HIDDEN;
|
||||
IDirect3DSurface9 *temp_surface, BOOL update);
|
||||
+HRESULT save_dds_texture_to_memory(ID3DXBuffer **dst_buffer, IDirect3DBaseTexture9 *src_texture,
|
||||
+ const PALETTEENTRY *src_palette) DECLSPEC_HIDDEN;
|
||||
+ const PALETTEENTRY *src_palette);
|
||||
|
||||
unsigned short float_32_to_16(const float in) DECLSPEC_HIDDEN;
|
||||
float float_16_to_32(const unsigned short in) DECLSPEC_HIDDEN;
|
||||
unsigned short float_32_to_16(const float in);
|
||||
float float_16_to_32(const unsigned short in);
|
||||
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
|
||||
index aa9ee891b54..9871d211a7c 100644
|
||||
index ca40018af24..9ff5b4901b8 100644
|
||||
--- a/dlls/d3dx9_36/surface.c
|
||||
+++ b/dlls/d3dx9_36/surface.c
|
||||
@@ -636,6 +636,68 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
|
||||
@@ -650,6 +650,68 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
@@ -97,10 +97,10 @@ index aa9ee891b54..9871d211a7c 100644
|
||||
const D3DBOX *dst_box, const void *src_data, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key,
|
||||
const D3DXIMAGE_INFO *src_info)
|
||||
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
|
||||
index 26d07ca9f66..b743d5cfad0 100644
|
||||
index 2ee79b51f79..7ceef158d07 100644
|
||||
--- a/dlls/d3dx9_36/texture.c
|
||||
+++ b/dlls/d3dx9_36/texture.c
|
||||
@@ -1904,10 +1904,7 @@ HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE
|
||||
@@ -1858,10 +1858,7 @@ HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE
|
||||
if (!dst_buffer || !src_texture) return D3DERR_INVALIDCALL;
|
||||
|
||||
if (file_format == D3DXIFF_DDS)
|
||||
@@ -113,5 +113,5 @@ index 26d07ca9f66..b743d5cfad0 100644
|
||||
type = IDirect3DBaseTexture9_GetType(src_texture);
|
||||
switch (type)
|
||||
--
|
||||
2.17.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 8c78d1203c965927d0a0e6fcde31dd651cc704db Mon Sep 17 00:00:00 2001
|
||||
From e9f5c886b6b40ca77eb1dd7f0d21bbdc483b7a95 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 6 Oct 2014 05:06:06 +0200
|
||||
Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR.
|
||||
@@ -9,12 +9,12 @@ Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR.
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dbghelp/Makefile.in b/dlls/dbghelp/Makefile.in
|
||||
index 22be2612eeb..2e11bb2b62d 100644
|
||||
index 74647820126..9f0aad2fc4f 100644
|
||||
--- a/dlls/dbghelp/Makefile.in
|
||||
+++ b/dlls/dbghelp/Makefile.in
|
||||
@@ -2,7 +2,7 @@ MODULE = dbghelp.dll
|
||||
IMPORTLIB = dbghelp
|
||||
IMPORTS = $(ZLIB_PE_LIBS)
|
||||
IMPORTS = kernelbase $(ZLIB_PE_LIBS)
|
||||
EXTRAINCL = $(ZLIB_PE_CFLAGS)
|
||||
-EXTRADEFS = -D_IMAGEHLP_SOURCE_
|
||||
+EXTRADEFS = -D_IMAGEHLP_SOURCE_ -DBINDIR="L\"${bindir}\""
|
||||
@@ -22,17 +22,17 @@ index 22be2612eeb..2e11bb2b62d 100644
|
||||
|
||||
C_SRCS = \
|
||||
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
|
||||
index 404c7c11dbb..e0779e4e3a7 100644
|
||||
index a2a60752a68..a2bca11048f 100644
|
||||
--- a/dlls/dbghelp/elf_module.c
|
||||
+++ b/dlls/dbghelp/elf_module.c
|
||||
@@ -1445,6 +1445,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
|
||||
@@ -1457,6 +1457,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
|
||||
load_elf.elf_info = elf_info;
|
||||
|
||||
ret = search_unix_path(filename, process_getenv(pcs, L"LD_LIBRARY_PATH"), elf_load_file_cb, &load_elf)
|
||||
+ || search_unix_path(filename, BINDIR, elf_load_file_cb, &load_elf)
|
||||
|| search_dll_path(pcs, filename, elf_load_file_cb, &load_elf);
|
||||
|| search_dll_path(pcs, filename, IMAGE_FILE_MACHINE_UNKNOWN, elf_load_file_cb, &load_elf);
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -19,7 +19,7 @@ index 8d608656143..cc8adccf049 100644
|
||||
+{
|
||||
+ DDCAPS *caps = ctx;
|
||||
+
|
||||
+ switch (format->u1.dwZBufferBitDepth)
|
||||
+ switch (format->dwZBufferBitDepth)
|
||||
+ {
|
||||
+ case 8:
|
||||
+ caps->dwZBufferBitDepths |= DDBD_8;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From e2505b43f26d0517aad97c2778958886568ad58b Mon Sep 17 00:00:00 2001
|
||||
From ee590f3816dd8a60014214cdbd9c34c4489a842b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 30 May 2015 02:55:03 +0200
|
||||
Subject: [PATCH] ddraw: Allow size and format conversions in
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] ddraw: Allow size and format conversions in
|
||||
1 file changed, 82 insertions(+), 71 deletions(-)
|
||||
|
||||
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
|
||||
index 421ce68fa1c..b2c674eba7a 100644
|
||||
index 33f38949c15..099f3e92d98 100644
|
||||
--- a/dlls/ddraw/surface.c
|
||||
+++ b/dlls/ddraw/surface.c
|
||||
@@ -5321,6 +5321,46 @@ static struct ddraw_surface *get_sub_mimaplevel(struct ddraw_surface *surface)
|
||||
@@ -5473,6 +5473,46 @@ static struct ddraw_surface *get_sub_mimaplevel(struct ddraw_surface *surface)
|
||||
return impl_from_IDirectDrawSurface7(next_level);
|
||||
}
|
||||
|
||||
@@ -27,22 +27,22 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
+ if (!(format1->dwFlags & DDPF_ALPHA))
|
||||
+ {
|
||||
+ /* The RGB and YUV bits are stored in the same fields */
|
||||
+ if (format1->u1.dwRGBBitCount != format2->u1.dwRGBBitCount)
|
||||
+ if (format1->dwRGBBitCount != format2->dwRGBBitCount)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (format1->u2.dwRBitMask != format2->u2.dwRBitMask)
|
||||
+ if (format1->dwRBitMask != format2->dwRBitMask)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (format1->u3.dwGBitMask != format2->u3.dwGBitMask)
|
||||
+ if (format1->dwGBitMask != format2->dwGBitMask)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (format1->u4.dwBBitMask != format2->u4.dwBBitMask)
|
||||
+ if (format1->dwBBitMask != format2->dwBBitMask)
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ if (format1->dwFlags & (DDPF_ALPHAPIXELS | DDPF_ALPHA))
|
||||
+ {
|
||||
+ if (format1->u5.dwRGBAlphaBitMask != format2->u5.dwRGBAlphaBitMask)
|
||||
+ if (format1->dwRGBAlphaBitMask != format2->dwRGBAlphaBitMask)
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
@@ -59,7 +59,7 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
/*****************************************************************************
|
||||
* IDirect3DTexture2::Load
|
||||
*
|
||||
@@ -5342,7 +5382,7 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu
|
||||
@@ -5494,7 +5534,7 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu
|
||||
{
|
||||
struct ddraw_surface *dst_surface = impl_from_IDirect3DTexture2(iface);
|
||||
struct ddraw_surface *src_surface = unsafe_impl_from_IDirect3DTexture2(src_texture);
|
||||
@@ -68,7 +68,7 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("iface %p, src_texture %p.\n", iface, src_texture);
|
||||
@@ -5355,90 +5395,62 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu
|
||||
@@ -5507,90 +5547,62 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu
|
||||
|
||||
wined3d_mutex_lock();
|
||||
|
||||
@@ -77,7 +77,7 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
-
|
||||
- if (((src_surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_MIPMAP)
|
||||
- != (dst_surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_MIPMAP))
|
||||
- || (src_surface->surface_desc.u2.dwMipMapCount != dst_surface->surface_desc.u2.dwMipMapCount))
|
||||
- || (src_surface->surface_desc.dwMipMapCount != dst_surface->surface_desc.dwMipMapCount))
|
||||
- {
|
||||
- ERR("Trying to load surfaces with different mip-map counts.\n");
|
||||
- }
|
||||
@@ -98,8 +98,8 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
- src_pal = src_surface->palette;
|
||||
-
|
||||
- if (src_pal)
|
||||
+ if (compare_format(&src_surface->surface_desc.u4.ddpfPixelFormat,
|
||||
+ &dst_surface->surface_desc.u4.ddpfPixelFormat))
|
||||
+ if (compare_format(&src_surface->surface_desc.ddpfPixelFormat,
|
||||
+ &dst_surface->surface_desc.ddpfPixelFormat))
|
||||
{
|
||||
- PALETTEENTRY palent[256];
|
||||
+ struct ddraw_palette *dst_pal, *src_pal;
|
||||
@@ -125,7 +125,7 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
|
||||
- if ((src_desc->dwWidth != dst_desc->dwWidth) || (src_desc->dwHeight != dst_desc->dwHeight))
|
||||
- {
|
||||
- /* Should also check for same pixel format, u1.lPitch, ... */
|
||||
- /* Should also check for same pixel format, lPitch, ... */
|
||||
- ERR("Error in surface sizes.\n");
|
||||
- wined3d_mutex_unlock();
|
||||
- return D3DERR_TEXTURE_LOAD_FAILED;
|
||||
@@ -175,8 +175,8 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
+ /* Suppress the ALLOCONLOAD flag */
|
||||
+ dst_surface->surface_desc.ddsCaps.dwCaps &= ~DDSCAPS_ALLOCONLOAD;
|
||||
|
||||
- if (dst_surface->surface_desc.u4.ddpfPixelFormat.dwFlags & DDPF_FOURCC)
|
||||
- memcpy(dst_map_desc.data, src_map_desc.data, src_surface->surface_desc.u1.dwLinearSize);
|
||||
- if (dst_surface->surface_desc.ddpfPixelFormat.dwFlags & DDPF_FOURCC)
|
||||
- memcpy(dst_map_desc.data, src_map_desc.data, src_surface->surface_desc.dwLinearSize);
|
||||
- else
|
||||
- memcpy(dst_map_desc.data, src_map_desc.data, src_map_desc.row_pitch * src_desc->dwHeight);
|
||||
+ SetRect(&src_rect, 0, 0, src_surface->surface_desc.dwWidth, src_surface->surface_desc.dwHeight);
|
||||
@@ -197,7 +197,7 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
}
|
||||
|
||||
if (src_surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_MIPMAP)
|
||||
@@ -5451,12 +5463,11 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu
|
||||
@@ -5603,12 +5615,11 @@ static HRESULT WINAPI d3d_texture2_Load(IDirect3DTexture2 *iface, IDirect3DTextu
|
||||
else
|
||||
dst_surface = NULL;
|
||||
|
||||
@@ -214,5 +214,5 @@ index 421ce68fa1c..b2c674eba7a 100644
|
||||
|
||||
wined3d_mutex_unlock();
|
||||
--
|
||||
2.34.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -1,29 +0,0 @@
|
||||
From ff117878cb3a0c74a50355ca64ac36c5fe6cee67 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Fri, 10 Mar 2017 22:07:37 +0100
|
||||
Subject: ddraw: Silence noisy FIXME about unimplemented
|
||||
D3DPROCESSVERTICES_UPDATEEXTENTS.
|
||||
|
||||
---
|
||||
dlls/ddraw/executebuffer.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c
|
||||
index 393c52c1e2..9b64c687d3 100644
|
||||
--- a/dlls/ddraw/executebuffer.c
|
||||
+++ b/dlls/ddraw/executebuffer.c
|
||||
@@ -302,7 +302,10 @@ HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *buffer,
|
||||
ci->wStart, ci->wDest, ci->dwCount, ci->dwFlags);
|
||||
|
||||
if (ci->dwFlags & D3DPROCESSVERTICES_UPDATEEXTENTS)
|
||||
- FIXME("D3DPROCESSVERTICES_UPDATEEXTENTS not implemented.\n");
|
||||
+ {
|
||||
+ static int once;
|
||||
+ if (!once++) FIXME("D3DPROCESSVERTICES_UPDATEEXTENTS not implemented.\n");
|
||||
+ }
|
||||
if (ci->dwFlags & D3DPROCESSVERTICES_NOCOLOR)
|
||||
FIXME("D3DPROCESSVERTICES_NOCOLOR not implemented.\n");
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -1,73 +0,0 @@
|
||||
From 98a9b8337d40c1f6df21227dff3d993f270aef46 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 24 May 2019 16:16:13 +1000
|
||||
Subject: [PATCH] dinput: Allow mapping of controls based of Genre type.
|
||||
|
||||
---
|
||||
dlls/dinput/device.c | 41 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 40 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
|
||||
index e826cc89c1e..a4815f24958 100644
|
||||
--- a/dlls/dinput/device.c
|
||||
+++ b/dlls/dinput/device.c
|
||||
@@ -1741,8 +1741,15 @@ static HRESULT WINAPI dinput_device_SetActionMap( IDirectInputDevice8W *iface, D
|
||||
|
||||
/* Count the actions */
|
||||
for (i = 0; i < format->dwNumActions; i++)
|
||||
- if (IsEqualGUID( &impl->guid, &format->rgoAction[i].guidInstance ))
|
||||
+ {
|
||||
+ if (IsEqualGUID(&impl->guid, &format->rgoAction[i].guidInstance) ||
|
||||
+ (IsEqualGUID(&IID_NULL, &format->rgoAction[i].guidInstance) &&
|
||||
+ ((format->rgoAction[i].dwSemantic & format->dwGenre) == format->dwGenre ||
|
||||
+ (format->rgoAction[i].dwSemantic & 0xff000000) == 0xff000000 /* Any Axis */) ))
|
||||
+ {
|
||||
num_actions++;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/* Should return DI_NOEFFECT if we dont have any actions and actionformat has not changed */
|
||||
if (num_actions == 0 && format->dwCRC == new_crc && !(flags & DIDSAM_FORCESAVE)) return DI_NOEFFECT;
|
||||
@@ -1779,7 +1786,39 @@ static HRESULT WINAPI dinput_device_SetActionMap( IDirectInputDevice8W *iface, D
|
||||
|
||||
action++;
|
||||
}
|
||||
+ else if ((format->rgoAction[i].dwSemantic & format->dwGenre) == format->dwGenre ||
|
||||
+ (format->rgoAction[i].dwSemantic & 0xff000000) == 0xff000000 /* Any Axis */)
|
||||
+ {
|
||||
+ DWORD obj_id = semantic_to_obj_id(impl, format->rgoAction[i].dwSemantic);
|
||||
+ DWORD type = DIDFT_GETTYPE(obj_id);
|
||||
+ DWORD inst = DIDFT_GETINSTANCE(obj_id);
|
||||
+ LPDIOBJECTDATAFORMAT obj;
|
||||
+
|
||||
+ if (type == DIDFT_PSHBUTTON) type = DIDFT_BUTTON;
|
||||
+ else if (type == DIDFT_RELAXIS) type = DIDFT_AXIS;
|
||||
+
|
||||
+ obj = dataformat_to_odf_by_type(df, inst, type);
|
||||
+ TRACE("obj %p, inst 0x%08lx, type 0x%08lx\n", obj, inst, type);
|
||||
+ if(obj)
|
||||
+ {
|
||||
+ memcpy(&obj_df[action], obj, df->dwObjSize);
|
||||
+
|
||||
+ impl->action_map[action].uAppData = format->rgoAction[i].uAppData;
|
||||
+ impl->action_map[action].offset = offset;
|
||||
+ obj_df[action].dwOfs = offset;
|
||||
+ offset += (type & DIDFT_BUTTON) ? 1 : 4;
|
||||
+
|
||||
+ action++;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (action == 0)
|
||||
+ {
|
||||
+ free( obj_df );
|
||||
+ return DI_NOEFFECT;
|
||||
}
|
||||
+ data_format.dwNumObjs = action;
|
||||
|
||||
IDirectInputDevice8_SetDataFormat( iface, &data_format );
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
@@ -1,3 +1,5 @@
|
||||
Fixes: [34108] dinput: Improve support for user Joystick configuration.
|
||||
Fixes: [47326] dinput: Allow mapping of controls based of genre type.
|
||||
Fixes: [35815] dinput: Allow remapping of joystick buttons.
|
||||
# Seeing active work...
|
||||
Disabled: true
|
||||
|
@@ -0,0 +1,34 @@
|
||||
From b2764b3d21a64c3c194b29b9cb71379456e03b06 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Fri, 7 Jul 2023 12:44:26 +0200
|
||||
Subject: [PATCH] dinput: Avoid duplicated objects in keyboard devices.
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55205
|
||||
---
|
||||
dlls/dinput/keyboard.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
|
||||
index cbcbf94f0f6..3fd75bb10e6 100644
|
||||
--- a/dlls/dinput/keyboard.c
|
||||
+++ b/dlls/dinput/keyboard.c
|
||||
@@ -265,13 +265,15 @@ static HRESULT keyboard_enum_objects( IDirectInputDevice8W *iface, const DIPROPH
|
||||
.dwOfs = DIK_ESCAPE,
|
||||
.dwType = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE( DIK_ESCAPE ),
|
||||
};
|
||||
+ BOOL ret, mapped[0x100] = {0};
|
||||
DWORD index, i, dik;
|
||||
- BOOL ret;
|
||||
|
||||
for (i = 0, index = 0; i < 512; ++i)
|
||||
{
|
||||
if (!GetKeyNameTextW( i << 16, instance.tszName, ARRAY_SIZE(instance.tszName) )) continue;
|
||||
if (!(dik = map_dik_code( i, 0, subtype, impl->base.dinput->dwVersion ))) continue;
|
||||
+ if (mapped[dik]) continue;
|
||||
+ mapped[dik] = TRUE;
|
||||
instance.dwOfs = dik;
|
||||
instance.dwType = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE( dik );
|
||||
ret = try_enum_object( &impl->base, filter, flags, callback, index++, &instance, context );
|
||||
--
|
||||
2.40.1
|
||||
|
@@ -0,0 +1,64 @@
|
||||
From bdf952bf0711a7cf22fee840197234bd413ae611 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Fri, 7 Jul 2023 12:45:04 +0200
|
||||
Subject: [PATCH] dinput: Enumerate lower keyboard scancodes values first.
|
||||
|
||||
Windows usually doesn't have scancodes higher than 0x7f, or extended
|
||||
scancodes higher than 0x17f, but X11 does for several XF86 keys.
|
||||
|
||||
We want to enumerate the basic keys first including in the extended
|
||||
scancode range, so they appear before the XF86 keys in the dinput
|
||||
device object list.
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55205
|
||||
---
|
||||
dlls/dinput/keyboard.c | 24 ++++++++++++++----------
|
||||
1 file changed, 14 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
|
||||
index 3fd75bb10e6..1f1db883b80 100644
|
||||
--- a/dlls/dinput/keyboard.c
|
||||
+++ b/dlls/dinput/keyboard.c
|
||||
@@ -256,6 +256,7 @@ static BOOL try_enum_object( struct dinput_device *impl, const DIPROPHEADER *fil
|
||||
static HRESULT keyboard_enum_objects( IDirectInputDevice8W *iface, const DIPROPHEADER *filter,
|
||||
DWORD flags, enum_object_callback callback, void *context )
|
||||
{
|
||||
+ static const UINT vsc_base[] = {0, 0x100, 0x80, 0x180};
|
||||
struct keyboard *impl = impl_from_IDirectInputDevice8W( iface );
|
||||
BYTE subtype = GET_DIDEVICE_SUBTYPE( impl->base.instance.dwDevType );
|
||||
DIDEVICEOBJECTINSTANCEW instance =
|
||||
@@ -266,18 +267,21 @@ static HRESULT keyboard_enum_objects( IDirectInputDevice8W *iface, const DIPROPH
|
||||
.dwType = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE( DIK_ESCAPE ),
|
||||
};
|
||||
BOOL ret, mapped[0x100] = {0};
|
||||
- DWORD index, i, dik;
|
||||
+ DWORD index, i, dik, vsc;
|
||||
|
||||
- for (i = 0, index = 0; i < 512; ++i)
|
||||
+ for (i = 0, index = 0; i < ARRAY_SIZE(vsc_base); ++i)
|
||||
{
|
||||
- if (!GetKeyNameTextW( i << 16, instance.tszName, ARRAY_SIZE(instance.tszName) )) continue;
|
||||
- if (!(dik = map_dik_code( i, 0, subtype, impl->base.dinput->dwVersion ))) continue;
|
||||
- if (mapped[dik]) continue;
|
||||
- mapped[dik] = TRUE;
|
||||
- instance.dwOfs = dik;
|
||||
- instance.dwType = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE( dik );
|
||||
- ret = try_enum_object( &impl->base, filter, flags, callback, index++, &instance, context );
|
||||
- if (ret != DIENUM_CONTINUE) return DIENUM_STOP;
|
||||
+ for (vsc = vsc_base[i]; vsc < vsc_base[i] + 0x80; vsc++)
|
||||
+ {
|
||||
+ if (!GetKeyNameTextW( vsc << 16, instance.tszName, ARRAY_SIZE(instance.tszName) )) continue;
|
||||
+ if (!(dik = map_dik_code( vsc, 0, subtype, impl->base.dinput->dwVersion ))) continue;
|
||||
+ if (mapped[dik]) continue;
|
||||
+ mapped[dik] = TRUE;
|
||||
+ instance.dwOfs = dik;
|
||||
+ instance.dwType = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE( dik );
|
||||
+ ret = try_enum_object( &impl->base, filter, flags, callback, index++, &instance, context );
|
||||
+ if (ret != DIENUM_CONTINUE) return DIENUM_STOP;
|
||||
+ }
|
||||
}
|
||||
|
||||
return DIENUM_CONTINUE;
|
||||
--
|
||||
2.40.1
|
||||
|
2
patches/dinput-scancode/definition
Normal file
2
patches/dinput-scancode/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: [55205] dinput: Improve keyboard devices scancode support.
|
||||
# PR 3264
|
@@ -0,0 +1,100 @@
|
||||
From 4b20338821a19304650d1acc1229b0e8615896bc Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 3 Aug 2022 16:25:11 +1000
|
||||
Subject: [PATCH] dmime: Store WAVE data when Loading.
|
||||
|
||||
---
|
||||
dlls/dmime/segment.c | 56 ++++++++++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 52 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
|
||||
index bf44c5e73b3..6bf9f3abf0c 100644
|
||||
--- a/dlls/dmime/segment.c
|
||||
+++ b/dlls/dmime/segment.c
|
||||
@@ -33,6 +33,10 @@ typedef struct IDirectMusicSegment8Impl {
|
||||
DMUS_IO_SEGMENT_HEADER header;
|
||||
IDirectMusicGraph *pGraph;
|
||||
struct list Tracks;
|
||||
+
|
||||
+ PCMWAVEFORMAT wave_format;
|
||||
+ void *wave_data;
|
||||
+ int data_size;
|
||||
} IDirectMusicSegment8Impl;
|
||||
|
||||
IDirectMusicSegment8Impl *create_segment(void);
|
||||
@@ -86,6 +90,9 @@ static ULONG WINAPI IDirectMusicSegment8Impl_Release(IDirectMusicSegment8 *iface
|
||||
TRACE("(%p) ref=%ld\n", This, ref);
|
||||
|
||||
if (!ref) {
|
||||
+ if (This->wave_data)
|
||||
+ free(This->wave_data);
|
||||
+
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
DMIME_UnlockModule();
|
||||
}
|
||||
@@ -818,6 +825,49 @@ static inline IDirectMusicSegment8Impl *impl_from_IPersistStream(IPersistStream
|
||||
return CONTAINING_RECORD(iface, IDirectMusicSegment8Impl, dmobj.IPersistStream_iface);
|
||||
}
|
||||
|
||||
+static HRESULT parse_wave_form(IDirectMusicSegment8Impl *This, IStream *stream, const struct chunk_entry *riff)
|
||||
+{
|
||||
+ HRESULT hr;
|
||||
+ struct chunk_entry chunk = {.parent = riff};
|
||||
+
|
||||
+ TRACE("Parsing segment wave in %p: %s\n", stream, debugstr_chunk(riff));
|
||||
+
|
||||
+ while ((hr = stream_next_chunk(stream, &chunk)) == S_OK) {
|
||||
+ switch (chunk.id) {
|
||||
+ case mmioFOURCC('f','m','t',' '): {
|
||||
+ if (FAILED(hr = stream_chunk_get_data(stream, &chunk, &This->wave_format, chunk.size)))
|
||||
+ return hr;
|
||||
+ TRACE("Wave Format tag %d\n", This->wave_format.wf.wFormatTag);
|
||||
+ break;
|
||||
+ }
|
||||
+ case mmioFOURCC('d','a','t','a'): {
|
||||
+ TRACE("Wave Data size %lu\n", chunk.size);
|
||||
+ This->wave_data = malloc(chunk.size);
|
||||
+ This->data_size = chunk.size;
|
||||
+ if (!This->wave_data)
|
||||
+ return E_OUTOFMEMORY;
|
||||
+ if (FAILED(hr = stream_chunk_get_data(stream, &chunk, This->wave_data, chunk.size)))
|
||||
+ return hr;
|
||||
+ break;
|
||||
+ }
|
||||
+ case FOURCC_LIST: {
|
||||
+ FIXME("Skipping LIST tag\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ case mmioFOURCC('I','S','F','T'): {
|
||||
+ FIXME("Skipping ISFT tag\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ case mmioFOURCC('f','a','c','t'): {
|
||||
+ FIXME("Skipping fact tag\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI seg_IPersistStream_Load(IPersistStream *iface, IStream *stream)
|
||||
{
|
||||
IDirectMusicSegment8Impl *This = impl_from_IPersistStream(iface);
|
||||
@@ -847,10 +897,8 @@ static HRESULT WINAPI seg_IPersistStream_Load(IPersistStream *iface, IStream *st
|
||||
|
||||
if (riff.type == DMUS_FOURCC_SEGMENT_FORM)
|
||||
hr = parse_segment_form(This, stream, &riff);
|
||||
- else {
|
||||
- FIXME("WAVE form loading not implemented\n");
|
||||
- hr = S_OK;
|
||||
- }
|
||||
+ else
|
||||
+ hr = parse_wave_form(This, stream, &riff);
|
||||
|
||||
return hr;
|
||||
}
|
||||
--
|
||||
2.39.1
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user