Module: wine
Branch: master
Commit: 4e23e412ea55029410bcae9849d0a31502419d89
URL: https://gitlab.winehq.org/wine/wine/-/commit/4e23e412ea55029410bcae9849d0a3…
Author: Zhiyi Zhang <zzhang(a)codeweavers.com>
Date: Tue Jul 19 20:49:19 2022 +0800
include: Add IMediaParamInfo definition.
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
include/Makefile.in | 1 +
include/medparam.idl | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 59 insertions(+)
diff --git a/include/Makefile.in b/include/Makefile.in
index d5f389b506a..4ea66b37f33 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -414,6 +414,7 @@ SOURCES = \
mcx.h \
mediaerr.h \
mediaobj.idl \
+ medparam.idl \
metahost.idl \
mfapi.h \
mfd3d12.idl \
diff --git a/include/medparam.idl b/include/medparam.idl
new file mode 100644
index 00000000000..f3b7f2f463e
--- /dev/null
+++ b/include/medparam.idl
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2022 Zhiyi Zhang for CodeWeavers
+ *
+ * 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
+ */
+
+import "unknwn.idl";
+
+typedef float MP_DATA;
+typedef DWORD MP_CAPS;
+typedef DWORD MP_TIMEDATA;
+
+typedef enum _MP_Type
+{
+ MPT_INT,
+ MPT_FLOAT,
+ MPT_BOOL,
+ MPT_ENUM,
+ MPT_MAX,
+} MP_TYPE;
+
+typedef struct _MP_PARAMINFO
+{
+ MP_TYPE mpType;
+ MP_CAPS mopCaps;
+ MP_DATA mpdMinValue;
+ MP_DATA mpdMaxValue;
+ MP_DATA mpdNeutralValue;
+ WCHAR szUnitText[32];
+ WCHAR szLabel[32];
+} MP_PARAMINFO;
+
+[
+object,
+uuid(6D6CBB60-A223-44AA-842F-A2F06750BE6D),
+version(1.0)
+]
+interface IMediaParamInfo : IUnknown
+{
+ HRESULT GetParamCount([out] DWORD *count);
+ HRESULT GetParamInfo([in] DWORD index, [out] MP_PARAMINFO *info);
+ HRESULT GetParamText([in] DWORD index, [out] WCHAR **text);
+ HRESULT GetNumTimeFormats([out] DWORD *count);
+ HRESULT GetSupportedTimeFormat([in] DWORD index, [out] GUID *guid);
+ HRESULT GetCurrentTimeFormat([out] GUID *guid, [out] MP_TIMEDATA *time_data);
+}
Module: wine
Branch: master
Commit: 3253cbd8691e924ea7f49053ee1af49c612b2111
URL: https://gitlab.winehq.org/wine/wine/-/commit/3253cbd8691e924ea7f49053ee1af4…
Author: Alexandre Julliard <julliard(a)winehq.org>
Date: Wed Jul 20 19:51:42 2022 +0200
README: Mention Gitlab.
---
README | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/README b/README
index afcbbd48220..2d754da4b82 100644
--- a/README
+++ b/README
@@ -151,6 +151,8 @@ FAQ: The Wine FAQ is located at https://www.winehq.org/FAQ
Wiki: The Wine Wiki is located at https://wiki.winehq.org
+Gitlab: Wine development is hosted at https://gitlab.winehq.org
+
Mailing lists:
There are several mailing lists for Wine users and developers;
see https://www.winehq.org/forums for more information.
@@ -161,13 +163,6 @@ Bugs: Report bugs to Wine Bugzilla at https://bugs.winehq.org
IRC: Online help is available at channel #WineHQ on irc.libera.chat.
-Git: The current Wine development tree is available through Git.
- Go to https://www.winehq.org/git for more information.
-
-If you add something, or fix a bug, please send a patch (preferably
-using git-format-patch) to the wine-devel(a)winehq.org list for
-inclusion in the next release.
-
--
Alexandre Julliard
julliard(a)winehq.org
Module: vkd3d
Branch: master
Commit: 3b579f6fe7baa7c3f7e5e857458da7d1fae853bf
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/3b579f6fe7baa7c3f7e5e857458da…
Author: Conor McCarthy <cmccarthy(a)codeweavers.com>
Date: Mon Jul 18 13:08:01 2022 +1000
vkd3d: Delay unlocking the fence until after the blocked command queue op is written.
An unblocking Signal() on the CPU must be handled after the blocked op
is written, or the op will not be flushed until the next signal.
The device is locked while the fence is already locked, so the fence must
never be locked after locking the device. Currently this never occurs.
Signed-off-by: Conor McCarthy <cmccarthy(a)codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
libs/vkd3d/command.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c
index eb163848..e0201d5d 100644
--- a/libs/vkd3d/command.c
+++ b/libs/vkd3d/command.c
@@ -6804,8 +6804,6 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Wait(ID3D12CommandQueue *if
goto done;
}
- vkd3d_mutex_unlock(&fence->mutex);
-
/* This is the critical part required to support out-of-order signal.
* Normally we would be able to submit waits and signals out of order, but
* we don't have virtualized queues in Vulkan, so we need to handle the case
@@ -6814,6 +6812,7 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Wait(ID3D12CommandQueue *if
if (!(op = d3d12_command_queue_require_space_locked(command_queue)))
{
+ vkd3d_mutex_unlock(&fence->mutex);
hr = E_OUTOFMEMORY;
goto done;
}
@@ -6828,6 +6827,11 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Wait(ID3D12CommandQueue *if
if (command_queue->ops_count == 1)
hr = d3d12_device_add_blocked_command_queues(command_queue->device, &command_queue, 1);
+ /* The fence must remain locked until the op is created and the queue is added to the blocked list,
+ * because if an unblocking d3d12_fence_Signal() call occurs on another thread before the above
+ * work is done, flushing will be delayed until the next signal, if one occurs at all. */
+ vkd3d_mutex_unlock(&fence->mutex);
+
done:
vkd3d_mutex_unlock(&command_queue->op_mutex);
return hr;
Module: vkd3d
Branch: master
Commit: c1071fda524741682057b7c7992fe81c3f427bef
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/c1071fda524741682057b7c7992fe…
Author: Conor McCarthy <cmccarthy(a)codeweavers.com>
Date: Mon Jul 18 13:08:00 2022 +1000
vkd3d: Delay adding a command queue to the blocked list until after the op is written.
Otherwise the following sequence can occur:
1. A command queue is added to the blocked list during a Wait() call.
2. An unblocking Signal() occurs on the CPU in another thread, flushing the
blocked ops, but as no op has been written, the queue is removed from the
blocked list.
3. The blocked op is written.
3. Another op is queued and the queue is not re-added to the blocked
list because this only happens for the first op.
World of Warcraft triggers this issue.
Signed-off-by: Conor McCarthy <cmccarthy(a)codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
libs/vkd3d/command.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c
index d0782e5a..eb163848 100644
--- a/libs/vkd3d/command.c
+++ b/libs/vkd3d/command.c
@@ -6812,12 +6812,6 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Wait(ID3D12CommandQueue *if
* where multiple queues alias over the same physical queue, so effectively,
* we need to manage out-of-order submits ourselves. */
- if (!command_queue->ops_count)
- hr = d3d12_device_add_blocked_command_queues(command_queue->device, &command_queue, 1);
-
- if (FAILED(hr))
- goto done;
-
if (!(op = d3d12_command_queue_require_space_locked(command_queue)))
{
hr = E_OUTOFMEMORY;
@@ -6829,6 +6823,11 @@ static HRESULT STDMETHODCALLTYPE d3d12_command_queue_Wait(ID3D12CommandQueue *if
d3d12_fence_incref(fence);
+ /* Add the queue to the blocked list after writing the op to ensure the queue isn't
+ * removed again in another thread because it has no ops. */
+ if (command_queue->ops_count == 1)
+ hr = d3d12_device_add_blocked_command_queues(command_queue->device, &command_queue, 1);
+
done:
vkd3d_mutex_unlock(&command_queue->op_mutex);
return hr;