winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
May 2020
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
1 participants
743 discussions
Start a n
N
ew thread
Zebediah Figura : wine.inf: Install some driver libraries in the system32/drivers subdirectory.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: cfa4282119e67f43207395fa8053d6b65e2a4af9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=cfa4282119e67f43207395fa…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Thu May 21 18:32:56 2020 -0500 wine.inf: Install some driver libraries in the system32/drivers subdirectory. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- loader/wine.inf.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/loader/wine.inf.in b/loader/wine.inf.in index e4f3d74886..0a43cc779c 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in @@ -2612,11 +2612,14 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 11,,iexplore.exe 11,,winetest.exe,- 12,,fltmgr.sys,- +12,,hidclass.sys,- 12,,http.sys,- 12,,ksecdd.sys,- 12,,mountmgr.sys,- 12,,ndis.sys,- +12,,scsiport.sys,- 12,,tdi.sys,- +12,,usbd.sys,- 12,,winebus.sys,- 12,,winehid.sys,- 12,,wineusb.sys,- @@ -2665,11 +2668,14 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G" 11,,notepad.exe 11,,winetest.exe,- 12,,fltmgr.sys +12,,hidclass.sys 12,,http.sys 12,,ksecdd.sys 12,,mountmgr.sys 12,,ndis.sys +12,,scsiport.sys 12,,tdi.sys +12,,usbd.sys 12,,winebus.sys 12,,winehid.sys 12,,wineusb.sys
1
0
0
0
Alexandre Julliard : ntdll: Silence a va_start compiler warning.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: 9b8fabf4b0203a87dbf5f2019f6f1b9b8008e406 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9b8fabf4b0203a87dbf5f201…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 22 14:31:35 2020 +0200 ntdll: Silence a va_start compiler warning. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index 3336d6390f..362c68e5e0 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -567,7 +567,7 @@ ULONG WINAPI EtwTraceMessageVa( TRACEHANDLE handle, ULONG flags, LPGUID guid, US /****************************************************************************** * EtwTraceMessage (NTDLL.@) */ -ULONG WINAPIV EtwTraceMessage( TRACEHANDLE handle, ULONG flags, LPGUID guid, USHORT number, ... ) +ULONG WINAPIV EtwTraceMessage( TRACEHANDLE handle, ULONG flags, LPGUID guid, /*USHORT*/ ULONG number, ... ) { __ms_va_list valist; ULONG ret;
1
0
0
0
Alexandre Julliard : kernel32: Move the *PreferredUILanguages functions to kernelbase and ntdll.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: 6bed2b427b0e6302ea6bdb24b5a2ee7a06a687f8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=6bed2b427b0e6302ea6bdb24…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 22 12:42:14 2020 +0200 kernel32: Move the *PreferredUILanguages functions to kernelbase and ntdll. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/kernel32.spec | 12 ++-- dlls/kernel32/locale.c | 133 ---------------------------------------- dlls/kernel32/tests/locale.c | 66 ++++++++++++++++++-- dlls/kernelbase/kernelbase.spec | 12 ++-- dlls/kernelbase/locale.c | 58 ++++++++++++++++++ dlls/ntdll/locale.c | 99 ++++++++++++++++++++++++++++++ dlls/ntdll/ntdll.spec | 6 ++ include/winnls.h | 3 + include/winternl.h | 6 ++ 9 files changed, 245 insertions(+), 150 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=6bed2b427b0e6302ea6b…
1
0
0
0
Alexandre Julliard : kernel32: Move Get/SetSystemTimeAdjustment to kernelbase.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: 4ccc3e52852447198a8b81fc91472bfa3b614914 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4ccc3e52852447198a8b81fc…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 22 12:01:17 2020 +0200 kernel32: Move Get/SetSystemTimeAdjustment to kernelbase. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/kernel32.spec | 4 ++-- dlls/kernel32/time.c | 47 ----------------------------------------- dlls/kernelbase/file.c | 30 ++++++++++++++++++++++++++ dlls/kernelbase/kernelbase.spec | 4 ++-- 4 files changed, 34 insertions(+), 51 deletions(-) diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 72a09c53c8..0324e90201 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -832,7 +832,7 @@ @ stdcall GetSystemPreferredUILanguages(long ptr ptr ptr) @ stdcall GetSystemRegistryQuota(ptr ptr) @ stdcall -import GetSystemTime(ptr) -@ stdcall GetSystemTimeAdjustment(ptr ptr ptr) +@ stdcall -import GetSystemTimeAdjustment(ptr ptr ptr) @ stdcall -import GetSystemTimeAsFileTime(ptr) @ stdcall -import GetSystemTimePreciseAsFileTime(ptr) @ stdcall -import GetSystemTimes(ptr ptr ptr) @@ -1445,7 +1445,7 @@ @ stdcall -import SetSystemFileCacheSize(long long long) @ stdcall SetSystemPowerState(long long) @ stdcall -import SetSystemTime(ptr) -@ stdcall SetSystemTimeAdjustment(long long) +@ stdcall -import SetSystemTimeAdjustment(long long) @ stdcall SetTapeParameters(ptr long ptr) @ stdcall SetTapePosition(ptr long long long long long) @ stdcall SetTermsrvAppInstallMode(long) diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c index 127f341adc..4b959684c6 100644 --- a/dlls/kernel32/time.c +++ b/dlls/kernel32/time.c @@ -56,53 +56,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(time); static const struct _KUSER_SHARED_DATA *user_shared_data = (struct _KUSER_SHARED_DATA *)0x7ffe0000; -/*********************************************************************** - * GetSystemTimeAdjustment (KERNEL32.@) - * - * Get the period between clock interrupts and the amount the clock - * is adjusted each interrupt so as to keep it in sync with an external source. - * - * PARAMS - * lpTimeAdjustment [out] The clock adjustment per interrupt in 100's of nanoseconds. - * lpTimeIncrement [out] The time between clock interrupts in 100's of nanoseconds. - * lpTimeAdjustmentDisabled [out] The clock synchronisation has been disabled. - * - * RETURNS - * TRUE. - * - * BUGS - * Only the special case of disabled time adjustments is supported. - */ -BOOL WINAPI GetSystemTimeAdjustment( PDWORD lpTimeAdjustment, PDWORD lpTimeIncrement, - PBOOL lpTimeAdjustmentDisabled ) -{ - *lpTimeAdjustment = 0; - *lpTimeIncrement = 10000000 / sysconf(_SC_CLK_TCK); - *lpTimeAdjustmentDisabled = TRUE; - return TRUE; -} - - -/*********************************************************************** - * SetSystemTimeAdjustment (KERNEL32.@) - * - * Enables or disables the timing adjustments to the system's clock. - * - * PARAMS - * dwTimeAdjustment [in] Number of units to add per clock interrupt. - * bTimeAdjustmentDisabled [in] Adjustment mode. - * - * RETURNS - * Success: TRUE. - * Failure: FALSE. - */ -BOOL WINAPI SetSystemTimeAdjustment( DWORD dwTimeAdjustment, BOOL bTimeAdjustmentDisabled ) -{ - /* Fake function for now... */ - FIXME("(%08x,%d): stub !\n", dwTimeAdjustment, bTimeAdjustmentDisabled); - return TRUE; -} - /********************************************************************* * GetCalendarInfoA (KERNEL32.@) * diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c index 905029066e..cc79284520 100644 --- a/dlls/kernelbase/file.c +++ b/dlls/kernelbase/file.c @@ -3861,6 +3861,23 @@ void WINAPI DECLSPEC_HOTPATCH GetSystemTime( SYSTEMTIME *systime ) } +/*********************************************************************** + * GetSystemTimeAdjustment (kernelbase.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH GetSystemTimeAdjustment( DWORD *adjust, DWORD *increment, BOOL *disabled ) +{ + SYSTEM_TIME_ADJUSTMENT_QUERY st; + ULONG len; + + if (!set_ntstatus( NtQuerySystemInformation( SystemTimeAdjustmentInformation, &st, sizeof(st), &len ))) + return FALSE; + *adjust = st.TimeAdjustment; + *increment = st.TimeIncrement; + *disabled = st.TimeAdjustmentDisabled; + return TRUE; +} + + /*********************************************************************** * GetSystemTimeAsFileTime (kernelbase.@) */ @@ -3918,6 +3935,19 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetSystemTime( const SYSTEMTIME *systime ) } +/*********************************************************************** + * SetSystemTimeAdjustment (kernelbase.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH SetSystemTimeAdjustment( DWORD adjust, BOOL disabled ) +{ + SYSTEM_TIME_ADJUSTMENT st; + + st.TimeAdjustment = adjust; + st.TimeAdjustmentDisabled = disabled; + return set_ntstatus( NtSetSystemInformation( SystemTimeAdjustmentInformation, &st, sizeof(st) )); +} + + /********************************************************************* * SystemTimeToFileTime (kernelbase.@) */ diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index 1500229969..15f43db65d 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -695,7 +695,7 @@ @ stdcall GetSystemPreferredUILanguages(long ptr ptr ptr) kernel32.GetSystemPreferredUILanguages # @ stub GetSystemStateRootFolder @ stdcall GetSystemTime(ptr) -@ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment +@ stdcall GetSystemTimeAdjustment(ptr ptr ptr) @ stdcall GetSystemTimeAsFileTime(ptr) @ stdcall GetSystemTimePreciseAsFileTime(ptr) @ stdcall GetSystemTimes(ptr ptr ptr) @@ -1477,7 +1477,7 @@ @ stdcall SetStdHandleEx(long long ptr) @ stdcall SetSystemFileCacheSize(long long long) @ stdcall SetSystemTime(ptr) -@ stdcall SetSystemTimeAdjustment(long long) kernel32.SetSystemTimeAdjustment +@ stdcall SetSystemTimeAdjustment(long long) @ stdcall SetThreadContext(long ptr) @ stdcall SetThreadDescription(ptr wstr) @ stdcall SetThreadErrorMode(long ptr)
1
0
0
0
Alexandre Julliard : ntdll: Implement SystemTimeAdjustmentInformation class.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: 75e2f79b684f70e7184592db16d819b778d575ae URL:
https://source.winehq.org/git/wine.git/?a=commit;h=75e2f79b684f70e7184592db…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 22 11:49:18 2020 +0200 ntdll: Implement SystemTimeAdjustmentInformation class. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/nt.c | 13 +++++++++++++ dlls/ntdll/tests/info.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/winternl.h | 6 ++++++ 3 files changed, 59 insertions(+) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index 03bf45d0a0..978919146c 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -2937,6 +2937,19 @@ NTSTATUS WINAPI NtQuerySystemInformation( FIXME("info_class SYSTEM_INTERRUPT_INFORMATION\n"); } break; + case SystemTimeAdjustmentInformation: + { + SYSTEM_TIME_ADJUSTMENT_QUERY query = { 156250, 156250, TRUE }; + + len = sizeof(query); + if (Length == len) + { + if (!SystemInformation) ret = STATUS_ACCESS_VIOLATION; + else memcpy( SystemInformation, &query, len ); + } + else ret = STATUS_INFO_LENGTH_MISMATCH; + } + break; case SystemKernelDebuggerInformation: { SYSTEM_KERNEL_DEBUGGER_INFORMATION skdi; diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c index 23d18b3983..f923cc7743 100644 --- a/dlls/ntdll/tests/info.c +++ b/dlls/ntdll/tests/info.c @@ -23,6 +23,7 @@ #include <stdio.h> static NTSTATUS (WINAPI * pNtQuerySystemInformation)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG); +static NTSTATUS (WINAPI * pNtSetSystemInformation)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG); static NTSTATUS (WINAPI * pRtlGetNativeSystemInformation)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG); static NTSTATUS (WINAPI * pNtQuerySystemInformationEx)(SYSTEM_INFORMATION_CLASS, void*, ULONG, void*, ULONG, ULONG*); static NTSTATUS (WINAPI * pNtPowerInformation)(POWER_INFORMATION_LEVEL, PVOID, ULONG, PVOID, ULONG); @@ -76,6 +77,7 @@ static BOOL InitFunctionPtrs(void) } NTDLL_GET_PROC(NtQuerySystemInformation); + NTDLL_GET_PROC(NtSetSystemInformation); NTDLL_GET_PROC(RtlGetNativeSystemInformation); NTDLL_GET_PROC(NtPowerInformation); NTDLL_GET_PROC(NtQueryInformationProcess); @@ -740,6 +742,40 @@ static void test_query_interrupt(void) HeapFree( GetProcessHeap(), 0, sii); } +static void test_time_adjustment(void) +{ + SYSTEM_TIME_ADJUSTMENT_QUERY query; + SYSTEM_TIME_ADJUSTMENT adjust; + NTSTATUS status; + ULONG len; + + memset( &query, 0xcc, sizeof(query) ); + status = pNtQuerySystemInformation( SystemTimeAdjustmentInformation, &query, sizeof(query), &len ); + ok( status == STATUS_SUCCESS, "got %08x\n", status ); + ok( len == sizeof(query) || broken(!len) /* winxp */, "wrong len %u\n", len ); + ok( query.TimeAdjustmentDisabled == TRUE || query.TimeAdjustmentDisabled == FALSE, + "wrong value %x\n", query.TimeAdjustmentDisabled ); + + status = pNtQuerySystemInformation( SystemTimeAdjustmentInformation, &query, sizeof(query)-1, &len ); + ok( status == STATUS_INFO_LENGTH_MISMATCH, "got %08x\n", status ); + ok( len == sizeof(query) || broken(!len) /* winxp */, "wrong len %u\n", len ); + + status = pNtQuerySystemInformation( SystemTimeAdjustmentInformation, &query, sizeof(query)+1, &len ); + ok( status == STATUS_INFO_LENGTH_MISMATCH, "got %08x\n", status ); + ok( len == sizeof(query) || broken(!len) /* winxp */, "wrong len %u\n", len ); + + adjust.TimeAdjustment = query.TimeAdjustment; + adjust.TimeAdjustmentDisabled = query.TimeAdjustmentDisabled; + status = pNtSetSystemInformation( SystemTimeAdjustmentInformation, &adjust, sizeof(adjust) ); + ok( status == STATUS_SUCCESS || status == STATUS_PRIVILEGE_NOT_HELD, "got %08x\n", status ); + status = pNtSetSystemInformation( SystemTimeAdjustmentInformation, &adjust, sizeof(adjust)-1 ); + todo_wine + ok( status == STATUS_INFO_LENGTH_MISMATCH, "got %08x\n", status ); + status = pNtSetSystemInformation( SystemTimeAdjustmentInformation, &adjust, sizeof(adjust)+1 ); + todo_wine + ok( status == STATUS_INFO_LENGTH_MISMATCH, "got %08x\n", status ); +} + static void test_query_kerndebug(void) { NTSTATUS status; @@ -2632,6 +2668,10 @@ START_TEST(info) trace("Starting test_query_interrupt()\n"); test_query_interrupt(); + /* 0x1c SystemTimeAdjustmentInformation */ + trace("Starting test_time_adjustment()\n"); + test_time_adjustment(); + /* 0x23 SystemKernelDebuggerInformation */ trace("Starting test_query_kerndebug()\n"); test_query_kerndebug(); diff --git a/include/winternl.h b/include/winternl.h index 14455946ba..edcbc5ca13 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1624,6 +1624,12 @@ typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { PVOID Reserved1; } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; +typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY { + ULONG TimeAdjustment; + ULONG TimeIncrement; + BOOLEAN TimeAdjustmentDisabled; +} SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY; + typedef struct _SYSTEM_TIME_ADJUSTMENT { ULONG TimeAdjustment; BOOLEAN TimeAdjustmentDisabled;
1
0
0
0
Alexandre Julliard : kernel32: Move GetSystemTimes() implementation to kernelbase.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: 79e3c21c3cca822efedff3092df42f9044da10fe URL:
https://source.winehq.org/git/wine.git/?a=commit;h=79e3c21c3cca822efedff309…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 22 09:15:45 2020 +0200 kernel32: Move GetSystemTimes() implementation to kernelbase. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/kernel32.spec | 2 +- dlls/kernel32/time.c | 71 ----------------------------------------- dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/sync.c | 57 ++++++++++++++++++++++++++++++++- 4 files changed, 58 insertions(+), 74 deletions(-) diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index efb892bf1b..72a09c53c8 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -835,7 +835,7 @@ @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) @ stdcall -import GetSystemTimeAsFileTime(ptr) @ stdcall -import GetSystemTimePreciseAsFileTime(ptr) -@ stdcall GetSystemTimes(ptr ptr ptr) +@ stdcall -import GetSystemTimes(ptr ptr ptr) @ stdcall -import GetSystemWindowsDirectoryA(ptr long) @ stdcall -import GetSystemWindowsDirectoryW(ptr long) @ stdcall -import GetSystemWow64DirectoryA(ptr long) diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c index 5aef53da63..127f341adc 100644 --- a/dlls/kernel32/time.c +++ b/dlls/kernel32/time.c @@ -223,77 +223,6 @@ BOOL WINAPI FileTimeToDosDateTime( const FILETIME *ft, LPWORD fatdate, return TRUE; } -/********************************************************************* - * GetSystemTimes (KERNEL32.@) - * - * Retrieves system timing information - * - * PARAMS - * lpIdleTime [O] Destination for idle time. - * lpKernelTime [O] Destination for kernel time. - * lpUserTime [O] Destination for user time. - * - * RETURNS - * TRUE if success, FALSE otherwise. - */ -BOOL WINAPI GetSystemTimes(LPFILETIME lpIdleTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime) -{ - LARGE_INTEGER idle_time, kernel_time, user_time; - SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION *sppi; - SYSTEM_BASIC_INFORMATION sbi; - ULONG ret_size; - int i; - - TRACE("(%p,%p,%p)\n", lpIdleTime, lpKernelTime, lpUserTime); - - if (!set_ntstatus( NtQuerySystemInformation( SystemBasicInformation, &sbi, sizeof(sbi), &ret_size ))) - return FALSE; - - sppi = HeapAlloc( GetProcessHeap(), 0, - sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * sbi.NumberOfProcessors); - if (!sppi) - { - SetLastError( ERROR_OUTOFMEMORY ); - return FALSE; - } - - if (!set_ntstatus( NtQuerySystemInformation( SystemProcessorPerformanceInformation, sppi, - sizeof(*sppi) * sbi.NumberOfProcessors, &ret_size ))) - { - HeapFree( GetProcessHeap(), 0, sppi ); - return FALSE; - } - - idle_time.QuadPart = 0; - kernel_time.QuadPart = 0; - user_time.QuadPart = 0; - for (i = 0; i < sbi.NumberOfProcessors; i++) - { - idle_time.QuadPart += sppi[i].IdleTime.QuadPart; - kernel_time.QuadPart += sppi[i].KernelTime.QuadPart; - user_time.QuadPart += sppi[i].UserTime.QuadPart; - } - - if (lpIdleTime) - { - lpIdleTime->dwLowDateTime = idle_time.u.LowPart; - lpIdleTime->dwHighDateTime = idle_time.u.HighPart; - } - if (lpKernelTime) - { - lpKernelTime->dwLowDateTime = kernel_time.u.LowPart; - lpKernelTime->dwHighDateTime = kernel_time.u.HighPart; - } - if (lpUserTime) - { - lpUserTime->dwLowDateTime = user_time.u.LowPart; - lpUserTime->dwHighDateTime = user_time.u.HighPart; - } - - HeapFree( GetProcessHeap(), 0, sppi ); - return TRUE; -} - /****************************************************************************** * GetTickCount64 (KERNEL32.@) */ diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index 4a6bc5eea4..1500229969 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -698,7 +698,7 @@ @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment @ stdcall GetSystemTimeAsFileTime(ptr) @ stdcall GetSystemTimePreciseAsFileTime(ptr) -@ stdcall GetSystemTimes(ptr ptr ptr) kernel32.GetSystemTimes +@ stdcall GetSystemTimes(ptr ptr ptr) @ stdcall GetSystemWindowsDirectoryA(ptr long) @ stdcall GetSystemWindowsDirectoryW(ptr long) @ stdcall GetSystemWow64Directory2A(ptr long long) diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c index 99706277da..7ea70202c2 100644 --- a/dlls/kernelbase/sync.c +++ b/dlls/kernelbase/sync.c @@ -124,10 +124,60 @@ static BOOL get_open_object_attributes( OBJECT_ATTRIBUTES *attr, UNICODE_STRING /*********************************************************************** - * Waits + * Time functions ***********************************************************************/ +/********************************************************************* + * GetSystemTimes (kernelbase.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH GetSystemTimes( FILETIME *idle, FILETIME *kernel, FILETIME *user ) +{ + LARGE_INTEGER idle_time, kernel_time, user_time; + SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION *info; + ULONG ret_size; + DWORD i, cpus = NtCurrentTeb()->Peb->NumberOfProcessors; + + if (!(info = HeapAlloc( GetProcessHeap(), 0, sizeof(*info) * cpus ))) + { + SetLastError( ERROR_OUTOFMEMORY ); + return FALSE; + } + if (!set_ntstatus( NtQuerySystemInformation( SystemProcessorPerformanceInformation, info, + sizeof(*info) * cpus, &ret_size ))) + { + HeapFree( GetProcessHeap(), 0, info ); + return FALSE; + } + idle_time.QuadPart = 0; + kernel_time.QuadPart = 0; + user_time.QuadPart = 0; + for (i = 0; i < cpus; i++) + { + idle_time.QuadPart += info[i].IdleTime.QuadPart; + kernel_time.QuadPart += info[i].KernelTime.QuadPart; + user_time.QuadPart += info[i].UserTime.QuadPart; + } + if (idle) + { + idle->dwLowDateTime = idle_time.u.LowPart; + idle->dwHighDateTime = idle_time.u.HighPart; + } + if (kernel) + { + kernel->dwLowDateTime = kernel_time.u.LowPart; + kernel->dwHighDateTime = kernel_time.u.HighPart; + } + if (user) + { + user->dwLowDateTime = user_time.u.LowPart; + user->dwHighDateTime = user_time.u.HighPart; + } + HeapFree( GetProcessHeap(), 0, info ); + return TRUE; +} + + /****************************************************************************** * GetTickCount (kernelbase.@) */ @@ -156,6 +206,11 @@ ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void) } +/*********************************************************************** + * Waits + ***********************************************************************/ + + static HANDLE normalize_handle_if_console( HANDLE handle ) { static HANDLE wait_event;
1
0
0
0
Alexandre Julliard : kernel32: Move GetProcessTimes() implementation to kernelbase and ntdll.
by Alexandre Julliard
22 May '20
22 May '20
Module: wine Branch: master Commit: 7cc9ccbd22511d71d23ee298cd9718da1e448dbc URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7cc9ccbd22511d71d23ee298…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 22 09:15:39 2020 +0200 kernel32: Move GetProcessTimes() implementation to kernelbase and ntdll. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/kernel32.spec | 2 +- dlls/kernel32/time.c | 64 ----------------------------------------- dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/process.c | 23 +++++++++++++++ dlls/ntdll/process.c | 19 ++++++++++-- 5 files changed, 41 insertions(+), 69 deletions(-) diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 659f72cf78..efb892bf1b 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -791,7 +791,7 @@ @ stdcall -import GetProcessPriorityBoost(long ptr) @ stdcall -import GetProcessShutdownParameters(ptr ptr) # @ stub GetProcessorSystemCycleTime -@ stdcall GetProcessTimes(long ptr ptr ptr ptr) +@ stdcall -import GetProcessTimes(long ptr ptr ptr ptr) # @ stub GetProcessUserModeExceptionPolicy @ stdcall GetProcessVersion(long) @ stdcall GetProcessWorkingSetSize(long ptr ptr) diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c index 5d27fc7ac3..5aef53da63 100644 --- a/dlls/kernel32/time.c +++ b/dlls/kernel32/time.c @@ -55,12 +55,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(time); static const struct _KUSER_SHARED_DATA *user_shared_data = (struct _KUSER_SHARED_DATA *)0x7ffe0000; -static inline void longlong_to_filetime( LONGLONG t, FILETIME *ft ) -{ - ft->dwLowDateTime = (DWORD)t; - ft->dwHighDateTime = (DWORD)(t >> 32); -} - /*********************************************************************** * GetSystemTimeAdjustment (KERNEL32.@) @@ -109,64 +103,6 @@ BOOL WINAPI SetSystemTimeAdjustment( DWORD dwTimeAdjustment, BOOL bTimeAdjustmen return TRUE; } -/********************************************************************* - * TIME_ClockTimeToFileTime (olorin(a)fandra.org, 20-Sep-1998) - * - * Used by GetProcessTimes to convert clock_t into FILETIME. - * - * Differences to UnixTimeToFileTime: - * 1) Divided by CLK_TCK - * 2) Time is relative. There is no 'starting date', so there is - * no need for offset correction, like in UnixTimeToFileTime - */ -static void TIME_ClockTimeToFileTime(clock_t unix_time, LPFILETIME filetime) -{ - long clocksPerSec = sysconf(_SC_CLK_TCK); - ULONGLONG secs = (ULONGLONG)unix_time * 10000000 / clocksPerSec; - filetime->dwLowDateTime = (DWORD)secs; - filetime->dwHighDateTime = (DWORD)(secs >> 32); -} - -/********************************************************************* - * GetProcessTimes (KERNEL32.@) - * - * Get the user and kernel execution times of a process, - * along with the creation and exit times if known. - * - * PARAMS - * hprocess [in] The process to be queried. - * lpCreationTime [out] The creation time of the process. - * lpExitTime [out] The exit time of the process if exited. - * lpKernelTime [out] The time spent in kernel routines in 100's of nanoseconds. - * lpUserTime [out] The time spent in user routines in 100's of nanoseconds. - * - * RETURNS - * TRUE. - * - * NOTES - * olorin(a)fandra.org: - * Would be nice to subtract the cpu time used by Wine at startup. - * Also, there is a need to separate times used by different applications. - * - * BUGS - * KernelTime and UserTime are always for the current process - */ -BOOL WINAPI GetProcessTimes( HANDLE hprocess, LPFILETIME lpCreationTime, - LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime ) -{ - struct tms tms; - KERNEL_USER_TIMES pti; - - times(&tms); - TIME_ClockTimeToFileTime(tms.tms_utime,lpUserTime); - TIME_ClockTimeToFileTime(tms.tms_stime,lpKernelTime); - if (NtQueryInformationProcess( hprocess, ProcessTimes, &pti, sizeof(pti), NULL)) - return FALSE; - longlong_to_filetime( pti.CreateTime.QuadPart, lpCreationTime ); - longlong_to_filetime( pti.ExitTime.QuadPart, lpExitTime ); - return TRUE; -} - /********************************************************************* * GetCalendarInfoA (KERNEL32.@) * diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index 1f1a65fc85..4a6bc5eea4 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -635,7 +635,7 @@ @ stdcall GetProcessPreferredUILanguages(long ptr ptr ptr) kernel32.GetProcessPreferredUILanguages @ stdcall GetProcessPriorityBoost(long ptr) @ stdcall GetProcessShutdownParameters(ptr ptr) -@ stdcall GetProcessTimes(long ptr ptr ptr ptr) kernel32.GetProcessTimes +@ stdcall GetProcessTimes(long ptr ptr ptr ptr) @ stdcall GetProcessVersion(long) kernel32.GetProcessVersion @ stdcall GetProcessWorkingSetSizeEx(long ptr ptr ptr) # @ stub GetProcessorSystemCycleTime diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c index 67fcb5f04e..66e115ce69 100644 --- a/dlls/kernelbase/process.c +++ b/dlls/kernelbase/process.c @@ -791,6 +791,29 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetProcessShutdownParameters( LPDWORD level, LPDWO } +/********************************************************************* + * GetProcessTimes (kernelbase.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH GetProcessTimes( HANDLE process, FILETIME *create, FILETIME *exit, + FILETIME *kernel, FILETIME *user ) +{ + KERNEL_USER_TIMES time; + + if (!set_ntstatus( NtQueryInformationProcess( process, ProcessTimes, &time, sizeof(time), NULL ))) + return FALSE; + + create->dwLowDateTime = time.CreateTime.u.LowPart; + create->dwHighDateTime = time.CreateTime.u.HighPart; + exit->dwLowDateTime = time.ExitTime.u.LowPart; + exit->dwHighDateTime = time.ExitTime.u.HighPart; + kernel->dwLowDateTime = time.KernelTime.u.LowPart; + kernel->dwHighDateTime = time.KernelTime.u.HighPart; + user->dwLowDateTime = time.UserTime.u.LowPart; + user->dwHighDateTime = time.UserTime.u.HighPart; + return TRUE; +} + + /*********************************************************************** * GetProcessWorkingSetSizeEx (kernelbase.@) */ diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c index cd867e6028..637bef0b65 100644 --- a/dlls/ntdll/process.c +++ b/dlls/ntdll/process.c @@ -32,6 +32,12 @@ #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> #endif +#ifdef HAVE_SYS_TIME_H +# include <sys/time.h> +#endif +#ifdef HAVE_SYS_TIMES_H +# include <sys/times.h> +#endif #include <sys/types.h> #ifdef HAVE_SYS_WAIT_H # include <sys/wait.h> @@ -359,7 +365,7 @@ NTSTATUS WINAPI NtQueryInformationProcess( break; case ProcessTimes: { - KERNEL_USER_TIMES pti; + KERNEL_USER_TIMES pti = {{{0}}}; if (ProcessInformationLength >= sizeof(KERNEL_USER_TIMES)) { @@ -369,8 +375,15 @@ NTSTATUS WINAPI NtQueryInformationProcess( ret = STATUS_INVALID_HANDLE; else { - /* FIXME : User- and KernelTime have to be implemented */ - memset(&pti, 0, sizeof(KERNEL_USER_TIMES)); + long ticks = sysconf(_SC_CLK_TCK); + struct tms tms; + + /* FIXME: user/kernel times only work for current process */ + if (ticks && times( &tms ) != -1) + { + pti.UserTime.QuadPart = (ULONGLONG)tms.tms_utime * 10000000 / ticks; + pti.KernelTime.QuadPart = (ULONGLONG)tms.tms_stime * 10000000 / ticks; + } SERVER_START_REQ(get_process_info) {
1
0
0
0
Henri Verbeet : vkd3d-shader: Handle clip and cull distance in vkd3d_siv_from_sysval_indexed().
by Alexandre Julliard
22 May '20
22 May '20
Module: vkd3d Branch: master Commit: 1cee31ed7a90c96e2a4a583ae602704655ab5b47 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=1cee31ed7a90c96e2a4a583…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Fri May 22 16:45:19 2020 +0430 vkd3d-shader: Handle clip and cull distance in vkd3d_siv_from_sysval_indexed(). Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- libs/vkd3d-shader/spirv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 3d88be9..ba21113 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -138,6 +138,10 @@ static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enu return VKD3D_SIV_NONE; case VKD3D_SV_POSITION: return VKD3D_SIV_POSITION; + case VKD3D_SV_CLIP_DISTANCE: + return VKD3D_SIV_CLIP_DISTANCE; + case VKD3D_SV_CULL_DISTANCE: + return VKD3D_SIV_CULL_DISTANCE; case VKD3D_SV_TESS_FACTOR_QUADEDGE: return VKD3D_SIV_QUAD_U0_TESS_FACTOR + index; case VKD3D_SV_TESS_FACTOR_QUADINT:
1
0
0
0
Conor McCarthy : vkd3d: Implement support for D3D12_FEATURE_COMMAND_QUEUE_PRIORITY.
by Alexandre Julliard
22 May '20
22 May '20
Module: vkd3d Branch: master Commit: b1712cbd482ec646ef5b350eec063a8639227740 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=b1712cbd482ec646ef5b350…
Author: Conor McCarthy <conor.mccarthy.444(a)gmail.com> Date: Fri May 22 16:45:18 2020 +0430 vkd3d: Implement support for D3D12_FEATURE_COMMAND_QUEUE_PRIORITY. Signed-off-by: Conor McCarthy <conor.mccarthy.444(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/vkd3d_d3d12.idl | 7 +++++++ libs/vkd3d/device.c | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/include/vkd3d_d3d12.idl b/include/vkd3d_d3d12.idl index d48a42b..e8b27bb 100644 --- a/include/vkd3d_d3d12.idl +++ b/include/vkd3d_d3d12.idl @@ -1661,6 +1661,13 @@ typedef struct D3D12_FEATURE_DATA_SHADER_CACHE D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags; } D3D12_FEATURE_DATA_SHADER_CACHE; +typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY +{ + D3D12_COMMAND_LIST_TYPE CommandListType; + UINT Priority; + BOOL PriorityForTypeIsSupported; +} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY; + typedef enum D3D12_FEATURE { D3D12_FEATURE_D3D12_OPTIONS = 0, diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 5edcca3..d3cfff2 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -2788,6 +2788,32 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(ID3D12Device * return S_OK; } + case D3D12_FEATURE_COMMAND_QUEUE_PRIORITY: + { + D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY *data = feature_data; + + if (feature_data_size != sizeof(*data)) + { + WARN("Invalid size %u.\n", feature_data_size); + return E_INVALIDARG; + } + + switch (data->CommandListType) + { + case D3D12_COMMAND_LIST_TYPE_DIRECT: + case D3D12_COMMAND_LIST_TYPE_COMPUTE: + case D3D12_COMMAND_LIST_TYPE_COPY: + data->PriorityForTypeIsSupported = FALSE; + TRACE("Command list type %#x, priority %u, supported %#x.\n", + data->CommandListType, data->Priority, data->PriorityForTypeIsSupported); + return S_OK; + + default: + FIXME("Unhandled command list type %#x.\n", data->CommandListType); + return E_INVALIDARG; + } + } + default: FIXME("Unhandled feature %#x.\n", feature); return E_NOTIMPL;
1
0
0
0
Conor McCarthy : vkd3d: Implement support for D3D12_FEATURE_SHADER_CACHE.
by Alexandre Julliard
22 May '20
22 May '20
Module: vkd3d Branch: master Commit: 16882d1a5012c15eadf121c329be67c3671a1268 URL:
https://source.winehq.org/git/vkd3d.git/?a=commit;h=16882d1a5012c15eadf121c…
Author: Conor McCarthy <conor.mccarthy.444(a)gmail.com> Date: Fri May 22 16:45:17 2020 +0430 vkd3d: Implement support for D3D12_FEATURE_SHADER_CACHE. Signed-off-by: Conor McCarthy <conor.mccarthy.444(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/vkd3d_d3d12.idl | 14 ++++++++++++++ libs/vkd3d/device.c | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/vkd3d_d3d12.idl b/include/vkd3d_d3d12.idl index 01d104f..d48a42b 100644 --- a/include/vkd3d_d3d12.idl +++ b/include/vkd3d_d3d12.idl @@ -191,6 +191,15 @@ typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 0x2, } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER; +typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS +{ + D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0, + D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, + D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2, + D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4, + D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8, +} D3D12_SHADER_CACHE_SUPPORT_FLAGS; + interface ID3D12Fence; interface ID3D12RootSignature; interface ID3D12Heap; @@ -1647,6 +1656,11 @@ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier; } D3D12_FEATURE_DATA_D3D12_OPTIONS2; +typedef struct D3D12_FEATURE_DATA_SHADER_CACHE +{ + D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags; +} D3D12_FEATURE_DATA_SHADER_CACHE; + typedef enum D3D12_FEATURE { D3D12_FEATURE_D3D12_OPTIONS = 0, diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 74b70ce..5edcca3 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -2768,6 +2768,26 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(ID3D12Device * return S_OK; } + case D3D12_FEATURE_SHADER_CACHE: + { + D3D12_FEATURE_DATA_SHADER_CACHE *data = feature_data; + + if (feature_data_size != sizeof(*data)) + { + WARN("Invalid size %u.\n", feature_data_size); + return E_INVALIDARG; + } + + /* FIXME: The d3d12 documentation states that + * D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO is always supported, but + * the CachedPSO field of D3D12_GRAPHICS_PIPELINE_STATE_DESC is + * ignored and GetCachedBlob() is a stub. */ + data->SupportFlags = D3D12_SHADER_CACHE_SUPPORT_NONE; + + TRACE("Shader cache support %#x.\n", data->SupportFlags); + return S_OK; + } + default: FIXME("Unhandled feature %#x.\n", feature); return E_NOTIMPL;
1
0
0
0
← Newer
1
...
21
22
23
24
25
26
27
...
75
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Results per page:
10
25
50
100
200