You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Compare commits
8 Commits
v2.20
...
latest-rel
Author | SHA1 | Date | |
---|---|---|---|
|
90679f2faf | ||
|
5263c29479 | ||
|
aa9bb78434 | ||
|
ad21b3e74b | ||
|
da5cab425d | ||
|
9ac47d26d7 | ||
|
b3199000fe | ||
|
9e01cd7628 |
@@ -1,4 +1,4 @@
|
||||
From ce0ab0ccd6e4953a9673d15e00cf602668469c2c Mon Sep 17 00:00:00 2001
|
||||
From 971cfbe9ab8a7cb62c5b3e62fe4fe0bfc4518889 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 5 Mar 2017 23:04:36 +0100
|
||||
Subject: advapi32: Fix error code when calling LsaOpenPolicy for non existing
|
||||
@@ -10,10 +10,10 @@ Subject: advapi32: Fix error code when calling LsaOpenPolicy for non existing
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index b8dedbd6d58..e5e3b1649c0 100644
|
||||
index bfd879bbc73..2e021a1ec2d 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -692,7 +692,7 @@ NTSTATUS WINAPI LsaOpenPolicy(
|
||||
@@ -659,7 +659,7 @@ NTSTATUS WINAPI LsaOpenPolicy(
|
||||
ObjectAttributes, DesiredAccess, PolicyHandle);
|
||||
|
||||
ADVAPI_ForceLocalComputer(SystemName ? SystemName->Buffer : NULL,
|
||||
@@ -23,10 +23,10 @@ index b8dedbd6d58..e5e3b1649c0 100644
|
||||
|
||||
if(PolicyHandle) *PolicyHandle = (LSA_HANDLE)0xcafe;
|
||||
diff --git a/dlls/advapi32/tests/lsa.c b/dlls/advapi32/tests/lsa.c
|
||||
index 4daf75f58d1..7ddda731be2 100644
|
||||
index 861fea0525e..bb291e65a71 100644
|
||||
--- a/dlls/advapi32/tests/lsa.c
|
||||
+++ b/dlls/advapi32/tests/lsa.c
|
||||
@@ -70,6 +70,8 @@ static BOOL init(void)
|
||||
@@ -39,6 +39,8 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
|
||||
|
||||
static void test_lsa(void)
|
||||
{
|
||||
@@ -35,7 +35,7 @@ index 4daf75f58d1..7ddda731be2 100644
|
||||
NTSTATUS status;
|
||||
LSA_HANDLE handle;
|
||||
LSA_OBJECT_ATTRIBUTES object_attributes;
|
||||
@@ -77,6 +79,14 @@ static void test_lsa(void)
|
||||
@@ -46,6 +48,14 @@ static void test_lsa(void)
|
||||
ZeroMemory(&object_attributes, sizeof(object_attributes));
|
||||
object_attributes.Length = sizeof(object_attributes);
|
||||
|
||||
@@ -43,13 +43,13 @@ index 4daf75f58d1..7ddda731be2 100644
|
||||
+ machine.Length = sizeof(machineW) - 2;
|
||||
+ machine.MaximumLength = sizeof(machineW);
|
||||
+
|
||||
+ status = pLsaOpenPolicy( &machine, &object_attributes, POLICY_LOOKUP_NAMES, &handle);
|
||||
+ status = LsaOpenPolicy( &machine, &object_attributes, POLICY_LOOKUP_NAMES, &handle);
|
||||
+ ok(status == RPC_NT_SERVER_UNAVAILABLE,
|
||||
+ "LsaOpenPolicy(POLICY_LOOKUP_NAMES) for invalid machine returned 0x%08x\n", status);
|
||||
+
|
||||
status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle);
|
||||
status = LsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle);
|
||||
ok(status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
|
||||
"LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08x\n", status);
|
||||
--
|
||||
2.11.0
|
||||
2.14.2
|
||||
|
||||
|
@@ -1,141 +0,0 @@
|
||||
From ca415799729a5330fc9def2df8fb9c4ffef80448 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 5 Mar 2017 23:50:06 +0100
|
||||
Subject: advapi32: Implement LsaLookupPrivilegeName.
|
||||
|
||||
---
|
||||
dlls/advapi32/advapi32_misc.h | 2 ++
|
||||
dlls/advapi32/lsa.c | 30 ++++++++++++++++++++++++++++--
|
||||
dlls/advapi32/security.c | 27 ++++++++++++++++++---------
|
||||
include/ntsecapi.h | 1 +
|
||||
4 files changed, 49 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/advapi32_misc.h b/dlls/advapi32/advapi32_misc.h
|
||||
index d116ecb836e..ecb07f635a6 100644
|
||||
--- a/dlls/advapi32/advapi32_misc.h
|
||||
+++ b/dlls/advapi32/advapi32_misc.h
|
||||
@@ -68,4 +68,6 @@ static inline WCHAR *strdupAW( const char *src )
|
||||
return dst;
|
||||
}
|
||||
|
||||
+const WCHAR * const WellKnownPrivNames[SE_MAX_WELL_KNOWN_PRIVILEGE + 1];
|
||||
+
|
||||
#endif /* __WINE_ADVAPI32MISC_H */
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index 61c91f497eb..e6f88d2fa73 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -983,6 +983,32 @@ NTSTATUS WINAPI LsaLookupPrivilegeName(
|
||||
LUID *luid,
|
||||
UNICODE_STRING **name)
|
||||
{
|
||||
- FIXME("(%p,%p,%p) stub\n", handle, luid, name);
|
||||
- return STATUS_NO_SUCH_PRIVILEGE;
|
||||
+ UNICODE_STRING *priv_unicode;
|
||||
+ size_t priv_size;
|
||||
+ WCHAR *strW;
|
||||
+
|
||||
+ TRACE("(%p, %p, %p)\n", handle, luid, name);
|
||||
+
|
||||
+ if (!handle)
|
||||
+ return STATUS_INVALID_HANDLE;
|
||||
+
|
||||
+ if (!name)
|
||||
+ return STATUS_INVALID_PARAMETER;
|
||||
+
|
||||
+ if (luid->HighPart ||
|
||||
+ (luid->LowPart < SE_MIN_WELL_KNOWN_PRIVILEGE ||
|
||||
+ luid->LowPart > SE_MAX_WELL_KNOWN_PRIVILEGE ||
|
||||
+ !WellKnownPrivNames[luid->LowPart]))
|
||||
+ return STATUS_NO_SUCH_PRIVILEGE;
|
||||
+
|
||||
+ priv_size = (strlenW(WellKnownPrivNames[luid->LowPart]) + 1) * sizeof(WCHAR);
|
||||
+ priv_unicode = heap_alloc(sizeof(*priv_unicode) + priv_size);
|
||||
+ if (!priv_unicode) return STATUS_NO_MEMORY;
|
||||
+
|
||||
+ strW = (WCHAR *)(priv_unicode + 1);
|
||||
+ strcpyW(strW, WellKnownPrivNames[luid->LowPart]);
|
||||
+ RtlInitUnicodeString(priv_unicode, strW);
|
||||
+
|
||||
+ *name = priv_unicode;
|
||||
+ return STATUS_SUCCESS;
|
||||
}
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index e36792cff4b..3bc8f48b19c 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -1840,7 +1840,7 @@ static const WCHAR SE_IMPERSONATE_NAME_W[] =
|
||||
static const WCHAR SE_CREATE_GLOBAL_NAME_W[] =
|
||||
{ 'S','e','C','r','e','a','t','e','G','l','o','b','a','l','P','r','i','v','i','l','e','g','e',0 };
|
||||
|
||||
-static const WCHAR * const WellKnownPrivNames[SE_MAX_WELL_KNOWN_PRIVILEGE + 1] =
|
||||
+const WCHAR * const WellKnownPrivNames[SE_MAX_WELL_KNOWN_PRIVILEGE + 1] =
|
||||
{
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -2043,33 +2043,42 @@ BOOL WINAPI
|
||||
LookupPrivilegeNameW( LPCWSTR lpSystemName, PLUID lpLuid, LPWSTR lpName,
|
||||
LPDWORD cchName)
|
||||
{
|
||||
+ UNICODE_STRING system_name, *priv;
|
||||
+ LSA_HANDLE lsa;
|
||||
+ NTSTATUS status;
|
||||
size_t privNameLen;
|
||||
|
||||
TRACE("%s,%p,%p,%p\n",debugstr_w(lpSystemName), lpLuid, lpName, cchName);
|
||||
|
||||
- if (!ADVAPI_IsLocalComputer(lpSystemName))
|
||||
+ RtlInitUnicodeString(&system_name, lpSystemName);
|
||||
+ status = LsaOpenPolicy(&system_name, NULL, POLICY_LOOKUP_NAMES, &lsa);
|
||||
+ if (status)
|
||||
{
|
||||
- SetLastError(RPC_S_SERVER_UNAVAILABLE);
|
||||
+ SetLastError(LsaNtStatusToWinError(status));
|
||||
return FALSE;
|
||||
}
|
||||
- if (lpLuid->HighPart || (lpLuid->LowPart < SE_MIN_WELL_KNOWN_PRIVILEGE ||
|
||||
- lpLuid->LowPart > SE_MAX_WELL_KNOWN_PRIVILEGE))
|
||||
+
|
||||
+ status = LsaLookupPrivilegeName(&lsa, lpLuid, &priv);
|
||||
+ LsaClose(lsa);
|
||||
+ if (status)
|
||||
{
|
||||
- SetLastError(ERROR_NO_SUCH_PRIVILEGE);
|
||||
+ SetLastError(LsaNtStatusToWinError(status));
|
||||
return FALSE;
|
||||
}
|
||||
- privNameLen = strlenW(WellKnownPrivNames[lpLuid->LowPart]);
|
||||
- /* Windows crashes if cchName is NULL, so will I */
|
||||
+
|
||||
+ privNameLen = priv->Length / sizeof(WCHAR);
|
||||
if (*cchName <= privNameLen)
|
||||
{
|
||||
*cchName = privNameLen + 1;
|
||||
+ LsaFreeMemory(priv);
|
||||
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
- strcpyW(lpName, WellKnownPrivNames[lpLuid->LowPart]);
|
||||
+ strcpyW(lpName, priv->Buffer);
|
||||
*cchName = privNameLen;
|
||||
+ LsaFreeMemory(priv);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
diff --git a/include/ntsecapi.h b/include/ntsecapi.h
|
||||
index 2bb3d312e43..0bf0eca43ed 100644
|
||||
--- a/include/ntsecapi.h
|
||||
+++ b/include/ntsecapi.h
|
||||
@@ -370,6 +370,7 @@ NTSTATUS WINAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,PLSA_REFEREN
|
||||
PLSA_TRANSLATED_SID*);
|
||||
NTSTATUS WINAPI LsaLookupNames2(LSA_HANDLE,ULONG,ULONG,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,
|
||||
PLSA_TRANSLATED_SID2*);
|
||||
+NTSTATUS WINAPI LsaLookupPrivilegeName(LSA_HANDLE,PLUID,PUNICODE_STRING*);
|
||||
NTSTATUS WINAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID *,PLSA_REFERENCED_DOMAIN_LIST *,PLSA_TRANSLATED_NAME *);
|
||||
ULONG WINAPI LsaNtStatusToWinError(NTSTATUS);
|
||||
NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
|
||||
--
|
||||
2.14.1
|
||||
|
@@ -1,62 +0,0 @@
|
||||
From 63d642a1af3ccc579123cb8fd13959ab5e9136dd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 6 Mar 2017 00:01:53 +0100
|
||||
Subject: advapi32: Add stub for LsaLookupPrivilegeDisplayName.
|
||||
|
||||
---
|
||||
dlls/advapi32/advapi32.spec | 2 +-
|
||||
dlls/advapi32/lsa.c | 21 +++++++++++++++++++++
|
||||
2 files changed, 22 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
|
||||
index 124f527282..0b03cec3f5 100644
|
||||
--- a/dlls/advapi32/advapi32.spec
|
||||
+++ b/dlls/advapi32/advapi32.spec
|
||||
@@ -468,7 +468,7 @@
|
||||
# @ stub LsaICLookupSidsWithCreds
|
||||
@ stdcall LsaLookupNames(long long ptr ptr ptr)
|
||||
@ stdcall LsaLookupNames2(ptr long long ptr ptr ptr)
|
||||
-@ stub LsaLookupPrivilegeDisplayName
|
||||
+@ stdcall LsaLookupPrivilegeDisplayName(long ptr ptr ptr)
|
||||
@ stdcall LsaLookupPrivilegeName(long ptr ptr)
|
||||
# @ stub LsaLookupPrivilegeValue
|
||||
@ stdcall LsaLookupSids(ptr long ptr ptr ptr)
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index ceb3b05c05..c2e02fb462 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -44,6 +44,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(advapi);
|
||||
return FailureCode; \
|
||||
}
|
||||
|
||||
+static LPCSTR debugstr_us( const UNICODE_STRING *us )
|
||||
+{
|
||||
+ if (!us) return "(null)";
|
||||
+ return debugstr_wn(us->Buffer, us->Length / sizeof(WCHAR));
|
||||
+}
|
||||
+
|
||||
static void dumpLsaAttributes(const LSA_OBJECT_ATTRIBUTES *oa)
|
||||
{
|
||||
if (oa)
|
||||
@@ -1011,3 +1017,18 @@ NTSTATUS WINAPI LsaLookupPrivilegeName(
|
||||
*name = priv_unicode;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * LsaLookupPrivilegeDisplayName [ADVAPI32.@]
|
||||
+ *
|
||||
+ */
|
||||
+NTSTATUS WINAPI LsaLookupPrivilegeDisplayName(
|
||||
+ LSA_HANDLE handle,
|
||||
+ PLSA_UNICODE_STRING name,
|
||||
+ PLSA_UNICODE_STRING *dispname,
|
||||
+ SHORT *language)
|
||||
+{
|
||||
+ FIXME("(%p, %s, %p, %p)\n", handle, debugstr_us(name), dispname, language);
|
||||
+
|
||||
+ return STATUS_NO_SUCH_PRIVILEGE;
|
||||
+}
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [43316] Add LsaLookupPrivilege[Display]Name stubs
|
@@ -1,26 +0,0 @@
|
||||
From 1678dc51bead9b84a2670e122c87f70d1c023935 Mon Sep 17 00:00:00 2001
|
||||
From: Hans Leidekker <hans@codeweavers.com>
|
||||
Date: Thu, 17 Aug 2017 18:02:53 +0200
|
||||
Subject: include: Add missing BCRYPT_CHAIN_MODE definitions.
|
||||
|
||||
---
|
||||
include/bcrypt.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/include/bcrypt.h b/include/bcrypt.h
|
||||
index 9e193da5de5..34ffc100d6b 100644
|
||||
--- a/include/bcrypt.h
|
||||
+++ b/include/bcrypt.h
|
||||
@@ -74,6 +74,9 @@ typedef LONG NTSTATUS;
|
||||
#define BCRYPT_CHAIN_MODE_NA (const WCHAR []){'C','h','a','i','n','i','n','g','M','o','d','e','N','/','A',0}
|
||||
#define BCRYPT_CHAIN_MODE_CBC (const WCHAR []){'C','h','a','i','n','i','n','g','M','o','d','e','C','B','C',0}
|
||||
#define BCRYPT_CHAIN_MODE_ECB (const WCHAR []){'C','h','a','i','n','i','n','g','M','o','d','e','E','C','B',0}
|
||||
+#define BCRYPT_CHAIN_MODE_CFB (const WCHAR []){'C','h','a','i','n','i','n','g','M','o','d','e','C','F','B',0}
|
||||
+#define BCRYPT_CHAIN_MODE_CCM (const WCHAR []){'C','h','a','i','n','i','n','g','M','o','d','e','C','C','M',0}
|
||||
+#define BCRYPT_CHAIN_MODE_GCM (const WCHAR []){'C','h','a','i','n','i','n','g','M','o','d','e','G','C','M',0}
|
||||
|
||||
typedef struct _BCRYPT_ALGORITHM_IDENTIFIER
|
||||
{
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 9953d63a9b6250e72c618ea12ece1bc281790c6f Mon Sep 17 00:00:00 2001
|
||||
From 3eb7b781849135fefeece9ca257ca9673b1545fd Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Sun, 16 Jul 2017 18:13:31 +0200
|
||||
Subject: d3dx9_36: Add semi-stub for D3DXOptimizeVertices.
|
||||
@@ -29,7 +29,7 @@ Subject: d3dx9_36: Add semi-stub for D3DXOptimizeVertices.
|
||||
22 files changed, 69 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_24/d3dx9_24.spec b/dlls/d3dx9_24/d3dx9_24.spec
|
||||
index b524fadf93d..88cbcc30db5 100644
|
||||
index 0ca8777efe6..9b52c2bf307 100644
|
||||
--- a/dlls/d3dx9_24/d3dx9_24.spec
|
||||
+++ b/dlls/d3dx9_24/d3dx9_24.spec
|
||||
@@ -226,7 +226,7 @@
|
||||
@@ -42,7 +42,7 @@ index b524fadf93d..88cbcc30db5 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_25/d3dx9_25.spec b/dlls/d3dx9_25/d3dx9_25.spec
|
||||
index 9344e44d687..55ee0ab1f4f 100644
|
||||
index a5449810a43..fc75dfd9c04 100644
|
||||
--- a/dlls/d3dx9_25/d3dx9_25.spec
|
||||
+++ b/dlls/d3dx9_25/d3dx9_25.spec
|
||||
@@ -226,7 +226,7 @@
|
||||
@@ -55,7 +55,7 @@ index 9344e44d687..55ee0ab1f4f 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_26/d3dx9_26.spec b/dlls/d3dx9_26/d3dx9_26.spec
|
||||
index 7a28ca6e7ee..11b64446c8a 100644
|
||||
index 9e1200442f4..85d9fc5332e 100644
|
||||
--- a/dlls/d3dx9_26/d3dx9_26.spec
|
||||
+++ b/dlls/d3dx9_26/d3dx9_26.spec
|
||||
@@ -230,7 +230,7 @@
|
||||
@@ -68,7 +68,7 @@ index 7a28ca6e7ee..11b64446c8a 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_27/d3dx9_27.spec b/dlls/d3dx9_27/d3dx9_27.spec
|
||||
index 7a28ca6e7ee..11b64446c8a 100644
|
||||
index 9e1200442f4..85d9fc5332e 100644
|
||||
--- a/dlls/d3dx9_27/d3dx9_27.spec
|
||||
+++ b/dlls/d3dx9_27/d3dx9_27.spec
|
||||
@@ -230,7 +230,7 @@
|
||||
@@ -81,7 +81,7 @@ index 7a28ca6e7ee..11b64446c8a 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_28/d3dx9_28.spec b/dlls/d3dx9_28/d3dx9_28.spec
|
||||
index da49c9e23b5..936c00152b3 100644
|
||||
index b316a23baf1..62673ccd7af 100644
|
||||
--- a/dlls/d3dx9_28/d3dx9_28.spec
|
||||
+++ b/dlls/d3dx9_28/d3dx9_28.spec
|
||||
@@ -230,7 +230,7 @@
|
||||
@@ -94,7 +94,7 @@ index da49c9e23b5..936c00152b3 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_29/d3dx9_29.spec b/dlls/d3dx9_29/d3dx9_29.spec
|
||||
index da49c9e23b5..936c00152b3 100644
|
||||
index b316a23baf1..62673ccd7af 100644
|
||||
--- a/dlls/d3dx9_29/d3dx9_29.spec
|
||||
+++ b/dlls/d3dx9_29/d3dx9_29.spec
|
||||
@@ -230,7 +230,7 @@
|
||||
@@ -107,7 +107,7 @@ index da49c9e23b5..936c00152b3 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_30/d3dx9_30.spec b/dlls/d3dx9_30/d3dx9_30.spec
|
||||
index c8648fb984f..a5a972c2dc5 100644
|
||||
index e00fa547862..2c7575d88fc 100644
|
||||
--- a/dlls/d3dx9_30/d3dx9_30.spec
|
||||
+++ b/dlls/d3dx9_30/d3dx9_30.spec
|
||||
@@ -230,7 +230,7 @@
|
||||
@@ -120,7 +120,7 @@ index c8648fb984f..a5a972c2dc5 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_31/d3dx9_31.spec b/dlls/d3dx9_31/d3dx9_31.spec
|
||||
index 7f881ddaf8e..29b51c1b82f 100644
|
||||
index d308939ef67..a41eb3e9af2 100644
|
||||
--- a/dlls/d3dx9_31/d3dx9_31.spec
|
||||
+++ b/dlls/d3dx9_31/d3dx9_31.spec
|
||||
@@ -227,7 +227,7 @@
|
||||
@@ -133,7 +133,7 @@ index 7f881ddaf8e..29b51c1b82f 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_32/d3dx9_32.spec b/dlls/d3dx9_32/d3dx9_32.spec
|
||||
index 2f51ece333d..57112ecc1e4 100644
|
||||
index c2292dff396..eab56b3c9ee 100644
|
||||
--- a/dlls/d3dx9_32/d3dx9_32.spec
|
||||
+++ b/dlls/d3dx9_32/d3dx9_32.spec
|
||||
@@ -227,7 +227,7 @@
|
||||
@@ -146,7 +146,7 @@ index 2f51ece333d..57112ecc1e4 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_33/d3dx9_33.spec b/dlls/d3dx9_33/d3dx9_33.spec
|
||||
index 2f51ece333d..57112ecc1e4 100644
|
||||
index c2292dff396..eab56b3c9ee 100644
|
||||
--- a/dlls/d3dx9_33/d3dx9_33.spec
|
||||
+++ b/dlls/d3dx9_33/d3dx9_33.spec
|
||||
@@ -227,7 +227,7 @@
|
||||
@@ -159,7 +159,7 @@ index 2f51ece333d..57112ecc1e4 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_34/d3dx9_34.spec b/dlls/d3dx9_34/d3dx9_34.spec
|
||||
index 2f51ece333d..57112ecc1e4 100644
|
||||
index c2292dff396..eab56b3c9ee 100644
|
||||
--- a/dlls/d3dx9_34/d3dx9_34.spec
|
||||
+++ b/dlls/d3dx9_34/d3dx9_34.spec
|
||||
@@ -227,7 +227,7 @@
|
||||
@@ -172,7 +172,7 @@ index 2f51ece333d..57112ecc1e4 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_35/d3dx9_35.spec b/dlls/d3dx9_35/d3dx9_35.spec
|
||||
index 2f51ece333d..57112ecc1e4 100644
|
||||
index c2292dff396..eab56b3c9ee 100644
|
||||
--- a/dlls/d3dx9_35/d3dx9_35.spec
|
||||
+++ b/dlls/d3dx9_35/d3dx9_35.spec
|
||||
@@ -227,7 +227,7 @@
|
||||
@@ -185,7 +185,7 @@ index 2f51ece333d..57112ecc1e4 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
|
||||
index 0408ff9ffd0..83319500063 100644
|
||||
index 0fdf4e135e1..6201657d4a5 100644
|
||||
--- a/dlls/d3dx9_36/d3dx9_36.spec
|
||||
+++ b/dlls/d3dx9_36/d3dx9_36.spec
|
||||
@@ -229,7 +229,7 @@
|
||||
@@ -198,7 +198,7 @@ index 0408ff9ffd0..83319500063 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
|
||||
index c26aa7271f0..138d60a20a0 100644
|
||||
index 6294ce624fe..12cb7eb7258 100644
|
||||
--- a/dlls/d3dx9_36/mesh.c
|
||||
+++ b/dlls/d3dx9_36/mesh.c
|
||||
@@ -7184,6 +7184,33 @@ cleanup:
|
||||
@@ -236,7 +236,7 @@ index c26aa7271f0..138d60a20a0 100644
|
||||
* D3DXOptimizeFaces (D3DX9_36.@)
|
||||
*
|
||||
diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c
|
||||
index b1ab0aaf594..870285ad6ae 100644
|
||||
index f437a83cbd8..c5faae520c9 100644
|
||||
--- a/dlls/d3dx9_36/tests/mesh.c
|
||||
+++ b/dlls/d3dx9_36/tests/mesh.c
|
||||
@@ -10403,6 +10403,27 @@ cleanup:
|
||||
@@ -267,16 +267,16 @@ index b1ab0aaf594..870285ad6ae 100644
|
||||
static void test_optimize_faces(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
@@ -11216,6 +11237,7 @@ START_TEST(mesh)
|
||||
@@ -11291,6 +11312,7 @@ START_TEST(mesh)
|
||||
test_weld_vertices();
|
||||
test_clone_mesh();
|
||||
test_valid_mesh();
|
||||
+ test_optimize_vertices();
|
||||
test_optimize_faces();
|
||||
test_compute_normals();
|
||||
}
|
||||
test_D3DXFrameFind();
|
||||
diff --git a/dlls/d3dx9_37/d3dx9_37.spec b/dlls/d3dx9_37/d3dx9_37.spec
|
||||
index 0408ff9ffd0..83319500063 100644
|
||||
index 0fdf4e135e1..6201657d4a5 100644
|
||||
--- a/dlls/d3dx9_37/d3dx9_37.spec
|
||||
+++ b/dlls/d3dx9_37/d3dx9_37.spec
|
||||
@@ -229,7 +229,7 @@
|
||||
@@ -289,7 +289,7 @@ index 0408ff9ffd0..83319500063 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_38/d3dx9_38.spec b/dlls/d3dx9_38/d3dx9_38.spec
|
||||
index 0408ff9ffd0..83319500063 100644
|
||||
index 0fdf4e135e1..6201657d4a5 100644
|
||||
--- a/dlls/d3dx9_38/d3dx9_38.spec
|
||||
+++ b/dlls/d3dx9_38/d3dx9_38.spec
|
||||
@@ -229,7 +229,7 @@
|
||||
@@ -302,7 +302,7 @@ index 0408ff9ffd0..83319500063 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_39/d3dx9_39.spec b/dlls/d3dx9_39/d3dx9_39.spec
|
||||
index 0408ff9ffd0..83319500063 100644
|
||||
index 0fdf4e135e1..6201657d4a5 100644
|
||||
--- a/dlls/d3dx9_39/d3dx9_39.spec
|
||||
+++ b/dlls/d3dx9_39/d3dx9_39.spec
|
||||
@@ -229,7 +229,7 @@
|
||||
@@ -315,7 +315,7 @@ index 0408ff9ffd0..83319500063 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_40/d3dx9_40.spec b/dlls/d3dx9_40/d3dx9_40.spec
|
||||
index 0408ff9ffd0..83319500063 100644
|
||||
index 0fdf4e135e1..6201657d4a5 100644
|
||||
--- a/dlls/d3dx9_40/d3dx9_40.spec
|
||||
+++ b/dlls/d3dx9_40/d3dx9_40.spec
|
||||
@@ -229,7 +229,7 @@
|
||||
@@ -328,7 +328,7 @@ index 0408ff9ffd0..83319500063 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_41/d3dx9_41.spec b/dlls/d3dx9_41/d3dx9_41.spec
|
||||
index 0408ff9ffd0..83319500063 100644
|
||||
index 0fdf4e135e1..6201657d4a5 100644
|
||||
--- a/dlls/d3dx9_41/d3dx9_41.spec
|
||||
+++ b/dlls/d3dx9_41/d3dx9_41.spec
|
||||
@@ -229,7 +229,7 @@
|
||||
@@ -341,7 +341,7 @@ index 0408ff9ffd0..83319500063 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_42/d3dx9_42.spec b/dlls/d3dx9_42/d3dx9_42.spec
|
||||
index 23bb40d7b11..b1162de3d73 100644
|
||||
index 2f2ac5fd619..7cfc439f84b 100644
|
||||
--- a/dlls/d3dx9_42/d3dx9_42.spec
|
||||
+++ b/dlls/d3dx9_42/d3dx9_42.spec
|
||||
@@ -222,7 +222,7 @@
|
||||
@@ -354,7 +354,7 @@ index 23bb40d7b11..b1162de3d73 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
diff --git a/dlls/d3dx9_43/d3dx9_43.spec b/dlls/d3dx9_43/d3dx9_43.spec
|
||||
index 23bb40d7b11..b1162de3d73 100644
|
||||
index 2f2ac5fd619..7cfc439f84b 100644
|
||||
--- a/dlls/d3dx9_43/d3dx9_43.spec
|
||||
+++ b/dlls/d3dx9_43/d3dx9_43.spec
|
||||
@@ -222,7 +222,7 @@
|
||||
@@ -367,5 +367,5 @@ index 23bb40d7b11..b1162de3d73 100644
|
||||
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
|
||||
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
|
||||
--
|
||||
2.13.1
|
||||
2.14.2
|
||||
|
||||
|
@@ -1,309 +0,0 @@
|
||||
From 3055927f037fea93b5ebd4a38b1f0c70a7be4990 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Gusev <andrey.goosev@gmail.com>
|
||||
Date: Wed, 1 Apr 2015 20:59:49 +0300
|
||||
Subject: d3dx9_36: Add D3DXFrameFind stub.
|
||||
|
||||
---
|
||||
dlls/d3dx9_24/d3dx9_24.spec | 2 +-
|
||||
dlls/d3dx9_25/d3dx9_25.spec | 2 +-
|
||||
dlls/d3dx9_26/d3dx9_26.spec | 2 +-
|
||||
dlls/d3dx9_27/d3dx9_27.spec | 2 +-
|
||||
dlls/d3dx9_28/d3dx9_28.spec | 2 +-
|
||||
dlls/d3dx9_29/d3dx9_29.spec | 2 +-
|
||||
dlls/d3dx9_30/d3dx9_30.spec | 2 +-
|
||||
dlls/d3dx9_31/d3dx9_31.spec | 2 +-
|
||||
dlls/d3dx9_32/d3dx9_32.spec | 2 +-
|
||||
dlls/d3dx9_33/d3dx9_33.spec | 2 +-
|
||||
dlls/d3dx9_34/d3dx9_34.spec | 2 +-
|
||||
dlls/d3dx9_35/d3dx9_35.spec | 2 +-
|
||||
dlls/d3dx9_36/d3dx9_36.spec | 2 +-
|
||||
dlls/d3dx9_36/mesh.c | 6 ++++++
|
||||
dlls/d3dx9_37/d3dx9_37.spec | 2 +-
|
||||
dlls/d3dx9_38/d3dx9_38.spec | 2 +-
|
||||
dlls/d3dx9_39/d3dx9_39.spec | 2 +-
|
||||
dlls/d3dx9_40/d3dx9_40.spec | 2 +-
|
||||
dlls/d3dx9_41/d3dx9_41.spec | 2 +-
|
||||
dlls/d3dx9_42/d3dx9_42.spec | 2 +-
|
||||
dlls/d3dx9_43/d3dx9_43.spec | 2 +-
|
||||
21 files changed, 26 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_24/d3dx9_24.spec b/dlls/d3dx9_24/d3dx9_24.spec
|
||||
index f07ef54..5d03e3e 100644
|
||||
--- a/dlls/d3dx9_24/d3dx9_24.spec
|
||||
+++ b/dlls/d3dx9_24/d3dx9_24.spec
|
||||
@@ -131,7 +131,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_25/d3dx9_25.spec b/dlls/d3dx9_25/d3dx9_25.spec
|
||||
index 691f921..bc64b35 100644
|
||||
--- a/dlls/d3dx9_25/d3dx9_25.spec
|
||||
+++ b/dlls/d3dx9_25/d3dx9_25.spec
|
||||
@@ -131,7 +131,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_26/d3dx9_26.spec b/dlls/d3dx9_26/d3dx9_26.spec
|
||||
index 151e6f8..9e7bcc5 100644
|
||||
--- a/dlls/d3dx9_26/d3dx9_26.spec
|
||||
+++ b/dlls/d3dx9_26/d3dx9_26.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_27/d3dx9_27.spec b/dlls/d3dx9_27/d3dx9_27.spec
|
||||
index 151e6f8..9e7bcc5 100644
|
||||
--- a/dlls/d3dx9_27/d3dx9_27.spec
|
||||
+++ b/dlls/d3dx9_27/d3dx9_27.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_28/d3dx9_28.spec b/dlls/d3dx9_28/d3dx9_28.spec
|
||||
index 10f7620..4552e06 100644
|
||||
--- a/dlls/d3dx9_28/d3dx9_28.spec
|
||||
+++ b/dlls/d3dx9_28/d3dx9_28.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_29/d3dx9_29.spec b/dlls/d3dx9_29/d3dx9_29.spec
|
||||
index 10f7620..4552e06 100644
|
||||
--- a/dlls/d3dx9_29/d3dx9_29.spec
|
||||
+++ b/dlls/d3dx9_29/d3dx9_29.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_30/d3dx9_30.spec b/dlls/d3dx9_30/d3dx9_30.spec
|
||||
index 65aaeb5..5ec9060 100644
|
||||
--- a/dlls/d3dx9_30/d3dx9_30.spec
|
||||
+++ b/dlls/d3dx9_30/d3dx9_30.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_31/d3dx9_31.spec b/dlls/d3dx9_31/d3dx9_31.spec
|
||||
index 30d84a8..711581d 100644
|
||||
--- a/dlls/d3dx9_31/d3dx9_31.spec
|
||||
+++ b/dlls/d3dx9_31/d3dx9_31.spec
|
||||
@@ -134,7 +134,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_32/d3dx9_32.spec b/dlls/d3dx9_32/d3dx9_32.spec
|
||||
index 1ff0f41..0f083f5 100644
|
||||
--- a/dlls/d3dx9_32/d3dx9_32.spec
|
||||
+++ b/dlls/d3dx9_32/d3dx9_32.spec
|
||||
@@ -134,7 +134,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_33/d3dx9_33.spec b/dlls/d3dx9_33/d3dx9_33.spec
|
||||
index 1ff0f41..0f083f5 100644
|
||||
--- a/dlls/d3dx9_33/d3dx9_33.spec
|
||||
+++ b/dlls/d3dx9_33/d3dx9_33.spec
|
||||
@@ -134,7 +134,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_34/d3dx9_34.spec b/dlls/d3dx9_34/d3dx9_34.spec
|
||||
index 1ff0f41..0f083f5 100644
|
||||
--- a/dlls/d3dx9_34/d3dx9_34.spec
|
||||
+++ b/dlls/d3dx9_34/d3dx9_34.spec
|
||||
@@ -134,7 +134,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_35/d3dx9_35.spec b/dlls/d3dx9_35/d3dx9_35.spec
|
||||
index 1ff0f41..0f083f5 100644
|
||||
--- a/dlls/d3dx9_35/d3dx9_35.spec
|
||||
+++ b/dlls/d3dx9_35/d3dx9_35.spec
|
||||
@@ -134,7 +134,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
|
||||
index 20571b1..2b5035e 100644
|
||||
--- a/dlls/d3dx9_36/d3dx9_36.spec
|
||||
+++ b/dlls/d3dx9_36/d3dx9_36.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
|
||||
index b0b9846..aa98b1a 100644
|
||||
--- a/dlls/d3dx9_36/mesh.c
|
||||
+++ b/dlls/d3dx9_36/mesh.c
|
||||
@@ -4046,6 +4046,12 @@ HRESULT WINAPI D3DXFrameDestroy(D3DXFRAME *frame, ID3DXAllocateHierarchy *alloc_
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
+D3DXFRAME* WINAPI D3DXFrameFind(const D3DXFRAME *frame_root, const char *name)
|
||||
+{
|
||||
+ FIXME("frame_root %p, name %s stub.\n", frame_root, debugstr_a(name));
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
HRESULT WINAPI D3DXLoadMeshFromXA(const char *filename, DWORD options, struct IDirect3DDevice9 *device,
|
||||
struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
|
||||
DWORD *num_materials, struct ID3DXMesh **mesh)
|
||||
diff --git a/dlls/d3dx9_37/d3dx9_37.spec b/dlls/d3dx9_37/d3dx9_37.spec
|
||||
index 20571b1..2b5035e 100644
|
||||
--- a/dlls/d3dx9_37/d3dx9_37.spec
|
||||
+++ b/dlls/d3dx9_37/d3dx9_37.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_38/d3dx9_38.spec b/dlls/d3dx9_38/d3dx9_38.spec
|
||||
index 20571b1..2b5035e 100644
|
||||
--- a/dlls/d3dx9_38/d3dx9_38.spec
|
||||
+++ b/dlls/d3dx9_38/d3dx9_38.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_39/d3dx9_39.spec b/dlls/d3dx9_39/d3dx9_39.spec
|
||||
index 20571b1..2b5035e 100644
|
||||
--- a/dlls/d3dx9_39/d3dx9_39.spec
|
||||
+++ b/dlls/d3dx9_39/d3dx9_39.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_40/d3dx9_40.spec b/dlls/d3dx9_40/d3dx9_40.spec
|
||||
index 20571b1..2b5035e 100644
|
||||
--- a/dlls/d3dx9_40/d3dx9_40.spec
|
||||
+++ b/dlls/d3dx9_40/d3dx9_40.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_41/d3dx9_41.spec b/dlls/d3dx9_41/d3dx9_41.spec
|
||||
index 20571b1..2b5035e 100644
|
||||
--- a/dlls/d3dx9_41/d3dx9_41.spec
|
||||
+++ b/dlls/d3dx9_41/d3dx9_41.spec
|
||||
@@ -135,7 +135,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_42/d3dx9_42.spec b/dlls/d3dx9_42/d3dx9_42.spec
|
||||
index 0e888d7..1cf82a6 100644
|
||||
--- a/dlls/d3dx9_42/d3dx9_42.spec
|
||||
+++ b/dlls/d3dx9_42/d3dx9_42.spec
|
||||
@@ -133,7 +133,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
diff --git a/dlls/d3dx9_43/d3dx9_43.spec b/dlls/d3dx9_43/d3dx9_43.spec
|
||||
index 0e888d7..1cf82a6 100644
|
||||
--- a/dlls/d3dx9_43/d3dx9_43.spec
|
||||
+++ b/dlls/d3dx9_43/d3dx9_43.spec
|
||||
@@ -133,7 +133,7 @@
|
||||
@ stub D3DXFrameAppendChild(ptr ptr)
|
||||
@ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
|
||||
@ stdcall D3DXFrameDestroy(ptr ptr)
|
||||
-@ stub D3DXFrameFind(ptr str)
|
||||
+@ stdcall D3DXFrameFind(ptr str)
|
||||
@ stub D3DXFrameNumNamedMatrices(ptr)
|
||||
@ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
|
||||
@ stdcall D3DXFresnelTerm(float float)
|
||||
--
|
||||
2.9.0
|
||||
|
@@ -1,17 +1,17 @@
|
||||
From 69c020763f71d57ada7d5670883b36add6444039 Mon Sep 17 00:00:00 2001
|
||||
From 227e86c26da931222508fab0b175db09ce1b4ce2 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 6 May 2017 01:32:51 +0200
|
||||
Subject: d3dx9_36/tests: Fix some test failures.
|
||||
|
||||
---
|
||||
dlls/d3dx9_36/tests/math.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
dlls/d3dx9_36/tests/math.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/tests/math.c b/dlls/d3dx9_36/tests/math.c
|
||||
index 3843abea9be..d21a229bbbe 100644
|
||||
index 0e9853abe38..8bc462c48a4 100644
|
||||
--- a/dlls/d3dx9_36/tests/math.c
|
||||
+++ b/dlls/d3dx9_36/tests/math.c
|
||||
@@ -232,7 +232,7 @@ static void D3DXColorTest(void)
|
||||
@@ -244,7 +244,7 @@ static void D3DXColorTest(void)
|
||||
/*_______________D3DXColorLerp________________*/
|
||||
expected.r = 0.32f; expected.g = 0.69f; expected.b = 0.356f; expected.a = 0.897f;
|
||||
D3DXColorLerp(&got,&color,&color1,scale);
|
||||
@@ -20,16 +20,7 @@ index 3843abea9be..d21a229bbbe 100644
|
||||
/* Test the NULL case */
|
||||
funcpointer = D3DXColorLerp(&got,NULL,&color1,scale);
|
||||
ok(funcpointer == NULL, "Expected: %p, Got: %p\n", NULL, funcpointer);
|
||||
@@ -302,7 +302,7 @@ static void D3DXFresnelTest(void)
|
||||
BOOL equal;
|
||||
|
||||
fresnel = D3DXFresnelTerm(0.5f, 1.5f);
|
||||
- equal = compare_float(fresnel, 8.91867056e-02f, 1);
|
||||
+ equal = compare_float(fresnel, 8.91867056e-02f, 2);
|
||||
ok(equal, "Got unexpected Fresnel term %.8e.\n", fresnel);
|
||||
}
|
||||
|
||||
@@ -2947,7 +2947,7 @@ static void test_D3DXSHEvalDirectionalLight(void)
|
||||
@@ -2994,7 +2994,7 @@ static void test_D3DXSHEvalDirectionalLight(void)
|
||||
expected = j + test[l].boffset;
|
||||
else
|
||||
expected = test[l].blue_out[startindex + j];
|
||||
@@ -38,7 +29,7 @@ index 3843abea9be..d21a229bbbe 100644
|
||||
ok(equal, "Blue: case %u, order %u: expected[%u] = %.8e, received %.8e.\n",
|
||||
l, order, j, expected, blue_out[j]);
|
||||
}
|
||||
@@ -3292,7 +3292,7 @@ static void test_D3DXSHMultiply3(void)
|
||||
@@ -3339,7 +3339,7 @@ static void test_D3DXSHMultiply3(void)
|
||||
D3DXSHMultiply3(c, c, b);
|
||||
for (i = 0; i < ARRAY_SIZE(expected_aliased); ++i)
|
||||
{
|
||||
@@ -48,5 +39,5 @@ index 3843abea9be..d21a229bbbe 100644
|
||||
}
|
||||
}
|
||||
--
|
||||
2.12.2
|
||||
2.14.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From e7126b3b16c10175052730398d4f1e578b024747 Mon Sep 17 00:00:00 2001
|
||||
From 4ca5b86202106da7569f8156e0769aa6318c275d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 5 Feb 2017 11:54:21 +0100
|
||||
Subject: ws2_32/tests: Add test for completion notification flags.
|
||||
@@ -8,10 +8,10 @@ Subject: ws2_32/tests: Add test for completion notification flags.
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
|
||||
index 720808887cf..0b8682e2edc 100644
|
||||
index 179ace4c6ae..5504a0862a9 100644
|
||||
--- a/dlls/ws2_32/tests/sock.c
|
||||
+++ b/dlls/ws2_32/tests/sock.c
|
||||
@@ -78,6 +78,10 @@ static int (WINAPI *pWSAEnumNameSpaceProvidersA)(LPDWORD,LPWSANAMESPACE_INFOA)
|
||||
@@ -85,6 +85,10 @@ static int (WINAPI *pWSAEnumNameSpaceProvidersA)(LPDWORD,LPWSANAMESPACE_INFOA)
|
||||
static int (WINAPI *pWSAEnumNameSpaceProvidersW)(LPDWORD,LPWSANAMESPACE_INFOW);
|
||||
static int (WINAPI *pWSAPoll)(WSAPOLLFD *,ULONG,INT);
|
||||
|
||||
@@ -22,25 +22,19 @@ index 720808887cf..0b8682e2edc 100644
|
||||
/* Function pointers from iphlpapi */
|
||||
static DWORD (WINAPI *pGetAdaptersInfo)(PIP_ADAPTER_INFO,PULONG);
|
||||
static DWORD (WINAPI *pGetIpForwardTable)(PMIB_IPFORWARDTABLE,PULONG,BOOL);
|
||||
@@ -1222,6 +1226,7 @@ static void Init (void)
|
||||
WORD ver = MAKEWORD (2, 2);
|
||||
WSADATA data;
|
||||
HMODULE hws2_32 = GetModuleHandleA("ws2_32.dll"), hiphlpapi;
|
||||
+ HMODULE hntdll = GetModuleHandleA("ntdll.dll");
|
||||
@@ -1310,7 +1314,11 @@ static void Init (void)
|
||||
|
||||
pfreeaddrinfo = (void *)GetProcAddress(hws2_32, "freeaddrinfo");
|
||||
pgetaddrinfo = (void *)GetProcAddress(hws2_32, "getaddrinfo");
|
||||
@@ -1238,6 +1243,9 @@ static void Init (void)
|
||||
pWSAEnumNameSpaceProvidersW = (void *)GetProcAddress(hws2_32, "WSAEnumNameSpaceProvidersW");
|
||||
pWSAPoll = (void *)GetProcAddress(hws2_32, "WSAPoll");
|
||||
ntdll = LoadLibraryA("ntdll.dll");
|
||||
if (ntdll)
|
||||
+ {
|
||||
pNtClose = (void *)GetProcAddress(ntdll, "NtClose");
|
||||
+ pNtSetInformationFile = (void *)GetProcAddress(ntdll, "NtSetInformationFile");
|
||||
+ pNtQueryInformationFile = (void *)GetProcAddress(ntdll, "NtQueryInformationFile");
|
||||
+ }
|
||||
|
||||
+ pNtSetInformationFile = (void *)GetProcAddress(hntdll, "NtSetInformationFile");
|
||||
+ pNtQueryInformationFile = (void *)GetProcAddress(hntdll, "NtQueryInformationFile");
|
||||
+
|
||||
hiphlpapi = LoadLibraryA("iphlpapi.dll");
|
||||
if (hiphlpapi)
|
||||
{
|
||||
@@ -9006,10 +9014,13 @@ end:
|
||||
ok ( WSAStartup ( ver, &data ) == 0, "WSAStartup failed\n" );
|
||||
tls = TlsAlloc();
|
||||
@@ -9623,10 +9631,13 @@ end:
|
||||
|
||||
static void test_completion_port(void)
|
||||
{
|
||||
@@ -54,7 +48,7 @@ index 720808887cf..0b8682e2edc 100644
|
||||
char buf[1024];
|
||||
WSABUF bufs;
|
||||
DWORD num_bytes, flags;
|
||||
@@ -9459,6 +9470,11 @@ static void test_completion_port(void)
|
||||
@@ -10238,6 +10249,11 @@ static void test_completion_port(void)
|
||||
io_port = CreateIoCompletionPort((HANDLE)dest, previous_port, 236, 0);
|
||||
ok(io_port != NULL, "failed to create completion port %u\n", GetLastError());
|
||||
|
||||
@@ -66,7 +60,7 @@ index 720808887cf..0b8682e2edc 100644
|
||||
bret = pAcceptEx(src, dest, buf, sizeof(buf) - 2*(sizeof(struct sockaddr_in) + 16),
|
||||
sizeof(struct sockaddr_in) + 16, sizeof(struct sockaddr_in) + 16,
|
||||
&num_bytes, &ov);
|
||||
@@ -9484,6 +9500,13 @@ static void test_completion_port(void)
|
||||
@@ -10263,6 +10279,13 @@ static void test_completion_port(void)
|
||||
ok(olp == &ov, "Overlapped structure is at %p\n", olp);
|
||||
ok(olp && (olp->Internal == (ULONG)STATUS_SUCCESS), "Internal status is %lx\n", olp ? olp->Internal : 0);
|
||||
|
||||
@@ -81,5 +75,5 @@ index 720808887cf..0b8682e2edc 100644
|
||||
key = 0xdeadbeef;
|
||||
num_bytes = 0xdeadbeef;
|
||||
--
|
||||
2.11.0
|
||||
2.14.2
|
||||
|
||||
|
@@ -1 +1 @@
|
||||
Fixes: [!18070] Workaround COM/MTA issues due to lack of separate msi custom action process
|
||||
Fixes: [18070] Workaround COM/MTA issues due to lack of separate msi custom action process
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 76d196e4f7e4b4a74dbd4777a29a39a3baf3762d Mon Sep 17 00:00:00 2001
|
||||
From 61bf2e5fc768bcdf7c28fa459c9e1f8a98912169 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 20:56:49 -0700
|
||||
Subject: ntdll: Add support for junction point creation.
|
||||
@@ -12,7 +12,7 @@ Subject: ntdll: Add support for junction point creation.
|
||||
create mode 100644 include/ntifs.h
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 9ebcdd54bc3..0ebbd3a90ec 100644
|
||||
index 6a456efc46c..a058e9b362f 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -108,12 +108,14 @@
|
||||
@@ -30,7 +30,7 @@ index 9ebcdd54bc3..0ebbd3a90ec 100644
|
||||
#define SECSPERDAY 86400
|
||||
#define SECS_1601_TO_1970 ((369 * 365 + 89) * (ULONGLONG)SECSPERDAY)
|
||||
|
||||
@@ -1655,6 +1657,76 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
|
||||
@@ -1653,6 +1655,76 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ index 9ebcdd54bc3..0ebbd3a90ec 100644
|
||||
/**************************************************************************
|
||||
* NtFsControlFile [NTDLL.@]
|
||||
* ZwFsControlFile [NTDLL.@]
|
||||
@@ -1807,11 +1879,30 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -1742,11 +1814,30 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -139,7 +139,7 @@ index 9ebcdd54bc3..0ebbd3a90ec 100644
|
||||
return server_ioctl_file( handle, event, apc, apc_context, io, code,
|
||||
in_buffer, in_size, out_buffer, out_size );
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index f66ac1d74f0..86fd6d0bc65 100644
|
||||
index d1b8e5fee84..cfa60961d6d 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -37,6 +37,7 @@
|
||||
@@ -150,7 +150,7 @@ index f66ac1d74f0..86fd6d0bc65 100644
|
||||
|
||||
#ifndef IO_COMPLETION_ALL_ACCESS
|
||||
#define IO_COMPLETION_ALL_ACCESS 0x001F0003
|
||||
@@ -4378,6 +4379,98 @@ static void test_query_ea(void)
|
||||
@@ -4374,6 +4375,98 @@ static void test_query_ea(void)
|
||||
#undef EA_BUFFER_SIZE
|
||||
}
|
||||
|
||||
@@ -249,24 +249,24 @@ index f66ac1d74f0..86fd6d0bc65 100644
|
||||
START_TEST(file)
|
||||
{
|
||||
HMODULE hkernel32 = GetModuleHandleA("kernel32.dll");
|
||||
@@ -4444,4 +4537,5 @@ START_TEST(file)
|
||||
@@ -4440,4 +4533,5 @@ START_TEST(file)
|
||||
test_ioctl();
|
||||
test_flush_buffers_file();
|
||||
test_query_ea();
|
||||
+ test_junction_points();
|
||||
}
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 1dd6aafa324..31a6ac1d441 100644
|
||||
index cc42f66ebd4..255797759fb 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -532,6 +532,7 @@ HEADER_SRCS = \
|
||||
@@ -550,6 +550,7 @@ HEADER_SRCS = \
|
||||
ntddstor.h \
|
||||
ntdef.h \
|
||||
ntdsapi.h \
|
||||
+ ntifs.h \
|
||||
ntlsa.h \
|
||||
ntquery.h \
|
||||
ntsecapi.h \
|
||||
ntsecpkg.h \
|
||||
diff --git a/include/ntifs.h b/include/ntifs.h
|
||||
new file mode 100644
|
||||
index 00000000000..db07c28a5df
|
||||
@@ -326,5 +326,5 @@ index 00000000000..db07c28a5df
|
||||
+
|
||||
+#endif /* __WINE_NTIFS_H */
|
||||
--
|
||||
2.13.1
|
||||
2.14.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 371486a6f5257c287886543b1d0c76ad60993998 Mon Sep 17 00:00:00 2001
|
||||
From b1f80a39d2034c62bbbf8a3e79e1d41e4b6257c4 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 15 Nov 2015 05:06:30 +0100
|
||||
Subject: oleaut32: Implement TMStubImpl_Invoke on x86_64.
|
||||
@@ -9,10 +9,10 @@ Subject: oleaut32: Implement TMStubImpl_Invoke on x86_64.
|
||||
2 files changed, 29 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c
|
||||
index c5aa374..bcea046 100644
|
||||
index 9fd0f0374ba..95bf2a7489a 100644
|
||||
--- a/dlls/oleaut32/tmarshal.c
|
||||
+++ b/dlls/oleaut32/tmarshal.c
|
||||
@@ -2071,7 +2071,7 @@ static HRESULT WINAPI
|
||||
@@ -2073,7 +2073,7 @@ static HRESULT WINAPI
|
||||
TMStubImpl_Invoke(
|
||||
LPRPCSTUBBUFFER iface, RPCOLEMESSAGE* xmsg,IRpcChannelBuffer*rpcchanbuf)
|
||||
{
|
||||
@@ -22,10 +22,10 @@ index c5aa374..bcea046 100644
|
||||
const FUNCDESC *fdesc;
|
||||
TMStubImpl *This = impl_from_IRpcStubBuffer(iface);
|
||||
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
|
||||
index 97f40bc..2d0768b 100644
|
||||
index a575597f1f7..b328db924e6 100644
|
||||
--- a/dlls/oleaut32/typelib.c
|
||||
+++ b/dlls/oleaut32/typelib.c
|
||||
@@ -6475,6 +6475,34 @@ __ASM_GLOBAL_FUNC( call_method,
|
||||
@@ -6422,6 +6422,34 @@ __ASM_GLOBAL_FUNC( call_method,
|
||||
/* same function but returning floating point */
|
||||
static double (CDECL * const call_double_method)(void*,int,const DWORD_PTR*) = (void *)call_method;
|
||||
|
||||
@@ -57,9 +57,9 @@ index 97f40bc..2d0768b 100644
|
||||
+ return res;
|
||||
+}
|
||||
+
|
||||
#endif /* __x86_64__ */
|
||||
#elif defined(__arm__)
|
||||
|
||||
static HRESULT userdefined_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, VARTYPE *vt)
|
||||
extern LONGLONG CDECL call_method( void *func, int nb_stk_args, const DWORD *stk_args, const DWORD *reg_args );
|
||||
--
|
||||
2.6.2
|
||||
2.14.2
|
||||
|
||||
|
@@ -52,13 +52,13 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "40b7831cd80607e42b9e1c910a62f022c45ac884"
|
||||
echo "53290d2ec483006656987352d53842ffc1852c91"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
version()
|
||||
{
|
||||
echo "Wine Staging 2.20"
|
||||
echo "Wine Staging 2.21"
|
||||
echo "Copyright (C) 2014-2017 the Wine Staging project authors."
|
||||
echo ""
|
||||
echo "Patchset to be applied on upstream Wine:"
|
||||
@@ -456,7 +456,6 @@ patch_enable_all ()
|
||||
enable_wined3d_Copy_Resource_Typeless="$1"
|
||||
enable_wined3d_Core_Context="$1"
|
||||
enable_wined3d_DXTn="$1"
|
||||
enable_wined3d_DrawIndirect="$1"
|
||||
enable_wined3d_Dual_Source_Blending="$1"
|
||||
enable_wined3d_GTX_560M="$1"
|
||||
enable_wined3d_GenerateMips="$1"
|
||||
@@ -471,7 +470,6 @@ patch_enable_all ()
|
||||
enable_wined3d_WINED3DFMT_R32G32_UINT="$1"
|
||||
enable_wined3d_WINED3D_RS_COLORWRITEENABLE="$1"
|
||||
enable_wined3d_buffer_create="$1"
|
||||
enable_wined3d_draw_primitive_arrays="$1"
|
||||
enable_wined3d_dxgi_swapchain_Present="$1"
|
||||
enable_wined3d_sample_c_lz="$1"
|
||||
enable_wined3d_wined3d_guess_gl_vendor="$1"
|
||||
@@ -1650,9 +1648,6 @@ patch_enable ()
|
||||
wined3d-DXTn)
|
||||
enable_wined3d_DXTn="$2"
|
||||
;;
|
||||
wined3d-DrawIndirect)
|
||||
enable_wined3d_DrawIndirect="$2"
|
||||
;;
|
||||
wined3d-Dual_Source_Blending)
|
||||
enable_wined3d_Dual_Source_Blending="$2"
|
||||
;;
|
||||
@@ -1695,9 +1690,6 @@ patch_enable ()
|
||||
wined3d-buffer_create)
|
||||
enable_wined3d_buffer_create="$2"
|
||||
;;
|
||||
wined3d-draw_primitive_arrays)
|
||||
enable_wined3d_draw_primitive_arrays="$2"
|
||||
;;
|
||||
wined3d-dxgi_swapchain_Present)
|
||||
enable_wined3d_dxgi_swapchain_Present="$2"
|
||||
;;
|
||||
@@ -2249,25 +2241,17 @@ if test "$enable_wined3d_dxgi_swapchain_Present" -eq 1; then
|
||||
if test "$enable_dxgi_DXGI_PRESENT_TEST" -gt 1; then
|
||||
abort "Patchset dxgi-DXGI_PRESENT_TEST disabled, but wined3d-dxgi_swapchain_Present depends on that."
|
||||
fi
|
||||
if test "$enable_wined3d_DrawIndirect" -gt 1; then
|
||||
abort "Patchset wined3d-DrawIndirect disabled, but wined3d-dxgi_swapchain_Present depends on that."
|
||||
fi
|
||||
if test "$enable_wined3d_Silence_FIXMEs" -gt 1; then
|
||||
abort "Patchset wined3d-Silence_FIXMEs disabled, but wined3d-dxgi_swapchain_Present depends on that."
|
||||
fi
|
||||
enable_dxgi_DXGI_PRESENT_TEST=1
|
||||
enable_wined3d_DrawIndirect=1
|
||||
enable_wined3d_Silence_FIXMEs=1
|
||||
fi
|
||||
|
||||
if test "$enable_wined3d_Indexed_Vertex_Blending" -eq 1; then
|
||||
if test "$enable_wined3d_DrawIndirect" -gt 1; then
|
||||
abort "Patchset wined3d-DrawIndirect disabled, but wined3d-Indexed_Vertex_Blending depends on that."
|
||||
fi
|
||||
if test "$enable_wined3d_WINED3D_RS_COLORWRITEENABLE" -gt 1; then
|
||||
abort "Patchset wined3d-WINED3D_RS_COLORWRITEENABLE disabled, but wined3d-Indexed_Vertex_Blending depends on that."
|
||||
fi
|
||||
enable_wined3d_DrawIndirect=1
|
||||
enable_wined3d_WINED3D_RS_COLORWRITEENABLE=1
|
||||
fi
|
||||
|
||||
@@ -2278,13 +2262,6 @@ if test "$enable_wined3d_WINED3D_RS_COLORWRITEENABLE" -eq 1; then
|
||||
enable_d3d11_Depth_Bias=1
|
||||
fi
|
||||
|
||||
if test "$enable_wined3d_DrawIndirect" -eq 1; then
|
||||
if test "$enable_wined3d_draw_primitive_arrays" -gt 1; then
|
||||
abort "Patchset wined3d-draw_primitive_arrays disabled, but wined3d-DrawIndirect depends on that."
|
||||
fi
|
||||
enable_wined3d_draw_primitive_arrays=1
|
||||
fi
|
||||
|
||||
if test "$enable_wined3d_CSMT_Helper" -eq 1; then
|
||||
if test "$enable_d3d11_Deferred_Context" -gt 1; then
|
||||
abort "Patchset d3d11-Deferred_Context disabled, but wined3d-CSMT_Helper depends on that."
|
||||
@@ -3099,23 +3076,15 @@ fi
|
||||
|
||||
# Patchset advapi-LsaLookupPrivilegeName
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#43316] Add LsaLookupPrivilege[Display]Name stubs
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/advapi32/advapi32.spec, dlls/advapi32/advapi32_misc.h, dlls/advapi32/lsa.c, dlls/advapi32/security.c,
|
||||
# | dlls/advapi32/tests/lsa.c, include/ntsecapi.h
|
||||
# | * dlls/advapi32/lsa.c, dlls/advapi32/tests/lsa.c
|
||||
# |
|
||||
if test "$enable_advapi_LsaLookupPrivilegeName" -eq 1; then
|
||||
patch_apply advapi-LsaLookupPrivilegeName/0001-advapi32-Fix-error-code-when-calling-LsaOpenPolicy-f.patch
|
||||
patch_apply advapi-LsaLookupPrivilegeName/0002-advapi32-Use-TRACE-for-LsaOpenPolicy-LsaClose.patch
|
||||
patch_apply advapi-LsaLookupPrivilegeName/0003-advapi32-Implement-LsaLookupPrivilegeName.patch
|
||||
patch_apply advapi-LsaLookupPrivilegeName/0004-advapi32-Add-stub-for-LsaLookupPrivilegeDisplayName.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "advapi32: Fix error code when calling LsaOpenPolicy for non existing remote machine.", 1 },';
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "advapi32: Use TRACE for LsaOpenPolicy/LsaClose.", 1 },';
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "advapi32: Implement LsaLookupPrivilegeName.", 1 },';
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "advapi32: Add stub for LsaLookupPrivilegeDisplayName.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
@@ -3571,7 +3540,6 @@ fi
|
||||
# | include/bcrypt.h, include/ntstatus.h
|
||||
# |
|
||||
if test "$enable_bcrypt_Improvements" -eq 1; then
|
||||
patch_apply bcrypt-Improvements/0001-include-Add-missing-BCRYPT_CHAIN_MODE-definitions.patch
|
||||
patch_apply bcrypt-Improvements/0010-bcrypt-tests-Add-test-for-bugs-in-BCryptGetProperty.patch
|
||||
patch_apply bcrypt-Improvements/0011-bcrypt-tests-Add-tests-for-AES-GCM-mode.patch
|
||||
patch_apply bcrypt-Improvements/0012-bcrypt-Pass-object-to-get_-alg-hash-_property-instea.patch
|
||||
@@ -3601,7 +3569,6 @@ if test "$enable_bcrypt_Improvements" -eq 1; then
|
||||
patch_apply bcrypt-Improvements/0036-bcrypt-tests-Add-simple-test-for-RSA.patch
|
||||
patch_apply bcrypt-Improvements/0037-bcrypt-Store-full-ECCKEY_BLOB-struct-in-BCryptImport.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Hans Leidekker", "include: Add missing BCRYPT_CHAIN_MODE definitions.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "bcrypt/tests: Add test for bugs in BCryptGetProperty.", 1 },';
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "bcrypt/tests: Add tests for AES GCM mode.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "bcrypt: Pass object to get_{alg,hash}_property instead of alg_id.", 1 },';
|
||||
@@ -4300,11 +4267,9 @@ fi
|
||||
# |
|
||||
if test "$enable_d3dx9_36_D3DXStubs" -eq 1; then
|
||||
patch_apply d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch
|
||||
patch_apply d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-D3DXFrameFind-stub.patch
|
||||
patch_apply d3dx9_36-D3DXStubs/0003-d3dx9-Implement-D3DXComputeTangent.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeNormalMap.", 1 },';
|
||||
printf '%s\n' '+ { "Andrey Gusev", "d3dx9_36: Add D3DXFrameFind stub.", 1 },';
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "d3dx9: Implement D3DXComputeTangent.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
@@ -9904,46 +9869,6 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wined3d-draw_primitive_arrays
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d11/tests/d3d11.c, dlls/wined3d/directx.c, dlls/wined3d/drawprim.c, dlls/wined3d/wined3d_gl.h
|
||||
# |
|
||||
if test "$enable_wined3d_draw_primitive_arrays" -eq 1; then
|
||||
patch_apply wined3d-draw_primitive_arrays/0001-d3d11-tests-Add-basic-instance-offset-drawing-test.patch
|
||||
patch_apply wined3d-draw_primitive_arrays/0002-wined3d-Add-support-for-start-instance-in-draw_primi.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "d3d11/tests: Add basic instance offset drawing test.", 1 },';
|
||||
printf '%s\n' '+ { "Michael MĂĽller", "wined3d: Add support for start instance in draw_primitive_arrays.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wined3d-DrawIndirect
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * wined3d-draw_primitive_arrays
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#43405] Implement support for indirect drawing / compute shader dispatching
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d11/device.c, dlls/d3d11/tests/d3d11.c, dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/directx.c,
|
||||
# | dlls/wined3d/drawprim.c, dlls/wined3d/wined3d.spec, dlls/wined3d/wined3d_gl.h, dlls/wined3d/wined3d_private.h,
|
||||
# | include/wine/wined3d.h
|
||||
# |
|
||||
if test "$enable_wined3d_DrawIndirect" -eq 1; then
|
||||
patch_apply wined3d-DrawIndirect/0002-d3d11-tests-Add-a-basic-test-for-DispatchIndirect.patch
|
||||
patch_apply wined3d-DrawIndirect/0003-wined3d-Implement-indirect-drawing.patch
|
||||
patch_apply wined3d-DrawIndirect/0004-wined3d-Implement-DrawInstancedIndirect.patch
|
||||
patch_apply wined3d-DrawIndirect/0005-d3d11-tests-Add-a-basic-test-for-DrawInstancedIndire.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "d3d11/tests: Add a basic test for DispatchIndirect.", 1 },';
|
||||
printf '%s\n' '+ { "JĂłzef Kucia", "wined3d: Implement indirect drawing.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Implement DrawInstancedIndirect.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "d3d11/tests: Add a basic test for DrawInstancedIndirect.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wined3d-GTX_560M
|
||||
# |
|
||||
# | Modified files:
|
||||
@@ -9976,7 +9901,7 @@ fi
|
||||
# Patchset wined3d-Indexed_Vertex_Blending
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * wined3d-draw_primitive_arrays, wined3d-DrawIndirect, d3d11-Depth_Bias, wined3d-WINED3D_RS_COLORWRITEENABLE
|
||||
# | * d3d11-Depth_Bias, wined3d-WINED3D_RS_COLORWRITEENABLE
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#39057] Support for indexed vertex blending
|
||||
@@ -10062,7 +9987,7 @@ fi
|
||||
# Patchset wined3d-dxgi_swapchain_Present
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * dxgi-DXGI_PRESENT_TEST, wined3d-draw_primitive_arrays, wined3d-DrawIndirect, wined3d-Silence_FIXMEs
|
||||
# | * dxgi-DXGI_PRESENT_TEST, wined3d-Silence_FIXMEs
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d8/swapchain.c, dlls/d3d9/device.c, dlls/d3d9/swapchain.c, dlls/dxgi/swapchain.c, dlls/wined3d/cs.c,
|
||||
@@ -10078,9 +10003,6 @@ fi
|
||||
|
||||
# Patchset wined3d-sample_c_lz
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#42863] Emulate sample_c_lz using textureGradOffset for sampler2DArrayShadow
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/wined3d/glsl_shader.c
|
||||
# |
|
||||
|
@@ -47,7 +47,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
};
|
||||
|
||||
struct wined3d_cs_add_dirty_texture_region
|
||||
@@ -2264,6 +2267,53 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
|
||||
@@ -2247,6 +2250,53 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
|
||||
unsigned int slice_pitch)
|
||||
{
|
||||
struct wined3d_cs_update_sub_resource *op;
|
||||
@@ -101,7 +101,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
|
||||
op = cs->ops->require_space(cs, sizeof(*op), WINED3D_CS_QUEUE_MAP);
|
||||
op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
|
||||
@@ -2277,8 +2327,10 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
|
||||
@@ -2260,8 +2310,10 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
|
||||
wined3d_resource_acquire(resource);
|
||||
|
||||
cs->ops->submit(cs, WINED3D_CS_QUEUE_MAP);
|
||||
@@ -112,7 +112,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
cs->ops->finish(cs, WINED3D_CS_QUEUE_MAP);
|
||||
}
|
||||
|
||||
@@ -2657,6 +2709,13 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
@@ -2640,6 +2692,13 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
/* WINED3D_CS_OP_GENERATE_MIPS */ wined3d_cs_exec_generate_mips,
|
||||
};
|
||||
|
||||
@@ -126,7 +126,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size, enum wined3d_cs_queue_id queue_id)
|
||||
{
|
||||
if (size > (cs->data_size - cs->end))
|
||||
@@ -2710,6 +2769,9 @@ static void wined3d_cs_st_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id
|
||||
@@ -2693,6 +2752,9 @@ static void wined3d_cs_st_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id
|
||||
|
||||
static const struct wined3d_cs_ops wined3d_cs_st_ops =
|
||||
{
|
||||
@@ -136,7 +136,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
wined3d_cs_st_require_space,
|
||||
wined3d_cs_st_submit,
|
||||
wined3d_cs_st_finish,
|
||||
@@ -2743,6 +2805,21 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs, enum wined3d_cs_queue_id
|
||||
@@ -2726,6 +2788,21 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs, enum wined3d_cs_queue_id
|
||||
wined3d_cs_queue_submit(&cs->queue[queue_id], cs);
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size_t size, struct wined3d_cs *cs)
|
||||
{
|
||||
size_t queue_size = ARRAY_SIZE(queue->data);
|
||||
@@ -2804,6 +2881,16 @@ static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size
|
||||
@@ -2787,6 +2864,16 @@ static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size
|
||||
return packet->data;
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, enum wined3d_cs_queue_id queue_id)
|
||||
{
|
||||
if (cs->thread_id == GetCurrentThreadId())
|
||||
@@ -2823,6 +2910,9 @@ static void wined3d_cs_mt_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id
|
||||
@@ -2806,6 +2893,9 @@ static void wined3d_cs_mt_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id
|
||||
|
||||
static const struct wined3d_cs_ops wined3d_cs_mt_ops =
|
||||
{
|
||||
@@ -559,7 +559,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
|
||||
--- a/dlls/wined3d/view.c
|
||||
+++ b/dlls/wined3d/view.c
|
||||
@@ -722,6 +722,10 @@ static void wined3d_shader_resource_view_cs_init(void *object)
|
||||
@@ -726,6 +726,10 @@ static void wined3d_shader_resource_view_cs_init(void *object)
|
||||
debug_d3dformat(resource->format->id), debug_d3dformat(view_format->id));
|
||||
}
|
||||
}
|
||||
@@ -570,7 +570,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
|
||||
}
|
||||
|
||||
static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view,
|
||||
@@ -738,6 +742,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
|
||||
@@ -742,6 +746,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
|
||||
|
||||
wined3d_resource_incref(view->resource = resource);
|
||||
|
||||
@@ -580,7 +580,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
|
||||
wined3d_cs_init_object(resource->device->cs, wined3d_shader_resource_view_cs_init, view);
|
||||
|
||||
return WINED3D_OK;
|
||||
@@ -984,6 +991,10 @@ static void wined3d_unordered_access_view_cs_init(void *object)
|
||||
@@ -988,6 +995,10 @@ static void wined3d_unordered_access_view_cs_init(void *object)
|
||||
desc, texture, view->format);
|
||||
}
|
||||
}
|
||||
@@ -591,7 +591,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
|
||||
}
|
||||
|
||||
static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view,
|
||||
@@ -1000,6 +1011,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
|
||||
@@ -1004,6 +1015,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
|
||||
|
||||
wined3d_resource_incref(view->resource = resource);
|
||||
|
||||
|
@@ -1,69 +0,0 @@
|
||||
From 92202c3bca8682b20eac8dd896e1a38e8123fb66 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 24 Jul 2017 19:38:41 +0200
|
||||
Subject: d3d11/tests: Add a basic test for DispatchIndirect.
|
||||
|
||||
---
|
||||
dlls/d3d11/tests/d3d11.c | 17 ++++++++++++++---
|
||||
1 file changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
|
||||
index 8c1e5809533..c1b7dfff839 100644
|
||||
--- a/dlls/d3d11/tests/d3d11.c
|
||||
+++ b/dlls/d3d11/tests/d3d11.c
|
||||
@@ -668,9 +668,10 @@ static void check_uav_desc_(unsigned int line, const D3D11_UNORDERED_ACCESS_VIEW
|
||||
}
|
||||
}
|
||||
|
||||
-#define create_buffer(a, b, c, d) create_buffer_(__LINE__, a, b, c, d)
|
||||
+#define create_buffer(a, b, c, d) create_buffer_(__LINE__, a, b, 0, c, d)
|
||||
+#define create_buffer_misc(a, b, c, d, e) create_buffer_(__LINE__, a, b, c, d, e)
|
||||
static ID3D11Buffer *create_buffer_(unsigned int line, ID3D11Device *device,
|
||||
- unsigned int bind_flags, unsigned int size, const void *data)
|
||||
+ unsigned int bind_flags, unsigned int misc_flags, unsigned int size, const void *data)
|
||||
{
|
||||
D3D11_SUBRESOURCE_DATA resource_data;
|
||||
D3D11_BUFFER_DESC buffer_desc;
|
||||
@@ -681,7 +682,7 @@ static ID3D11Buffer *create_buffer_(unsigned int line, ID3D11Device *device,
|
||||
buffer_desc.Usage = D3D11_USAGE_DEFAULT;
|
||||
buffer_desc.BindFlags = bind_flags;
|
||||
buffer_desc.CPUAccessFlags = 0;
|
||||
- buffer_desc.MiscFlags = 0;
|
||||
+ buffer_desc.MiscFlags = misc_flags;
|
||||
buffer_desc.StructureByteStride = 0;
|
||||
|
||||
resource_data.pSysMem = data;
|
||||
@@ -16567,6 +16568,7 @@ static void test_uav_load(void)
|
||||
|
||||
static void test_cs_uav_store(void)
|
||||
{
|
||||
+ static const unsigned int params[4] = {16, 16, 16, 0};
|
||||
static const D3D_FEATURE_LEVEL feature_level = D3D_FEATURE_LEVEL_11_0;
|
||||
D3D11_UNORDERED_ACCESS_VIEW_DESC uav_desc;
|
||||
static const float zero[4] = {0.0f};
|
||||
@@ -16578,6 +16580,7 @@ static void test_cs_uav_store(void)
|
||||
ID3D11Texture2D *texture;
|
||||
ID3D11ComputeShader *cs;
|
||||
ID3D11Device *device;
|
||||
+ ID3D11Buffer *buffer;
|
||||
ID3D11Buffer *cb;
|
||||
ULONG refcount;
|
||||
HRESULT hr;
|
||||
@@ -16844,6 +16847,14 @@ static void test_cs_uav_store(void)
|
||||
ID3D11DeviceContext_Dispatch(context, 16, 16, 1);
|
||||
check_texture_float(texture, 0.7f, 2);
|
||||
|
||||
+ input.x = 0.8f;
|
||||
+ buffer = create_buffer_misc(device, D3D11_BIND_UNORDERED_ACCESS,
|
||||
+ D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS, sizeof(params), params);
|
||||
+ ID3D11DeviceContext_UpdateSubresource(context, (ID3D11Resource *)cb, 0, NULL, &input, 0, 0);
|
||||
+ ID3D11DeviceContext_DispatchIndirect(context, buffer, 0);
|
||||
+ check_texture_float(texture, 0.8f, 2);
|
||||
+ ID3D11Buffer_Release(buffer);
|
||||
+
|
||||
ID3D11ComputeShader_Release(cs);
|
||||
|
||||
hr = ID3D11Device_CreateComputeShader(device, cs_group_index_code, sizeof(cs_group_index_code), NULL, &cs);
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1,427 +0,0 @@
|
||||
From 016f75697806c91b84dd0099396f13fce147e066 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?J=C3=B3zef=20Kucia?= <jkucia@codeweavers.com>
|
||||
Date: Sun, 23 Jul 2017 23:59:28 +0200
|
||||
Subject: wined3d: Implement indirect drawing.
|
||||
|
||||
---
|
||||
dlls/d3d11/device.c | 12 ++++-
|
||||
dlls/wined3d/cs.c | 99 ++++++++++++++++++++++++++++++++----------
|
||||
dlls/wined3d/device.c | 9 ++++
|
||||
dlls/wined3d/directx.c | 5 +++
|
||||
dlls/wined3d/drawprim.c | 68 ++++++++++++++++++++++++-----
|
||||
dlls/wined3d/wined3d.spec | 1 +
|
||||
dlls/wined3d/wined3d_gl.h | 1 +
|
||||
dlls/wined3d/wined3d_private.h | 31 ++++++++++++-
|
||||
include/wine/wined3d.h | 2 +
|
||||
9 files changed, 192 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
|
||||
index 9cffa8a9961..2ecce826042 100644
|
||||
--- a/dlls/d3d11/device.c
|
||||
+++ b/dlls/d3d11/device.c
|
||||
@@ -1786,7 +1786,17 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_DrawAuto(ID3D11DeviceConte
|
||||
static void STDMETHODCALLTYPE d3d11_immediate_context_DrawIndexedInstancedIndirect(ID3D11DeviceContext *iface,
|
||||
ID3D11Buffer *buffer, UINT offset)
|
||||
{
|
||||
- FIXME("iface %p, buffer %p, offset %u stub!\n", iface, buffer, offset);
|
||||
+ struct d3d_device *device = device_from_immediate_ID3D11DeviceContext(iface);
|
||||
+ struct d3d_buffer *d3d_buffer;
|
||||
+
|
||||
+ TRACE("iface %p, buffer %p, offset %u.\n", iface, buffer, offset);
|
||||
+
|
||||
+ d3d_buffer = unsafe_impl_from_ID3D11Buffer(buffer);
|
||||
+
|
||||
+ wined3d_mutex_lock();
|
||||
+ wined3d_device_draw_indexed_primitive_instanced_indirect(device->wined3d_device,
|
||||
+ d3d_buffer->wined3d_buffer, offset);
|
||||
+ wined3d_mutex_unlock();
|
||||
}
|
||||
|
||||
static void STDMETHODCALLTYPE d3d11_immediate_context_DrawInstancedIndirect(ID3D11DeviceContext *iface,
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index 171287dc99c..805867a3e20 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -121,12 +121,7 @@ struct wined3d_cs_draw
|
||||
enum wined3d_cs_op opcode;
|
||||
GLenum primitive_type;
|
||||
GLint patch_vertex_count;
|
||||
- int base_vertex_idx;
|
||||
- unsigned int start_idx;
|
||||
- unsigned int index_count;
|
||||
- unsigned int start_instance;
|
||||
- unsigned int instance_count;
|
||||
- BOOL indexed;
|
||||
+ struct wined3d_draw_parameters parameters;
|
||||
};
|
||||
|
||||
struct wined3d_cs_flush
|
||||
@@ -772,13 +767,6 @@ static void wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data)
|
||||
const struct wined3d_cs_draw *op = data;
|
||||
unsigned int i;
|
||||
|
||||
- if (!cs->device->adapter->gl_info.supported[ARB_DRAW_ELEMENTS_BASE_VERTEX]
|
||||
- && state->load_base_vertex_index != op->base_vertex_idx)
|
||||
- {
|
||||
- state->load_base_vertex_index = op->base_vertex_idx;
|
||||
- device_invalidate_state(cs->device, STATE_BASEVERTEXINDEX);
|
||||
- }
|
||||
-
|
||||
if (state->gl_primitive_type != op->primitive_type)
|
||||
{
|
||||
if (state->gl_primitive_type == GL_POINTS || op->primitive_type == GL_POINTS)
|
||||
@@ -787,10 +775,27 @@ static void wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data)
|
||||
}
|
||||
state->gl_patch_vertices = op->patch_vertex_count;
|
||||
|
||||
- draw_primitive(cs->device, state, op->base_vertex_idx, op->start_idx,
|
||||
- op->index_count, op->start_instance, op->instance_count, op->indexed);
|
||||
+ if (!op->parameters.indirect)
|
||||
+ {
|
||||
+ const struct wined3d_direct_draw_parameters *p = &op->parameters.u.direct;
|
||||
+
|
||||
+ if (!cs->device->adapter->gl_info.supported[ARB_DRAW_ELEMENTS_BASE_VERTEX]
|
||||
+ && state->load_base_vertex_index != p->base_vertex_idx)
|
||||
+ {
|
||||
+ state->load_base_vertex_index = p->base_vertex_idx;
|
||||
+ device_invalidate_state(cs->device, STATE_BASEVERTEXINDEX);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ draw_primitive(cs->device, state, &op->parameters);
|
||||
+
|
||||
+ if (op->parameters.indirect)
|
||||
+ {
|
||||
+ const struct wined3d_indirect_draw_parameters *p = &op->parameters.u.indirect;
|
||||
|
||||
- if (op->indexed)
|
||||
+ wined3d_resource_release(&p->buffer->resource);
|
||||
+ }
|
||||
+ if (op->parameters.indexed)
|
||||
wined3d_resource_release(&state->index_buffer->resource);
|
||||
for (i = 0; i < ARRAY_SIZE(state->streams); ++i)
|
||||
{
|
||||
@@ -831,12 +836,62 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned
|
||||
op->opcode = WINED3D_CS_OP_DRAW;
|
||||
op->primitive_type = primitive_type;
|
||||
op->patch_vertex_count = patch_vertex_count;
|
||||
- op->base_vertex_idx = base_vertex_idx;
|
||||
- op->start_idx = start_idx;
|
||||
- op->index_count = index_count;
|
||||
- op->start_instance = start_instance;
|
||||
- op->instance_count = instance_count;
|
||||
- op->indexed = indexed;
|
||||
+ op->parameters.indirect = FALSE;
|
||||
+ op->parameters.u.direct.base_vertex_idx = base_vertex_idx;
|
||||
+ op->parameters.u.direct.start_idx = start_idx;
|
||||
+ op->parameters.u.direct.index_count = index_count;
|
||||
+ op->parameters.u.direct.start_instance = start_instance;
|
||||
+ op->parameters.u.direct.instance_count = instance_count;
|
||||
+ op->parameters.indexed = indexed;
|
||||
+
|
||||
+ if (indexed)
|
||||
+ wined3d_resource_acquire(&state->index_buffer->resource);
|
||||
+ for (i = 0; i < ARRAY_SIZE(state->streams); ++i)
|
||||
+ {
|
||||
+ if (state->streams[i].buffer)
|
||||
+ wined3d_resource_acquire(&state->streams[i].buffer->resource);
|
||||
+ }
|
||||
+ for (i = 0; i < ARRAY_SIZE(state->stream_output); ++i)
|
||||
+ {
|
||||
+ if (state->stream_output[i].buffer)
|
||||
+ wined3d_resource_acquire(&state->stream_output[i].buffer->resource);
|
||||
+ }
|
||||
+ for (i = 0; i < ARRAY_SIZE(state->textures); ++i)
|
||||
+ {
|
||||
+ if (state->textures[i])
|
||||
+ wined3d_resource_acquire(&state->textures[i]->resource);
|
||||
+ }
|
||||
+ for (i = 0; i < cs->device->adapter->gl_info.limits.buffers; ++i)
|
||||
+ {
|
||||
+ if (state->fb->render_targets[i])
|
||||
+ wined3d_resource_acquire(state->fb->render_targets[i]->resource);
|
||||
+ }
|
||||
+ if (state->fb->depth_stencil)
|
||||
+ wined3d_resource_acquire(state->fb->depth_stencil->resource);
|
||||
+ acquire_shader_resources(state, ~(1u << WINED3D_SHADER_TYPE_COMPUTE));
|
||||
+ acquire_unordered_access_resources(state->shader[WINED3D_SHADER_TYPE_PIXEL],
|
||||
+ state->unordered_access_view[WINED3D_PIPELINE_GRAPHICS]);
|
||||
+
|
||||
+ cs->ops->submit(cs, WINED3D_CS_QUEUE_DEFAULT);
|
||||
+}
|
||||
+
|
||||
+void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
|
||||
+ struct wined3d_buffer *buffer, unsigned int offset, BOOL indexed)
|
||||
+{
|
||||
+ const struct wined3d_state *state = &cs->device->state;
|
||||
+ struct wined3d_cs_draw *op;
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ op = cs->ops->require_space(cs, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT);
|
||||
+ op->opcode = WINED3D_CS_OP_DRAW;
|
||||
+ op->primitive_type = primitive_type;
|
||||
+ op->patch_vertex_count = patch_vertex_count;
|
||||
+ op->parameters.indirect = TRUE;
|
||||
+ op->parameters.u.indirect.buffer = buffer;
|
||||
+ op->parameters.u.indirect.offset = offset;
|
||||
+ op->parameters.indexed = indexed;
|
||||
+
|
||||
+ wined3d_resource_acquire(&buffer->resource);
|
||||
|
||||
if (indexed)
|
||||
wined3d_resource_acquire(&state->index_buffer->resource);
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 54a058ae1ed..b6458cfde53 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -3782,6 +3782,15 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device
|
||||
device->state.base_vertex_index, start_idx, index_count, start_instance, instance_count, TRUE);
|
||||
}
|
||||
|
||||
+void CDECL wined3d_device_draw_indexed_primitive_instanced_indirect(struct wined3d_device *device,
|
||||
+ struct wined3d_buffer *buffer, unsigned int offset)
|
||||
+{
|
||||
+ TRACE("device %p, buffer %p, offset %u.\n", device, buffer, offset);
|
||||
+
|
||||
+ wined3d_cs_emit_draw_indirect(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
|
||||
+ buffer, offset, TRUE);
|
||||
+}
|
||||
+
|
||||
HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device,
|
||||
struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture)
|
||||
{
|
||||
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
index 82f6300d0f5..0553a16ee4e 100644
|
||||
--- a/dlls/wined3d/directx.c
|
||||
+++ b/dlls/wined3d/directx.c
|
||||
@@ -126,6 +126,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
|
||||
{"GL_ARB_derivative_control", ARB_DERIVATIVE_CONTROL },
|
||||
{"GL_ARB_draw_buffers", ARB_DRAW_BUFFERS },
|
||||
{"GL_ARB_draw_elements_base_vertex", ARB_DRAW_ELEMENTS_BASE_VERTEX },
|
||||
+ {"GL_ARB_draw_indirect", ARB_DRAW_INDIRECT },
|
||||
{"GL_ARB_draw_instanced", ARB_DRAW_INSTANCED },
|
||||
{"GL_ARB_ES2_compatibility", ARB_ES2_COMPATIBILITY },
|
||||
{"GL_ARB_ES3_compatibility", ARB_ES3_COMPATIBILITY },
|
||||
@@ -2735,6 +2736,9 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
|
||||
USE_GL_FUNC(glDrawElementsInstancedBaseVertex)
|
||||
USE_GL_FUNC(glDrawRangeElementsBaseVertex)
|
||||
USE_GL_FUNC(glMultiDrawElementsBaseVertex)
|
||||
+ /* GL_ARB_draw_indirect */
|
||||
+ USE_GL_FUNC(glDrawArraysIndirect)
|
||||
+ USE_GL_FUNC(glDrawElementsIndirect)
|
||||
/* GL_ARB_draw_instanced */
|
||||
USE_GL_FUNC(glDrawArraysInstancedARB)
|
||||
USE_GL_FUNC(glDrawElementsInstancedARB)
|
||||
@@ -3886,6 +3890,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
|
||||
{ARB_TIMER_QUERY, MAKEDWORD_VERSION(3, 3)},
|
||||
{ARB_VERTEX_TYPE_2_10_10_10_REV, MAKEDWORD_VERSION(3, 3)},
|
||||
|
||||
+ {ARB_DRAW_INDIRECT, MAKEDWORD_VERSION(4, 0)},
|
||||
{ARB_GPU_SHADER5, MAKEDWORD_VERSION(4, 0)},
|
||||
{ARB_TESSELLATION_SHADER, MAKEDWORD_VERSION(4, 0)},
|
||||
{ARB_TEXTURE_CUBE_MAP_ARRAY, MAKEDWORD_VERSION(4, 0)},
|
||||
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
|
||||
index 6de0d613d2d..bec0155c6ef 100644
|
||||
--- a/dlls/wined3d/drawprim.c
|
||||
+++ b/dlls/wined3d/drawprim.c
|
||||
@@ -168,6 +168,38 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
|
||||
}
|
||||
}
|
||||
|
||||
+/* Context activation is done by the caller. */
|
||||
+static void draw_primitive_arrays_indirect(struct wined3d_context *context, const struct wined3d_state *state,
|
||||
+ const void *idx_data, unsigned int idx_size, struct wined3d_buffer *buffer, unsigned int offset)
|
||||
+{
|
||||
+ const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
+
|
||||
+ if (!gl_info->supported[ARB_DRAW_INDIRECT])
|
||||
+ {
|
||||
+ FIXME("Indirect draw not supported.\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ wined3d_buffer_load(buffer, context, state);
|
||||
+ GL_EXTCALL(glBindBuffer(GL_DRAW_INDIRECT_BUFFER, buffer->buffer_object));
|
||||
+
|
||||
+ if (idx_size)
|
||||
+ {
|
||||
+ GLenum idx_type = (idx_size == 2) ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT;
|
||||
+
|
||||
+ GL_EXTCALL(glDrawElementsIndirect(state->gl_primitive_type, idx_type,
|
||||
+ (const BYTE *)NULL + offset));
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ GL_EXTCALL(glDrawArraysIndirect(state->gl_primitive_type,
|
||||
+ (const BYTE *)NULL + offset));
|
||||
+ }
|
||||
+
|
||||
+ GL_EXTCALL(glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0));
|
||||
+ checkGLcall("draw indirect");
|
||||
+}
|
||||
+
|
||||
static unsigned int get_stride_idx(const void *idx_data, unsigned int idx_size,
|
||||
unsigned int base_vertex_idx, unsigned int start_idx, unsigned int vertex_idx)
|
||||
{
|
||||
@@ -477,8 +509,7 @@ static GLenum gl_tfb_primitive_type_from_d3d(enum wined3d_primitive_type primiti
|
||||
|
||||
/* Routine common to the draw primitive and draw indexed primitive routines */
|
||||
void draw_primitive(struct wined3d_device *device, const struct wined3d_state *state,
|
||||
- int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
|
||||
- unsigned int start_instance, unsigned int instance_count, BOOL indexed)
|
||||
+ const struct wined3d_draw_parameters *parameters)
|
||||
{
|
||||
BOOL emulation = FALSE, rasterizer_discard = FALSE;
|
||||
const struct wined3d_fb_state *fb = state->fb;
|
||||
@@ -491,7 +522,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
unsigned int i, idx_size = 0;
|
||||
const void *idx_data = NULL;
|
||||
|
||||
- if (!index_count)
|
||||
+ if (!parameters->indirect && !parameters->u.direct.index_count)
|
||||
return;
|
||||
|
||||
if (!(rtv = fb->render_targets[0]))
|
||||
@@ -558,10 +589,8 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
}
|
||||
|
||||
stream_info = &context->stream_info;
|
||||
- if (context->instance_count)
|
||||
- instance_count = context->instance_count;
|
||||
|
||||
- if (indexed)
|
||||
+ if (parameters->indexed)
|
||||
{
|
||||
struct wined3d_buffer *index_buffer = state->index_buffer;
|
||||
if (!index_buffer->buffer_object || !stream_info->all_vbo)
|
||||
@@ -648,12 +677,29 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
checkGLcall("glPatchParameteri");
|
||||
}
|
||||
|
||||
- if (context->use_immediate_mode_draw || emulation)
|
||||
- draw_primitive_immediate_mode(context, state, stream_info, idx_data,
|
||||
- idx_size, base_vertex_idx, start_idx, index_count, instance_count);
|
||||
+ if (parameters->indirect)
|
||||
+ {
|
||||
+ if (context->use_immediate_mode_draw || emulation)
|
||||
+ FIXME("Indirect draw with immediate mode/emulation is not supported.\n");
|
||||
+ else
|
||||
+ draw_primitive_arrays_indirect(context, state, idx_data, idx_size,
|
||||
+ parameters->u.indirect.buffer, parameters->u.indirect.offset);
|
||||
+ }
|
||||
else
|
||||
- draw_primitive_arrays(context, state, idx_data, idx_size, base_vertex_idx,
|
||||
- start_idx, index_count, start_instance, instance_count);
|
||||
+ {
|
||||
+ unsigned int instance_count = parameters->u.direct.instance_count;
|
||||
+ if (context->instance_count)
|
||||
+ instance_count = context->instance_count;
|
||||
+
|
||||
+ if (context->use_immediate_mode_draw || emulation)
|
||||
+ draw_primitive_immediate_mode(context, state, stream_info, idx_data,
|
||||
+ idx_size, parameters->u.direct.base_vertex_idx,
|
||||
+ parameters->u.direct.start_idx, parameters->u.direct.index_count, instance_count);
|
||||
+ else
|
||||
+ draw_primitive_arrays(context, state, idx_data, idx_size, parameters->u.direct.base_vertex_idx,
|
||||
+ parameters->u.direct.start_idx, parameters->u.direct.index_count,
|
||||
+ parameters->u.direct.start_instance, instance_count);
|
||||
+ }
|
||||
|
||||
if (context->uses_uavs)
|
||||
{
|
||||
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
|
||||
index 122e39ba8ee..2d80b3a8772 100644
|
||||
--- a/dlls/wined3d/wined3d.spec
|
||||
+++ b/dlls/wined3d/wined3d.spec
|
||||
@@ -45,6 +45,7 @@
|
||||
@ cdecl wined3d_device_dispatch_compute_indirect(ptr ptr long)
|
||||
@ cdecl wined3d_device_draw_indexed_primitive(ptr long long)
|
||||
@ cdecl wined3d_device_draw_indexed_primitive_instanced(ptr long long long long)
|
||||
+@ cdecl wined3d_device_draw_indexed_primitive_instanced_indirect(ptr ptr long)
|
||||
@ cdecl wined3d_device_draw_primitive(ptr long long)
|
||||
@ cdecl wined3d_device_draw_primitive_instanced(ptr long long long long)
|
||||
@ cdecl wined3d_device_end_scene(ptr)
|
||||
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
|
||||
index 4fe1971b5e6..4f73478a3b4 100644
|
||||
--- a/dlls/wined3d/wined3d_gl.h
|
||||
+++ b/dlls/wined3d/wined3d_gl.h
|
||||
@@ -60,6 +60,7 @@ enum wined3d_gl_extension
|
||||
ARB_DERIVATIVE_CONTROL,
|
||||
ARB_DRAW_BUFFERS,
|
||||
ARB_DRAW_ELEMENTS_BASE_VERTEX,
|
||||
+ ARB_DRAW_INDIRECT,
|
||||
ARB_DRAW_INSTANCED,
|
||||
ARB_ES2_COMPATIBILITY,
|
||||
ARB_ES3_COMPATIBILITY,
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index e2461100a5a..50143a91425 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -1481,6 +1481,32 @@ void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_inf
|
||||
const struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
|
||||
const struct wined3d_d3d_info *d3d_info) DECLSPEC_HIDDEN;
|
||||
|
||||
+struct wined3d_direct_draw_parameters
|
||||
+{
|
||||
+ int base_vertex_idx;
|
||||
+ unsigned int start_idx;
|
||||
+ unsigned int index_count;
|
||||
+ unsigned int start_instance;
|
||||
+ unsigned int instance_count;
|
||||
+};
|
||||
+
|
||||
+struct wined3d_indirect_draw_parameters
|
||||
+{
|
||||
+ struct wined3d_buffer *buffer;
|
||||
+ unsigned int offset;
|
||||
+};
|
||||
+
|
||||
+struct wined3d_draw_parameters
|
||||
+{
|
||||
+ BOOL indirect;
|
||||
+ union
|
||||
+ {
|
||||
+ struct wined3d_direct_draw_parameters direct;
|
||||
+ struct wined3d_indirect_draw_parameters indirect;
|
||||
+ } u;
|
||||
+ BOOL indexed;
|
||||
+};
|
||||
+
|
||||
struct wined3d_direct_dispatch_parameters
|
||||
{
|
||||
unsigned int group_count_x;
|
||||
@@ -1505,8 +1531,7 @@ struct wined3d_dispatch_parameters
|
||||
};
|
||||
|
||||
void draw_primitive(struct wined3d_device *device, const struct wined3d_state *state,
|
||||
- int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
|
||||
- unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
|
||||
+ const struct wined3d_draw_parameters *draw_parameters) DECLSPEC_HIDDEN;
|
||||
void dispatch_compute(struct wined3d_device *device, const struct wined3d_state *state,
|
||||
const struct wined3d_dispatch_parameters *dispatch_parameters) DECLSPEC_HIDDEN;
|
||||
DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN;
|
||||
@@ -3460,6 +3485,8 @@ void wined3d_cs_emit_dispatch_indirect(struct wined3d_cs *cs,
|
||||
void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
|
||||
int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
|
||||
unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
|
||||
+void wined3d_cs_emit_draw_indirect(struct wined3d_cs *cs, GLenum primitive_type, unsigned int patch_vertex_count,
|
||||
+ struct wined3d_buffer *buffer, unsigned int offset, BOOL indexed) DECLSPEC_HIDDEN;
|
||||
void wined3d_cs_emit_flush(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
|
||||
void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
|
||||
void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain,
|
||||
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
|
||||
index a99dbf64686..0b4c97fad54 100644
|
||||
--- a/include/wine/wined3d.h
|
||||
+++ b/include/wine/wined3d.h
|
||||
@@ -2245,6 +2245,8 @@ void __cdecl wined3d_device_dispatch_compute_indirect(struct wined3d_device *dev
|
||||
HRESULT __cdecl wined3d_device_draw_indexed_primitive(struct wined3d_device *device, UINT start_idx, UINT index_count);
|
||||
void __cdecl wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device *device,
|
||||
UINT start_idx, UINT index_count, UINT start_instance, UINT instance_count);
|
||||
+void __cdecl wined3d_device_draw_indexed_primitive_instanced_indirect(struct wined3d_device *device,
|
||||
+ struct wined3d_buffer *buffer, unsigned int offset);
|
||||
HRESULT __cdecl wined3d_device_draw_primitive(struct wined3d_device *device, UINT start_vertex, UINT vertex_count);
|
||||
void __cdecl wined3d_device_draw_primitive_instanced(struct wined3d_device *device,
|
||||
UINT start_vertex, UINT vertex_count, UINT start_instance, UINT instance_count);
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1,83 +0,0 @@
|
||||
From d2b50ac6892808791c4d461317a4b011369fcc39 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 24 Jul 2017 20:30:13 +0200
|
||||
Subject: wined3d: Implement DrawInstancedIndirect.
|
||||
|
||||
---
|
||||
dlls/d3d11/device.c | 12 +++++++++++-
|
||||
dlls/wined3d/device.c | 9 +++++++++
|
||||
dlls/wined3d/wined3d.spec | 1 +
|
||||
include/wine/wined3d.h | 2 ++
|
||||
4 files changed, 23 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
|
||||
index 2ecce826042..d3660a12e50 100644
|
||||
--- a/dlls/d3d11/device.c
|
||||
+++ b/dlls/d3d11/device.c
|
||||
@@ -1802,7 +1802,17 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_DrawIndexedInstancedIndire
|
||||
static void STDMETHODCALLTYPE d3d11_immediate_context_DrawInstancedIndirect(ID3D11DeviceContext *iface,
|
||||
ID3D11Buffer *buffer, UINT offset)
|
||||
{
|
||||
- FIXME("iface %p, buffer %p, offset %u stub!\n", iface, buffer, offset);
|
||||
+ struct d3d_device *device = device_from_immediate_ID3D11DeviceContext(iface);
|
||||
+ struct d3d_buffer *d3d_buffer;
|
||||
+
|
||||
+ TRACE("iface %p, buffer %p, offset %u.\n", iface, buffer, offset);
|
||||
+
|
||||
+ d3d_buffer = unsafe_impl_from_ID3D11Buffer(buffer);
|
||||
+
|
||||
+ wined3d_mutex_lock();
|
||||
+ wined3d_device_draw_primitive_instanced_indirect(device->wined3d_device,
|
||||
+ d3d_buffer->wined3d_buffer, offset);
|
||||
+ wined3d_mutex_unlock();
|
||||
}
|
||||
|
||||
static void STDMETHODCALLTYPE d3d11_immediate_context_Dispatch(ID3D11DeviceContext *iface,
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index b6458cfde53..112e7f45ca4 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -3752,6 +3752,15 @@ void CDECL wined3d_device_draw_primitive_instanced(struct wined3d_device *device
|
||||
0, start_vertex, vertex_count, start_instance, instance_count, FALSE);
|
||||
}
|
||||
|
||||
+void CDECL wined3d_device_draw_primitive_instanced_indirect(struct wined3d_device *device,
|
||||
+ struct wined3d_buffer *buffer, unsigned int offset)
|
||||
+{
|
||||
+ TRACE("device %p, buffer %p, offset %u.\n", device, buffer, offset);
|
||||
+
|
||||
+ wined3d_cs_emit_draw_indirect(device->cs, device->state.gl_primitive_type, device->state.gl_patch_vertices,
|
||||
+ buffer, offset, FALSE);
|
||||
+}
|
||||
+
|
||||
HRESULT CDECL wined3d_device_draw_indexed_primitive(struct wined3d_device *device, UINT start_idx, UINT index_count)
|
||||
{
|
||||
TRACE("device %p, start_idx %u, index_count %u.\n", device, start_idx, index_count);
|
||||
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
|
||||
index 2d80b3a8772..9c48b98b3ac 100644
|
||||
--- a/dlls/wined3d/wined3d.spec
|
||||
+++ b/dlls/wined3d/wined3d.spec
|
||||
@@ -48,6 +48,7 @@
|
||||
@ cdecl wined3d_device_draw_indexed_primitive_instanced_indirect(ptr ptr long)
|
||||
@ cdecl wined3d_device_draw_primitive(ptr long long)
|
||||
@ cdecl wined3d_device_draw_primitive_instanced(ptr long long long long)
|
||||
+@ cdecl wined3d_device_draw_primitive_instanced_indirect(ptr ptr long)
|
||||
@ cdecl wined3d_device_end_scene(ptr)
|
||||
@ cdecl wined3d_device_end_stateblock(ptr ptr)
|
||||
@ cdecl wined3d_device_evict_managed_resources(ptr)
|
||||
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
|
||||
index 0b4c97fad54..b8fb5503e53 100644
|
||||
--- a/include/wine/wined3d.h
|
||||
+++ b/include/wine/wined3d.h
|
||||
@@ -2250,6 +2250,8 @@ void __cdecl wined3d_device_draw_indexed_primitive_instanced_indirect(struct win
|
||||
HRESULT __cdecl wined3d_device_draw_primitive(struct wined3d_device *device, UINT start_vertex, UINT vertex_count);
|
||||
void __cdecl wined3d_device_draw_primitive_instanced(struct wined3d_device *device,
|
||||
UINT start_vertex, UINT vertex_count, UINT start_instance, UINT instance_count);
|
||||
+void __cdecl wined3d_device_draw_primitive_instanced_indirect(struct wined3d_device *device,
|
||||
+ struct wined3d_buffer *buffer, unsigned int offset);
|
||||
HRESULT __cdecl wined3d_device_end_scene(struct wined3d_device *device);
|
||||
HRESULT __cdecl wined3d_device_end_stateblock(struct wined3d_device *device, struct wined3d_stateblock **stateblock);
|
||||
void __cdecl wined3d_device_evict_managed_resources(struct wined3d_device *device);
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1,70 +0,0 @@
|
||||
From 9cf4fd149607487343d264d1ae8b23807957a919 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 24 Jul 2017 20:36:31 +0200
|
||||
Subject: d3d11/tests: Add a basic test for DrawInstancedIndirect.
|
||||
|
||||
---
|
||||
dlls/d3d11/tests/d3d11.c | 19 +++++++++++++++++--
|
||||
1 file changed, 17 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
|
||||
index c1b7dfff839..af71dbef770 100644
|
||||
--- a/dlls/d3d11/tests/d3d11.c
|
||||
+++ b/dlls/d3d11/tests/d3d11.c
|
||||
@@ -9940,6 +9940,7 @@ static void test_clear_state(void)
|
||||
|
||||
static void test_il_append_aligned(void)
|
||||
{
|
||||
+ static const unsigned int params[] = {4, 4, 0, 0};
|
||||
struct d3d11_test_context test_context;
|
||||
ID3D11InputLayout *input_layout;
|
||||
ID3D11DeviceContext *context;
|
||||
@@ -9947,6 +9948,7 @@ static void test_il_append_aligned(void)
|
||||
ID3D11VertexShader *vs;
|
||||
ID3D11PixelShader *ps;
|
||||
ID3D11Device *device;
|
||||
+ ID3D11Buffer *buffer;
|
||||
ID3D11Buffer *vb[3];
|
||||
DWORD color;
|
||||
HRESULT hr;
|
||||
@@ -10116,7 +10118,6 @@ static void test_il_append_aligned(void)
|
||||
ID3D11DeviceContext_PSSetShader(context, ps, NULL, 0);
|
||||
|
||||
ID3D11DeviceContext_ClearRenderTargetView(context, test_context.backbuffer_rtv, red);
|
||||
-
|
||||
ID3D11DeviceContext_DrawInstanced(context, 4, 4, 0, 0);
|
||||
|
||||
color = get_texture_color(test_context.backbuffer, 80, 240);
|
||||
@@ -10129,7 +10130,6 @@ static void test_il_append_aligned(void)
|
||||
ok(compare_color(color, 0xffff00ff, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
|
||||
ID3D11DeviceContext_ClearRenderTargetView(context, test_context.backbuffer_rtv, red);
|
||||
-
|
||||
ID3D11DeviceContext_DrawInstanced(context, 4, 4, 0, 4);
|
||||
|
||||
color = get_texture_color(test_context.backbuffer, 80, 240);
|
||||
@@ -10141,6 +10141,21 @@ static void test_il_append_aligned(void)
|
||||
color = get_texture_color(test_context.backbuffer, 560, 240);
|
||||
ok(compare_color(color, 0xffff0000, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
|
||||
+ buffer = create_buffer_misc(device, D3D11_BIND_UNORDERED_ACCESS,
|
||||
+ D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS, sizeof(params), params);
|
||||
+ ID3D11DeviceContext_ClearRenderTargetView(context, test_context.backbuffer_rtv, red);
|
||||
+ ID3D11DeviceContext_DrawInstancedIndirect(context, buffer, 0);
|
||||
+ ID3D11Buffer_Release(buffer);
|
||||
+
|
||||
+ color = get_texture_color(test_context.backbuffer, 80, 240);
|
||||
+ ok(compare_color(color, 0xff0000ff, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = get_texture_color(test_context.backbuffer, 240, 240);
|
||||
+ ok(compare_color(color, 0xff00ff00, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = get_texture_color(test_context.backbuffer, 400, 240);
|
||||
+ ok(compare_color(color, 0xffff0000, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = get_texture_color(test_context.backbuffer, 560, 240);
|
||||
+ ok(compare_color(color, 0xffff00ff, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+
|
||||
ID3D11PixelShader_Release(ps);
|
||||
ID3D11VertexShader_Release(vs);
|
||||
ID3D11Buffer_Release(vb[2]);
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1,2 +0,0 @@
|
||||
Fixes: [43405] Implement support for indirect drawing / compute shader dispatching
|
||||
Depends: wined3d-draw_primitive_arrays
|
@@ -1,4 +1,4 @@
|
||||
From 97d6b11b95d8cdcc0d777b11f6f00e9d6054adfb Mon Sep 17 00:00:00 2001
|
||||
From 407c269c649604efd9a1f28d7dcb2494e1f3a090 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 31 Aug 2017 01:26:38 +0200
|
||||
Subject: wined3d: Implement software processing for indexed vertex blending.
|
||||
@@ -12,10 +12,10 @@ Subject: wined3d: Implement software processing for indexed vertex blending.
|
||||
5 files changed, 148 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index d3ee3b0a839..31c7ea431d8 100644
|
||||
index 572d99c20c1..b2e367dde4f 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -3963,31 +3963,15 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
|
||||
@@ -3909,31 +3909,15 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
|
||||
|
||||
void CDECL wined3d_device_set_software_vertex_processing(struct wined3d_device *device, BOOL software)
|
||||
{
|
||||
@@ -48,11 +48,11 @@ index d3ee3b0a839..31c7ea431d8 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
|
||||
index 51460e54d1a..6adb7934134 100644
|
||||
index 1164878985d..acc9afec2be 100644
|
||||
--- a/dlls/wined3d/drawprim.c
|
||||
+++ b/dlls/wined3d/drawprim.c
|
||||
@@ -200,6 +200,101 @@ static void draw_primitive_arrays_indirect(struct wined3d_context *context, cons
|
||||
checkGLcall("draw indirect");
|
||||
@@ -165,6 +165,101 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
|
||||
}
|
||||
}
|
||||
|
||||
+static const BYTE *software_vertex_blending(struct wined3d_context *context,
|
||||
@@ -153,7 +153,7 @@ index 51460e54d1a..6adb7934134 100644
|
||||
static unsigned int get_stride_idx(const void *idx_data, unsigned int idx_size,
|
||||
unsigned int base_vertex_idx, unsigned int start_idx, unsigned int vertex_idx)
|
||||
{
|
||||
@@ -228,6 +323,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
@@ -193,6 +288,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
BOOL specular_fog = FALSE;
|
||||
BOOL ps = use_ps(state);
|
||||
const void *ptr;
|
||||
@@ -161,7 +161,7 @@ index 51460e54d1a..6adb7934134 100644
|
||||
|
||||
static unsigned int once;
|
||||
|
||||
@@ -264,7 +360,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
@@ -229,7 +325,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
if (!(use_map & 1u << element_idx))
|
||||
continue;
|
||||
|
||||
@@ -170,7 +170,7 @@ index 51460e54d1a..6adb7934134 100644
|
||||
ops->generic[si->elements[element_idx].format->emit_idx](element_idx, ptr);
|
||||
}
|
||||
}
|
||||
@@ -376,7 +472,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
@@ -341,7 +437,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
|
||||
if (normal)
|
||||
{
|
||||
@@ -179,7 +179,7 @@ index 51460e54d1a..6adb7934134 100644
|
||||
ops->normal[si->elements[WINED3D_FFP_NORMAL].format->emit_idx](ptr);
|
||||
}
|
||||
|
||||
@@ -421,7 +517,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
@@ -386,7 +482,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
|
||||
|
||||
if (position)
|
||||
{
|
||||
@@ -188,7 +188,7 @@ index 51460e54d1a..6adb7934134 100644
|
||||
ops->position[si->elements[WINED3D_FFP_POSITION].format->emit_idx](ptr);
|
||||
}
|
||||
}
|
||||
@@ -636,6 +732,11 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
@@ -601,6 +697,11 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
WARN_(d3d_perf)("Using software emulation because manual fog coordinates are provided.\n");
|
||||
emulation = TRUE;
|
||||
}
|
||||
@@ -201,10 +201,10 @@ index 51460e54d1a..6adb7934134 100644
|
||||
if (emulation)
|
||||
{
|
||||
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
|
||||
index aaca2f63441..a3050590dfb 100644
|
||||
index f34ff090414..dfc332adb1a 100644
|
||||
--- a/dlls/wined3d/glsl_shader.c
|
||||
+++ b/dlls/wined3d/glsl_shader.c
|
||||
@@ -8359,14 +8359,21 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
|
||||
@@ -8371,14 +8371,21 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -232,7 +232,7 @@ index aaca2f63441..a3050590dfb 100644
|
||||
}
|
||||
|
||||
shader_addline(buffer, "gl_Position = ffp_projection_matrix * ec_pos;\n");
|
||||
@@ -8384,10 +8391,17 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
|
||||
@@ -8396,10 +8403,17 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
|
||||
shader_addline(buffer, "vec3 normal = vec3(0.0);\n");
|
||||
if (settings->normal)
|
||||
{
|
||||
@@ -254,10 +254,10 @@ index aaca2f63441..a3050590dfb 100644
|
||||
|
||||
if (settings->normalize)
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
index b2effb5c2ec..438dfc6fef3 100644
|
||||
index a9df5f2be49..c83cd6205b2 100644
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -6086,7 +6086,12 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
|
||||
@@ -6079,7 +6079,12 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
|
||||
}
|
||||
|
||||
if (use_indexed_vertex_blending(state, si))
|
||||
@@ -272,10 +272,10 @@ index b2effb5c2ec..438dfc6fef3 100644
|
||||
settings->clipping = state->render_states[WINED3D_RS_CLIPPING]
|
||||
&& state->render_states[WINED3D_RS_CLIPPLANEENABLE];
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index 08f4f01f7e6..a2be7326834 100644
|
||||
index e26f991c222..de189571363 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -2725,7 +2725,7 @@ struct wined3d_ffp_vs_settings
|
||||
@@ -2731,7 +2731,7 @@ struct wined3d_ffp_vs_settings
|
||||
DWORD flatshading : 1;
|
||||
DWORD swizzle_map : 16; /* MAX_ATTRIBS, 16 */
|
||||
DWORD vb_indices : 1;
|
||||
@@ -284,7 +284,7 @@ index 08f4f01f7e6..a2be7326834 100644
|
||||
|
||||
DWORD texgen[MAX_TEXTURES];
|
||||
};
|
||||
@@ -4317,6 +4317,20 @@ static inline BOOL use_indexed_vertex_blending(const struct wined3d_state *state
|
||||
@@ -4280,6 +4280,20 @@ static inline BOOL use_indexed_vertex_blending(const struct wined3d_state *state
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -306,5 +306,5 @@ index 08f4f01f7e6..a2be7326834 100644
|
||||
{
|
||||
/* Check state->vertex_declaration to allow this to be used before the
|
||||
--
|
||||
2.14.1
|
||||
2.14.2
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user