Wine-devel
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 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
July 2019
- 65 participants
- 284 discussions
[PATCH] kernel32: Support FileBasicInfo case in SetFileInformationByHandle().
by Nikolay Sivov 31 Jul '19
by Nikolay Sivov 31 Jul '19
31 Jul '19
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/kernel32/file.c | 4 +++-
dlls/kernel32/tests/file.c | 23 ++++++++++++++++++++++-
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 30c8dbd1d9..bd10260acc 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -1095,7 +1095,6 @@ BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS c
switch (class)
{
- case FileBasicInfo:
case FileNameInfo:
case FileRenameInfo:
case FileAllocationInfo:
@@ -1114,6 +1113,9 @@ BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS c
SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
return FALSE;
+ case FileBasicInfo:
+ status = NtSetInformationFile( file, &io, info, size, FileBasicInformation );
+ break;
case FileDispositionInfo:
status = NtSetInformationFile( file, &io, info, size, FileDispositionInformation );
break;
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index b22ae19f2e..0c5b133260 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -4973,8 +4973,10 @@ static void test_SetFileInformationByHandle(void)
FILE_COMPRESSION_INFO compressinfo;
FILE_DISPOSITION_INFO dispinfo;
DECLSPEC_ALIGN(8) FILE_IO_PRIORITY_HINT_INFO hintinfo;
+ FILE_BASIC_INFO basicinfo = { 0 };
char tempFileName[MAX_PATH];
char tempPath[MAX_PATH];
+ LARGE_INTEGER atime;
HANDLE file;
BOOL ret;
@@ -4991,7 +4993,7 @@ static void test_SetFileInformationByHandle(void)
ret = GetTempFileNameA(tempPath, "abc", 0, tempFileName);
ok(ret, "GetTempFileNameA failed, got error %u.\n", GetLastError());
- file = CreateFileA(tempFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ file = CreateFileA(tempFileName, GENERIC_READ | FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL);
ok(file != INVALID_HANDLE_VALUE, "failed to open the temp file, error %u.\n", GetLastError());
@@ -5044,6 +5046,25 @@ static void test_SetFileInformationByHandle(void)
todo_wine
ok(!ret && GetLastError() == ERROR_BAD_LENGTH, "got %d, error %d\n", ret, GetLastError());
+ SetLastError(0xdeadbeef);
+ ret = pSetFileInformationByHandle(file, FileBasicInfo, &basicinfo, 0);
+todo_wine
+ ok(!ret && GetLastError() == ERROR_BAD_LENGTH, "got %d, error %d\n", ret, GetLastError());
+
+ memset(&basicinfo, 0, sizeof(basicinfo));
+ ret = pGetFileInformationByHandleEx(file, FileBasicInfo, &basicinfo, sizeof(basicinfo));
+ ok(ret, "Failed to get basic info, error %d.\n", GetLastError());
+ atime = basicinfo.LastAccessTime;
+
+ basicinfo.LastAccessTime.QuadPart++;
+ ret = pSetFileInformationByHandle(file, FileBasicInfo, &basicinfo, sizeof(basicinfo));
+ ok(ret, "Failed to set basic info, error %d.\n", GetLastError());
+
+ memset(&basicinfo, 0, sizeof(basicinfo));
+ ret = pGetFileInformationByHandleEx(file, FileBasicInfo, &basicinfo, sizeof(basicinfo));
+ ok(ret, "Failed to get basic info, error %d.\n", GetLastError());
+ ok(atime.QuadPart + 1 == basicinfo.LastAccessTime.QuadPart, "Unexpected access time.\n");
+
dispinfo.DeleteFile = TRUE;
ret = pSetFileInformationByHandle(file, FileDispositionInfo, &dispinfo, sizeof(dispinfo));
ok(ret, "setting FileDispositionInfo failed, error %d\n", GetLastError());
--
2.20.1
2
1
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/kernel32/nls/afk.nls | 1 +
dlls/kernel32/nls/ara.nls | 1 +
dlls/kernel32/nls/arb.nls | 1 +
dlls/kernel32/nls/are.nls | 1 +
dlls/kernel32/nls/arg.nls | 1 +
dlls/kernel32/nls/arh.nls | 1 +
dlls/kernel32/nls/ari.nls | 1 +
dlls/kernel32/nls/arj.nls | 1 +
dlls/kernel32/nls/ark.nls | 1 +
dlls/kernel32/nls/arl.nls | 1 +
dlls/kernel32/nls/arm.nls | 1 +
dlls/kernel32/nls/aro.nls | 1 +
dlls/kernel32/nls/arq.nls | 1 +
dlls/kernel32/nls/ars.nls | 1 +
dlls/kernel32/nls/art.nls | 1 +
dlls/kernel32/nls/aru.nls | 1 +
dlls/kernel32/nls/ary.nls | 1 +
dlls/kernel32/nls/ast.nls | 1 +
dlls/kernel32/nls/aze.nls | 1 +
dlls/kernel32/nls/azl.nls | 1 +
dlls/kernel32/nls/bel.nls | 1 +
dlls/kernel32/nls/ben.nls | 1 +
dlls/kernel32/nls/bgr.nls | 1 +
dlls/kernel32/nls/brf.nls | 1 +
dlls/kernel32/nls/cat.nls | 1 +
dlls/kernel32/nls/chs.nls | 1 +
dlls/kernel32/nls/cht.nls | 1 +
dlls/kernel32/nls/cor.nls | 1 +
dlls/kernel32/nls/csy.nls | 1 +
dlls/kernel32/nls/cym.nls | 1 +
dlls/kernel32/nls/dan.nls | 1 +
dlls/kernel32/nls/dea.nls | 1 +
dlls/kernel32/nls/dec.nls | 1 +
dlls/kernel32/nls/del.nls | 1 +
dlls/kernel32/nls/des.nls | 1 +
dlls/kernel32/nls/deu.nls | 1 +
dlls/kernel32/nls/div.nls | 1 +
dlls/kernel32/nls/ell.nls | 1 +
dlls/kernel32/nls/ena.nls | 1 +
dlls/kernel32/nls/enb.nls | 1 +
dlls/kernel32/nls/enc.nls | 1 +
dlls/kernel32/nls/eng.nls | 1 +
dlls/kernel32/nls/eni.nls | 1 +
dlls/kernel32/nls/enj.nls | 1 +
dlls/kernel32/nls/enl.nls | 1 +
dlls/kernel32/nls/enp.nls | 1 +
dlls/kernel32/nls/ens.nls | 1 +
dlls/kernel32/nls/ent.nls | 1 +
dlls/kernel32/nls/enu.nls | 1 +
dlls/kernel32/nls/enw.nls | 1 +
dlls/kernel32/nls/enz.nls | 1 +
dlls/kernel32/nls/eox.nls | 1 +
dlls/kernel32/nls/esa.nls | 1 +
dlls/kernel32/nls/esb.nls | 1 +
dlls/kernel32/nls/esc.nls | 1 +
dlls/kernel32/nls/esd.nls | 1 +
dlls/kernel32/nls/ese.nls | 1 +
dlls/kernel32/nls/esf.nls | 1 +
dlls/kernel32/nls/esg.nls | 1 +
dlls/kernel32/nls/esh.nls | 1 +
dlls/kernel32/nls/esi.nls | 1 +
dlls/kernel32/nls/esl.nls | 1 +
dlls/kernel32/nls/esm.nls | 1 +
dlls/kernel32/nls/esn.nls | 1 +
dlls/kernel32/nls/eso.nls | 1 +
dlls/kernel32/nls/esp.nls | 1 +
dlls/kernel32/nls/esr.nls | 1 +
dlls/kernel32/nls/ess.nls | 1 +
dlls/kernel32/nls/esu.nls | 1 +
dlls/kernel32/nls/esv.nls | 1 +
dlls/kernel32/nls/esy.nls | 1 +
dlls/kernel32/nls/esz.nls | 1 +
dlls/kernel32/nls/eti.nls | 1 +
dlls/kernel32/nls/euq.nls | 1 +
dlls/kernel32/nls/far.nls | 1 +
dlls/kernel32/nls/fin.nls | 1 +
dlls/kernel32/nls/fos.nls | 1 +
dlls/kernel32/nls/fra.nls | 1 +
dlls/kernel32/nls/frb.nls | 1 +
dlls/kernel32/nls/frc.nls | 1 +
dlls/kernel32/nls/frl.nls | 1 +
dlls/kernel32/nls/frm.nls | 1 +
dlls/kernel32/nls/frs.nls | 1 +
dlls/kernel32/nls/gae.nls | 1 +
dlls/kernel32/nls/gdh.nls | 1 +
dlls/kernel32/nls/gdv.nls | 1 +
dlls/kernel32/nls/glc.nls | 1 +
dlls/kernel32/nls/guj.nls | 1 +
dlls/kernel32/nls/heb.nls | 1 +
dlls/kernel32/nls/hin.nls | 1 +
dlls/kernel32/nls/hrv.nls | 1 +
dlls/kernel32/nls/hun.nls | 1 +
dlls/kernel32/nls/hye.nls | 1 +
dlls/kernel32/nls/ind.nls | 1 +
dlls/kernel32/nls/isl.nls | 1 +
dlls/kernel32/nls/ita.nls | 1 +
dlls/kernel32/nls/its.nls | 1 +
dlls/kernel32/nls/ivl.nls | 1 +
dlls/kernel32/nls/jpn.nls | 1 +
dlls/kernel32/nls/kan.nls | 1 +
dlls/kernel32/nls/kat.nls | 1 +
dlls/kernel32/nls/kkz.nls | 1 +
dlls/kernel32/nls/knk.nls | 1 +
dlls/kernel32/nls/kor.nls | 1 +
dlls/kernel32/nls/kyr.nls | 1 +
dlls/kernel32/nls/lth.nls | 1 +
dlls/kernel32/nls/lvi.nls | 1 +
dlls/kernel32/nls/mar.nls | 1 +
dlls/kernel32/nls/mki.nls | 1 +
dlls/kernel32/nls/mon.nls | 1 +
dlls/kernel32/nls/msb.nls | 1 +
dlls/kernel32/nls/msl.nls | 1 +
dlls/kernel32/nls/nep.nls | 1 +
dlls/kernel32/nls/nlb.nls | 1 +
dlls/kernel32/nls/nld.nls | 1 +
dlls/kernel32/nls/nls.nls | 1 +
dlls/kernel32/nls/non.nls | 1 +
dlls/kernel32/nls/nor.nls | 1 +
dlls/kernel32/nls/pan.nls | 1 +
dlls/kernel32/nls/plk.nls | 1 +
dlls/kernel32/nls/ptb.nls | 1 +
dlls/kernel32/nls/ptg.nls | 1 +
dlls/kernel32/nls/rmc.nls | 1 +
dlls/kernel32/nls/rom.nls | 1 +
dlls/kernel32/nls/rus.nls | 1 +
dlls/kernel32/nls/san.nls | 1 +
dlls/kernel32/nls/sin.nls | 1 +
dlls/kernel32/nls/sky.nls | 1 +
dlls/kernel32/nls/slv.nls | 1 +
dlls/kernel32/nls/sqi.nls | 1 +
dlls/kernel32/nls/srb.nls | 1 +
dlls/kernel32/nls/srl.nls | 1 +
dlls/kernel32/nls/sve.nls | 1 +
dlls/kernel32/nls/svf.nls | 1 +
dlls/kernel32/nls/swk.nls | 1 +
dlls/kernel32/nls/syr.nls | 1 +
dlls/kernel32/nls/tam.nls | 1 +
dlls/kernel32/nls/tel.nls | 1 +
dlls/kernel32/nls/tha.nls | 1 +
dlls/kernel32/nls/trk.nls | 1 +
dlls/kernel32/nls/ttt.nls | 1 +
dlls/kernel32/nls/ukr.nls | 1 +
dlls/kernel32/nls/urd.nls | 1 +
dlls/kernel32/nls/uzb.nls | 1 +
dlls/kernel32/nls/uzl.nls | 1 +
dlls/kernel32/nls/vit.nls | 1 +
dlls/kernel32/nls/wal.nls | 1 +
dlls/kernel32/nls/zhh.nls | 1 +
dlls/kernel32/nls/zhi.nls | 1 +
dlls/kernel32/nls/zhm.nls | 1 +
150 files changed, 150 insertions(+)
diff --git a/dlls/kernel32/nls/afk.nls b/dlls/kernel32/nls/afk.nls
index 6225c47107..f2889cb507 100644
--- a/dlls/kernel32/nls/afk.nls
+++ b/dlls/kernel32/nls/afk.nls
@@ -136,6 +136,7 @@ STRINGTABLE LANGUAGE LANG_AFRIKAANS, SUBLANG_DEFAULT
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "af"
+ LOCALE_SPERCENT "%"
LOCALE_SSHORTDATE "yyyy/MM/dd"
LOCALE_SSHORTESTDAYNAME1 "Ma"
LOCALE_SSHORTESTDAYNAME2 "Di"
diff --git a/dlls/kernel32/nls/ara.nls b/dlls/kernel32/nls/ara.nls
index c3eb6f9a10..16de55da65 100644
--- a/dlls/kernel32/nls/ara.nls
+++ b/dlls/kernel32/nls/ara.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_SAUDI_ARABIA
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arb.nls b/dlls/kernel32/nls/arb.nls
index dd3c328277..140e0301c3 100644
--- a/dlls/kernel32/nls/arb.nls
+++ b/dlls/kernel32/nls/arb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_LEBANON
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/are.nls b/dlls/kernel32/nls/are.nls
index 4f39b76191..c118aa2f0b 100644
--- a/dlls/kernel32/nls/are.nls
+++ b/dlls/kernel32/nls/are.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_EGYPT
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arg.nls b/dlls/kernel32/nls/arg.nls
index 096945efd1..5753d201c2 100644
--- a/dlls/kernel32/nls/arg.nls
+++ b/dlls/kernel32/nls/arg.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_ALGERIA
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arh.nls b/dlls/kernel32/nls/arh.nls
index ad33914fa3..55b86789d4 100644
--- a/dlls/kernel32/nls/arh.nls
+++ b/dlls/kernel32/nls/arh.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_BAHRAIN
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/ari.nls b/dlls/kernel32/nls/ari.nls
index d405c1b90b..528a0474f7 100644
--- a/dlls/kernel32/nls/ari.nls
+++ b/dlls/kernel32/nls/ari.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_IRAQ
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arj.nls b/dlls/kernel32/nls/arj.nls
index e24a636b15..cc84050af9 100644
--- a/dlls/kernel32/nls/arj.nls
+++ b/dlls/kernel32/nls/arj.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_JORDAN
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/ark.nls b/dlls/kernel32/nls/ark.nls
index 7fbb44d926..c61aeb9c43 100644
--- a/dlls/kernel32/nls/ark.nls
+++ b/dlls/kernel32/nls/ark.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_KUWAIT
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arl.nls b/dlls/kernel32/nls/arl.nls
index bfd98e6139..a80c32eeb6 100644
--- a/dlls/kernel32/nls/arl.nls
+++ b/dlls/kernel32/nls/arl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_LIBYA
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arm.nls b/dlls/kernel32/nls/arm.nls
index 01782330fe..0af7a4f94e 100644
--- a/dlls/kernel32/nls/arm.nls
+++ b/dlls/kernel32/nls/arm.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_MOROCCO
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/aro.nls b/dlls/kernel32/nls/aro.nls
index 0a17050796..503a2759ed 100644
--- a/dlls/kernel32/nls/aro.nls
+++ b/dlls/kernel32/nls/aro.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_OMAN
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/arq.nls b/dlls/kernel32/nls/arq.nls
index d27b91a191..640e34d001 100644
--- a/dlls/kernel32/nls/arq.nls
+++ b/dlls/kernel32/nls/arq.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_QATAR
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/ars.nls b/dlls/kernel32/nls/ars.nls
index 37553db7fd..43a44400ba 100644
--- a/dlls/kernel32/nls/ars.nls
+++ b/dlls/kernel32/nls/ars.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_SYRIA
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/art.nls b/dlls/kernel32/nls/art.nls
index 5abe9e9c81..e392b53562 100644
--- a/dlls/kernel32/nls/art.nls
+++ b/dlls/kernel32/nls/art.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_TUNISIA
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/aru.nls b/dlls/kernel32/nls/aru.nls
index 8b3b68883b..55981b229f 100644
--- a/dlls/kernel32/nls/aru.nls
+++ b/dlls/kernel32/nls/aru.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_UAE
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/ary.nls b/dlls/kernel32/nls/ary.nls
index 34a3234b26..06a4414e53 100644
--- a/dlls/kernel32/nls/ary.nls
+++ b/dlls/kernel32/nls/ary.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARABIC, SUBLANG_ARABIC_YEMEN
LOCALE_SNATIVELANGNAME "العربية"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ARA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ar"
diff --git a/dlls/kernel32/nls/ast.nls b/dlls/kernel32/nls/ast.nls
index a990295f6c..c1e6aaf9ca 100644
--- a/dlls/kernel32/nls/ast.nls
+++ b/dlls/kernel32/nls/ast.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ASTURIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Asturianu"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "AST "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "ast"
diff --git a/dlls/kernel32/nls/aze.nls b/dlls/kernel32/nls/aze.nls
index d2a3c15b3d..12b2b5adf2 100644
--- a/dlls/kernel32/nls/aze.nls
+++ b/dlls/kernel32/nls/aze.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_AZERI, SUBLANG_AZERI_CYRILLIC
LOCALE_SNATIVELANGNAME L"\x0410\x0437\x04d9\x0440\x0431\x0430\x0458\x04b9\x0430\x043d"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "AZE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "az-Cyrl"
diff --git a/dlls/kernel32/nls/azl.nls b/dlls/kernel32/nls/azl.nls
index b14672c999..e98ac836c9 100644
--- a/dlls/kernel32/nls/azl.nls
+++ b/dlls/kernel32/nls/azl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_AZERI, SUBLANG_AZERI_LATIN
LOCALE_SNATIVELANGNAME L"Az\x0259rbaycan\x00ad\x0131l\x0131"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "AZE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "az-Latn"
diff --git a/dlls/kernel32/nls/bel.nls b/dlls/kernel32/nls/bel.nls
index d98514c172..47f841e0e8 100644
--- a/dlls/kernel32/nls/bel.nls
+++ b/dlls/kernel32/nls/bel.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_BELARUSIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Беларуская"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "BEL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "be"
diff --git a/dlls/kernel32/nls/ben.nls b/dlls/kernel32/nls/ben.nls
index c87a122eed..db09c6a0e6 100644
--- a/dlls/kernel32/nls/ben.nls
+++ b/dlls/kernel32/nls/ben.nls
@@ -127,6 +127,7 @@ STRINGTABLE LANGUAGE LANG_BANGLA, SUBLANG_BANGLA_INDIA
LOCALE_SNATIVELANGNAME "বাংলা"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "BEN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Beng;"
LOCALE_SPARENT "bn"
diff --git a/dlls/kernel32/nls/bgr.nls b/dlls/kernel32/nls/bgr.nls
index 1e096a188f..488cdde95a 100644
--- a/dlls/kernel32/nls/bgr.nls
+++ b/dlls/kernel32/nls/bgr.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "български"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "BGR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "bg"
diff --git a/dlls/kernel32/nls/brf.nls b/dlls/kernel32/nls/brf.nls
index 1b80651f96..7e11555b7a 100644
--- a/dlls/kernel32/nls/brf.nls
+++ b/dlls/kernel32/nls/brf.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_BRETON, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Brezhoneg"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "BRE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/cat.nls b/dlls/kernel32/nls/cat.nls
index e8192b49c9..2452f3355e 100644
--- a/dlls/kernel32/nls/cat.nls
+++ b/dlls/kernel32/nls/cat.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "català"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "CAT "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "ca"
diff --git a/dlls/kernel32/nls/chs.nls b/dlls/kernel32/nls/chs.nls
index 187700d848..76ee5fb69f 100644
--- a/dlls/kernel32/nls/chs.nls
+++ b/dlls/kernel32/nls/chs.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
LOCALE_SNATIVELANGNAME "中文(简体)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ZHS "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hans;"
LOCALE_SPARENT "zh-Hans"
diff --git a/dlls/kernel32/nls/cht.nls b/dlls/kernel32/nls/cht.nls
index f10fc637d4..808ef7428c 100644
--- a/dlls/kernel32/nls/cht.nls
+++ b/dlls/kernel32/nls/cht.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
LOCALE_SNATIVELANGNAME "中文(繁體)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ZHT "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hant;"
LOCALE_SPARENT "zh-Hant"
diff --git a/dlls/kernel32/nls/cor.nls b/dlls/kernel32/nls/cor.nls
index bb8ed9087c..dfdb577088 100644
--- a/dlls/kernel32/nls/cor.nls
+++ b/dlls/kernel32/nls/cor.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_CORNISH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Kernewek"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/csy.nls b/dlls/kernel32/nls/csy.nls
index 982fe068e1..f8a65ba056 100644
--- a/dlls/kernel32/nls/csy.nls
+++ b/dlls/kernel32/nls/csy.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "čeština"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "CSY "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "cs"
diff --git a/dlls/kernel32/nls/cym.nls b/dlls/kernel32/nls/cym.nls
index a1eb319a29..3d2425ef16 100644
--- a/dlls/kernel32/nls/cym.nls
+++ b/dlls/kernel32/nls/cym.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_WELSH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Cymraeg"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "WEL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/dan.nls b/dlls/kernel32/nls/dan.nls
index db2799bfa5..e7456581db 100644
--- a/dlls/kernel32/nls/dan.nls
+++ b/dlls/kernel32/nls/dan.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "dansk"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DAN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "da"
diff --git a/dlls/kernel32/nls/dea.nls b/dlls/kernel32/nls/dea.nls
index b35cac95d1..eed3ec2ce5 100644
--- a/dlls/kernel32/nls/dea.nls
+++ b/dlls/kernel32/nls/dea.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN
LOCALE_SNATIVELANGNAME "Deutsch"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DEU "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "de"
diff --git a/dlls/kernel32/nls/dec.nls b/dlls/kernel32/nls/dec.nls
index 0668d7924c..46ee15b3f4 100644
--- a/dlls/kernel32/nls/dec.nls
+++ b/dlls/kernel32/nls/dec.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_LIECHTENSTEIN
LOCALE_SNATIVELANGNAME "Deutsch"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DEU "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "de"
diff --git a/dlls/kernel32/nls/del.nls b/dlls/kernel32/nls/del.nls
index 349320d6bf..2bf0369fbf 100644
--- a/dlls/kernel32/nls/del.nls
+++ b/dlls/kernel32/nls/del.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_LUXEMBOURG
LOCALE_SNATIVELANGNAME "Deutsch"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DEU "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "de"
diff --git a/dlls/kernel32/nls/des.nls b/dlls/kernel32/nls/des.nls
index 48f463d57d..f537dde3dd 100644
--- a/dlls/kernel32/nls/des.nls
+++ b/dlls/kernel32/nls/des.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_SWISS
LOCALE_SNATIVELANGNAME "Deutsch"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DEU "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "de"
diff --git a/dlls/kernel32/nls/deu.nls b/dlls/kernel32/nls/deu.nls
index 9742fabe5e..8dd7439d1c 100644
--- a/dlls/kernel32/nls/deu.nls
+++ b/dlls/kernel32/nls/deu.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
LOCALE_SNATIVELANGNAME "Deutsch"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DEU "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "de"
diff --git a/dlls/kernel32/nls/div.nls b/dlls/kernel32/nls/div.nls
index 8169aa3c4e..180ea2d4e1 100644
--- a/dlls/kernel32/nls/div.nls
+++ b/dlls/kernel32/nls/div.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_DIVEHI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ދިވެހިބަސް"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "DIV "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Thaa;"
LOCALE_SPARENT "dv"
diff --git a/dlls/kernel32/nls/ell.nls b/dlls/kernel32/nls/ell.nls
index f2f1a05d37..8f56e9aff1 100644
--- a/dlls/kernel32/nls/ell.nls
+++ b/dlls/kernel32/nls/ell.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ελληνικά"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ELL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Grek;"
LOCALE_SPARENT "el"
diff --git a/dlls/kernel32/nls/ena.nls b/dlls/kernel32/nls/ena.nls
index 54f9e0361e..8d645cfa3d 100644
--- a/dlls/kernel32/nls/ena.nls
+++ b/dlls/kernel32/nls/ena.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enb.nls b/dlls/kernel32/nls/enb.nls
index c6526005a9..5ce00c1014 100644
--- a/dlls/kernel32/nls/enb.nls
+++ b/dlls/kernel32/nls/enb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CARIBBEAN
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enc.nls b/dlls/kernel32/nls/enc.nls
index c71fd4afc9..f98501b10a 100644
--- a/dlls/kernel32/nls/enc.nls
+++ b/dlls/kernel32/nls/enc.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/eng.nls b/dlls/kernel32/nls/eng.nls
index bbf76560ca..2fff14efa3 100644
--- a/dlls/kernel32/nls/eng.nls
+++ b/dlls/kernel32/nls/eng.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/eni.nls b/dlls/kernel32/nls/eni.nls
index 2316a3ed4b..930276f4f2 100644
--- a/dlls/kernel32/nls/eni.nls
+++ b/dlls/kernel32/nls/eni.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_EIRE
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enj.nls b/dlls/kernel32/nls/enj.nls
index bab9960108..bf5e80eb44 100644
--- a/dlls/kernel32/nls/enj.nls
+++ b/dlls/kernel32/nls/enj.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_JAMAICA
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enl.nls b/dlls/kernel32/nls/enl.nls
index 2c9e794d89..4562b935c0 100644
--- a/dlls/kernel32/nls/enl.nls
+++ b/dlls/kernel32/nls/enl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_BELIZE
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enp.nls b/dlls/kernel32/nls/enp.nls
index ab76dd706d..2ee9645cc8 100644
--- a/dlls/kernel32/nls/enp.nls
+++ b/dlls/kernel32/nls/enp.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_PHILIPPINES
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/ens.nls b/dlls/kernel32/nls/ens.nls
index 3d2033e5f9..3dcfd8fbf1 100644
--- a/dlls/kernel32/nls/ens.nls
+++ b/dlls/kernel32/nls/ens.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_SOUTH_AFRICA
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/ent.nls b/dlls/kernel32/nls/ent.nls
index 79153c6dc4..9573c37930 100644
--- a/dlls/kernel32/nls/ent.nls
+++ b/dlls/kernel32/nls/ent.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_TRINIDAD
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enu.nls b/dlls/kernel32/nls/enu.nls
index 0eea48723e..c33054847e 100644
--- a/dlls/kernel32/nls/enu.nls
+++ b/dlls/kernel32/nls/enu.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enw.nls b/dlls/kernel32/nls/enw.nls
index 0e2e0bffb0..48d95c449c 100644
--- a/dlls/kernel32/nls/enw.nls
+++ b/dlls/kernel32/nls/enw.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_ZIMBABWE
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/enz.nls b/dlls/kernel32/nls/enz.nls
index 06295d5d49..192e436899 100644
--- a/dlls/kernel32/nls/enz.nls
+++ b/dlls/kernel32/nls/enz.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_NZ
LOCALE_SNATIVELANGNAME "English"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ENG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "en"
diff --git a/dlls/kernel32/nls/eox.nls b/dlls/kernel32/nls/eox.nls
index 5a4bc2370e..9f018d4843 100644
--- a/dlls/kernel32/nls/eox.nls
+++ b/dlls/kernel32/nls/eox.nls
@@ -149,6 +149,7 @@ STRINGTABLE LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Esperanto"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "dflt"
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "eo"
diff --git a/dlls/kernel32/nls/esa.nls b/dlls/kernel32/nls/esa.nls
index 0b03d3939e..ff1fbf949d 100644
--- a/dlls/kernel32/nls/esa.nls
+++ b/dlls/kernel32/nls/esa.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_PANAMA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esb.nls b/dlls/kernel32/nls/esb.nls
index b6669b862c..454e131655 100644
--- a/dlls/kernel32/nls/esb.nls
+++ b/dlls/kernel32/nls/esb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_BOLIVIA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esc.nls b/dlls/kernel32/nls/esc.nls
index f4171baa1c..18db5cb167 100644
--- a/dlls/kernel32/nls/esc.nls
+++ b/dlls/kernel32/nls/esc.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_COSTA_RICA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esd.nls b/dlls/kernel32/nls/esd.nls
index 988f26ad40..ac85dfd8e8 100644
--- a/dlls/kernel32/nls/esd.nls
+++ b/dlls/kernel32/nls/esd.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_DOMINICAN_REPUBLIC
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/ese.nls b/dlls/kernel32/nls/ese.nls
index e1fe67a8c7..fc9f5ea585 100644
--- a/dlls/kernel32/nls/ese.nls
+++ b/dlls/kernel32/nls/ese.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_EL_SALVADOR
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esf.nls b/dlls/kernel32/nls/esf.nls
index 2e87edfcdd..c9f161352f 100644
--- a/dlls/kernel32/nls/esf.nls
+++ b/dlls/kernel32/nls/esf.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ECUADOR
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esg.nls b/dlls/kernel32/nls/esg.nls
index 1519a12ce3..cf2198ed6b 100644
--- a/dlls/kernel32/nls/esg.nls
+++ b/dlls/kernel32/nls/esg.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_GUATEMALA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esh.nls b/dlls/kernel32/nls/esh.nls
index c8342a40b7..7107600d95 100644
--- a/dlls/kernel32/nls/esh.nls
+++ b/dlls/kernel32/nls/esh.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_HONDURAS
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esi.nls b/dlls/kernel32/nls/esi.nls
index 23843939f1..fb0a07cf39 100644
--- a/dlls/kernel32/nls/esi.nls
+++ b/dlls/kernel32/nls/esi.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_NICARAGUA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esl.nls b/dlls/kernel32/nls/esl.nls
index 6d48cf5fed..2dae49103c 100644
--- a/dlls/kernel32/nls/esl.nls
+++ b/dlls/kernel32/nls/esl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_CHILE
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esm.nls b/dlls/kernel32/nls/esm.nls
index 9a515673da..9f9f418f8b 100644
--- a/dlls/kernel32/nls/esm.nls
+++ b/dlls/kernel32/nls/esm.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MEXICAN
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esn.nls b/dlls/kernel32/nls/esn.nls
index a291db867e..ea6c41133d 100644
--- a/dlls/kernel32/nls/esn.nls
+++ b/dlls/kernel32/nls/esn.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN
LOCALE_SNATIVELANGNAME "español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/eso.nls b/dlls/kernel32/nls/eso.nls
index 15da10aeb3..eb91071f3d 100644
--- a/dlls/kernel32/nls/eso.nls
+++ b/dlls/kernel32/nls/eso.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_COLOMBIA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esp.nls b/dlls/kernel32/nls/esp.nls
index abd326acbd..0c4ea72342 100644
--- a/dlls/kernel32/nls/esp.nls
+++ b/dlls/kernel32/nls/esp.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH
LOCALE_SNATIVELANGNAME "español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esr.nls b/dlls/kernel32/nls/esr.nls
index fd3b788f5a..83db4c6c20 100644
--- a/dlls/kernel32/nls/esr.nls
+++ b/dlls/kernel32/nls/esr.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_PERU
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/ess.nls b/dlls/kernel32/nls/ess.nls
index ae1863973c..12181297f2 100644
--- a/dlls/kernel32/nls/ess.nls
+++ b/dlls/kernel32/nls/ess.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esu.nls b/dlls/kernel32/nls/esu.nls
index 46cd5c77ba..e251c03a9c 100644
--- a/dlls/kernel32/nls/esu.nls
+++ b/dlls/kernel32/nls/esu.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_PUERTO_RICO
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esv.nls b/dlls/kernel32/nls/esv.nls
index f6661abb89..076e865f3b 100644
--- a/dlls/kernel32/nls/esv.nls
+++ b/dlls/kernel32/nls/esv.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_VENEZUELA
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esy.nls b/dlls/kernel32/nls/esy.nls
index 8b170de022..fb9607071d 100644
--- a/dlls/kernel32/nls/esy.nls
+++ b/dlls/kernel32/nls/esy.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_URUGUAY
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/esz.nls b/dlls/kernel32/nls/esz.nls
index 09ca6c7d9f..00511ad99b 100644
--- a/dlls/kernel32/nls/esz.nls
+++ b/dlls/kernel32/nls/esz.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_PARAGUAY
LOCALE_SNATIVELANGNAME "Español"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ESP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "es"
diff --git a/dlls/kernel32/nls/eti.nls b/dlls/kernel32/nls/eti.nls
index d8a984477a..a22ac6bd7e 100644
--- a/dlls/kernel32/nls/eti.nls
+++ b/dlls/kernel32/nls/eti.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "eesti"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ETI "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "et"
diff --git a/dlls/kernel32/nls/euq.nls b/dlls/kernel32/nls/euq.nls
index 036aa18ecd..62efcd8cb9 100644
--- a/dlls/kernel32/nls/euq.nls
+++ b/dlls/kernel32/nls/euq.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_BASQUE, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "euskara"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "EUQ "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "eu"
diff --git a/dlls/kernel32/nls/far.nls b/dlls/kernel32/nls/far.nls
index 7cc3fae408..090b6919c9 100644
--- a/dlls/kernel32/nls/far.nls
+++ b/dlls/kernel32/nls/far.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_PERSIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "فارسی"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FAR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "fa"
diff --git a/dlls/kernel32/nls/fin.nls b/dlls/kernel32/nls/fin.nls
index 9ceea69bf5..3e38c66718 100644
--- a/dlls/kernel32/nls/fin.nls
+++ b/dlls/kernel32/nls/fin.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "suomi"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FIN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fi"
diff --git a/dlls/kernel32/nls/fos.nls b/dlls/kernel32/nls/fos.nls
index 262d8564fe..d1deda747f 100644
--- a/dlls/kernel32/nls/fos.nls
+++ b/dlls/kernel32/nls/fos.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FAEROESE, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "føroyskt"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FOS "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fo"
diff --git a/dlls/kernel32/nls/fra.nls b/dlls/kernel32/nls/fra.nls
index bbbabf37a4..dd6412ec35 100644
--- a/dlls/kernel32/nls/fra.nls
+++ b/dlls/kernel32/nls/fra.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
LOCALE_SNATIVELANGNAME "français"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FRA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/frb.nls b/dlls/kernel32/nls/frb.nls
index 8a6c844cb4..e64f66a72c 100644
--- a/dlls/kernel32/nls/frb.nls
+++ b/dlls/kernel32/nls/frb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_BELGIAN
LOCALE_SNATIVELANGNAME "français"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FRA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/frc.nls b/dlls/kernel32/nls/frc.nls
index 3d64bb7728..2c3cc5f089 100644
--- a/dlls/kernel32/nls/frc.nls
+++ b/dlls/kernel32/nls/frc.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_CANADIAN
LOCALE_SNATIVELANGNAME "français"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FRA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/frl.nls b/dlls/kernel32/nls/frl.nls
index 0d4d7fc0cd..00ccf556f8 100644
--- a/dlls/kernel32/nls/frl.nls
+++ b/dlls/kernel32/nls/frl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_LUXEMBOURG
LOCALE_SNATIVELANGNAME "français"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FRA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/frm.nls b/dlls/kernel32/nls/frm.nls
index bcfbb56d3c..5e46e3e045 100644
--- a/dlls/kernel32/nls/frm.nls
+++ b/dlls/kernel32/nls/frm.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_MONACO
LOCALE_SNATIVELANGNAME "français"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FRA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/frs.nls b/dlls/kernel32/nls/frs.nls
index 592e0e692e..beba6d39c4 100644
--- a/dlls/kernel32/nls/frs.nls
+++ b/dlls/kernel32/nls/frs.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_SWISS
LOCALE_SNATIVELANGNAME "français"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "FRA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "fr"
diff --git a/dlls/kernel32/nls/gae.nls b/dlls/kernel32/nls/gae.nls
index 5490dddd8d..26bee59d8c 100644
--- a/dlls/kernel32/nls/gae.nls
+++ b/dlls/kernel32/nls/gae.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_IRISH, SUBLANG_IRISH_IRELAND
LOCALE_SNATIVELANGNAME "Gaeilge"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "IRI "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "ga"
diff --git a/dlls/kernel32/nls/gdh.nls b/dlls/kernel32/nls/gdh.nls
index 7f60c5130a..2eedfd268a 100644
--- a/dlls/kernel32/nls/gdh.nls
+++ b/dlls/kernel32/nls/gdh.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_SCOTTISH_GAELIC, SUBLANG_SCOTTISH_GAELIC
LOCALE_SNATIVELANGNAME "Gaidhlig"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "GAE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "gd"
diff --git a/dlls/kernel32/nls/gdv.nls b/dlls/kernel32/nls/gdv.nls
index 5e4f7b5638..02f4c6ca80 100644
--- a/dlls/kernel32/nls/gdv.nls
+++ b/dlls/kernel32/nls/gdv.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_MANX_GAELIC, SUBLANG_MANX_GAELIC
LOCALE_SNATIVELANGNAME "Gaelg"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "GAE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "gv"
diff --git a/dlls/kernel32/nls/glc.nls b/dlls/kernel32/nls/glc.nls
index ec9e949808..9e121e7c56 100644
--- a/dlls/kernel32/nls/glc.nls
+++ b/dlls/kernel32/nls/glc.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GALICIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "galego"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "GAL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "gl"
diff --git a/dlls/kernel32/nls/guj.nls b/dlls/kernel32/nls/guj.nls
index 956743147a..ee20de82ab 100644
--- a/dlls/kernel32/nls/guj.nls
+++ b/dlls/kernel32/nls/guj.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GUJARATI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ગુજરાતી"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "GUJ "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Gujr;"
LOCALE_SPARENT "gu"
diff --git a/dlls/kernel32/nls/heb.nls b/dlls/kernel32/nls/heb.nls
index 99f3acc3fc..678d8455ce 100644
--- a/dlls/kernel32/nls/heb.nls
+++ b/dlls/kernel32/nls/heb.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "עברית"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "IWR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hebr;"
LOCALE_SPARENT "he"
diff --git a/dlls/kernel32/nls/hin.nls b/dlls/kernel32/nls/hin.nls
index b300d25063..5871a6f2d8 100644
--- a/dlls/kernel32/nls/hin.nls
+++ b/dlls/kernel32/nls/hin.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_HINDI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "हिंदी"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "HIN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Deva;"
LOCALE_SPARENT "hi"
diff --git a/dlls/kernel32/nls/hrv.nls b/dlls/kernel32/nls/hrv.nls
index b321e9176f..db87726cfe 100644
--- a/dlls/kernel32/nls/hrv.nls
+++ b/dlls/kernel32/nls/hrv.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SERBIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "hrvatski"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "HRV "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "hr"
diff --git a/dlls/kernel32/nls/hun.nls b/dlls/kernel32/nls/hun.nls
index c28b8efdb0..84c960f717 100644
--- a/dlls/kernel32/nls/hun.nls
+++ b/dlls/kernel32/nls/hun.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Magyar"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "HUN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "hu"
diff --git a/dlls/kernel32/nls/hye.nls b/dlls/kernel32/nls/hye.nls
index c157c2ae43..6677c6e658 100644
--- a/dlls/kernel32/nls/hye.nls
+++ b/dlls/kernel32/nls/hye.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ARMENIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Հայերեն"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "HYE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Armn;"
LOCALE_SPARENT "hy"
diff --git a/dlls/kernel32/nls/ind.nls b/dlls/kernel32/nls/ind.nls
index 7ca67c3a9a..d7d4df996e 100644
--- a/dlls/kernel32/nls/ind.nls
+++ b/dlls/kernel32/nls/ind.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Bahasa Indonesia"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "IND "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "id"
diff --git a/dlls/kernel32/nls/isl.nls b/dlls/kernel32/nls/isl.nls
index a3a5547b8f..15dd269284 100644
--- a/dlls/kernel32/nls/isl.nls
+++ b/dlls/kernel32/nls/isl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ICELANDIC, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "íslenska"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ISL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "is"
diff --git a/dlls/kernel32/nls/ita.nls b/dlls/kernel32/nls/ita.nls
index fda73ecc4f..e5dea84a8f 100644
--- a/dlls/kernel32/nls/ita.nls
+++ b/dlls/kernel32/nls/ita.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
LOCALE_SNATIVELANGNAME "italiano"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ITA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "it"
diff --git a/dlls/kernel32/nls/its.nls b/dlls/kernel32/nls/its.nls
index 840cdc52d5..1095526524 100644
--- a/dlls/kernel32/nls/its.nls
+++ b/dlls/kernel32/nls/its.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN_SWISS
LOCALE_SNATIVELANGNAME "italiano"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ITA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "it"
diff --git a/dlls/kernel32/nls/ivl.nls b/dlls/kernel32/nls/ivl.nls
index 65ada52bc8..913725c126 100644
--- a/dlls/kernel32/nls/ivl.nls
+++ b/dlls/kernel32/nls/ivl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_INVARIANT, SUBLANG_NEUTRAL
LOCALE_SNATIVELANGNAME "Invariant Language"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "dflt"
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN "+"
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "iv"
diff --git a/dlls/kernel32/nls/jpn.nls b/dlls/kernel32/nls/jpn.nls
index ea0a9bfbe3..e675baba4f 100644
--- a/dlls/kernel32/nls/jpn.nls
+++ b/dlls/kernel32/nls/jpn.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "日本語"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "JAN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hani;Hira;Kana;"
LOCALE_SPARENT "ja"
diff --git a/dlls/kernel32/nls/kan.nls b/dlls/kernel32/nls/kan.nls
index aa808a1acf..1caae881bb 100644
--- a/dlls/kernel32/nls/kan.nls
+++ b/dlls/kernel32/nls/kan.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_KANNADA, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ಕನ್ನಡ"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "KAN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Knda;"
LOCALE_SPARENT "kn"
diff --git a/dlls/kernel32/nls/kat.nls b/dlls/kernel32/nls/kat.nls
index 6b3f8c8a0b..f8f4f72dd1 100644
--- a/dlls/kernel32/nls/kat.nls
+++ b/dlls/kernel32/nls/kat.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_GEORGIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ქართული"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "KAT "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Geor;"
LOCALE_SPARENT "ka"
diff --git a/dlls/kernel32/nls/kkz.nls b/dlls/kernel32/nls/kkz.nls
index 227d3d093f..10e9eb29ce 100644
--- a/dlls/kernel32/nls/kkz.nls
+++ b/dlls/kernel32/nls/kkz.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_KAZAK, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME L"\x049a\x0430\x0437\x0430\x049b"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "KAZ "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "kk"
diff --git a/dlls/kernel32/nls/knk.nls b/dlls/kernel32/nls/knk.nls
index 8bf8c37a7b..56d006229d 100644
--- a/dlls/kernel32/nls/knk.nls
+++ b/dlls/kernel32/nls/knk.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_KONKANI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "कोंकणी"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "KOK "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Deva;"
LOCALE_SPARENT "kok"
diff --git a/dlls/kernel32/nls/kor.nls b/dlls/kernel32/nls/kor.nls
index 5a5a6ed3f4..de4ee65969 100644
--- a/dlls/kernel32/nls/kor.nls
+++ b/dlls/kernel32/nls/kor.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_KOREAN, SUBLANG_KOREAN
LOCALE_SNATIVELANGNAME "한국어"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "KOR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hang;Hani;"
LOCALE_SPARENT "ko"
diff --git a/dlls/kernel32/nls/kyr.nls b/dlls/kernel32/nls/kyr.nls
index fa0a578cde..c587c26032 100644
--- a/dlls/kernel32/nls/kyr.nls
+++ b/dlls/kernel32/nls/kyr.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_KYRGYZ, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Кыргыз"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "KIR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "ky"
diff --git a/dlls/kernel32/nls/lth.nls b/dlls/kernel32/nls/lth.nls
index f2b2c3687a..2c6e7d97d5 100644
--- a/dlls/kernel32/nls/lth.nls
+++ b/dlls/kernel32/nls/lth.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_LITHUANIAN, SUBLANG_LITHUANIAN
LOCALE_SNATIVELANGNAME "lietuvių"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "LTH "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "lt"
diff --git a/dlls/kernel32/nls/lvi.nls b/dlls/kernel32/nls/lvi.nls
index d561adec9f..61dd84b694 100644
--- a/dlls/kernel32/nls/lvi.nls
+++ b/dlls/kernel32/nls/lvi.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_LATVIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "latviešu"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "LVI "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "lv"
diff --git a/dlls/kernel32/nls/mar.nls b/dlls/kernel32/nls/mar.nls
index 39c46d7c3f..b36bb88fe1 100644
--- a/dlls/kernel32/nls/mar.nls
+++ b/dlls/kernel32/nls/mar.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_MARATHI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "मराठी"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "MAR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Mlym;"
LOCALE_SPARENT "mr"
diff --git a/dlls/kernel32/nls/mki.nls b/dlls/kernel32/nls/mki.nls
index 64ae4afa92..7bad889810 100644
--- a/dlls/kernel32/nls/mki.nls
+++ b/dlls/kernel32/nls/mki.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_MACEDONIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "македонски јазик"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "MKD "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "mk"
diff --git a/dlls/kernel32/nls/mon.nls b/dlls/kernel32/nls/mon.nls
index 47787a7288..c7db60b996 100644
--- a/dlls/kernel32/nls/mon.nls
+++ b/dlls/kernel32/nls/mon.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_MONGOLIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Монгол хэл"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "MNG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "mn-Cyrl"
diff --git a/dlls/kernel32/nls/msb.nls b/dlls/kernel32/nls/msb.nls
index 0a6f18a8a1..3e3b6a2c8a 100644
--- a/dlls/kernel32/nls/msb.nls
+++ b/dlls/kernel32/nls/msb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_MALAY, SUBLANG_MALAY_BRUNEI_DARUSSALAM
LOCALE_SNATIVELANGNAME "Bahasa Malaysia"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "MLY "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "ms"
diff --git a/dlls/kernel32/nls/msl.nls b/dlls/kernel32/nls/msl.nls
index 90e877fad1..7b00ab24d1 100644
--- a/dlls/kernel32/nls/msl.nls
+++ b/dlls/kernel32/nls/msl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_MALAY, SUBLANG_MALAY_MALAYSIA
LOCALE_SNATIVELANGNAME "Bahasa Malaysia"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "MLY "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "ms"
diff --git a/dlls/kernel32/nls/nep.nls b/dlls/kernel32/nls/nep.nls
index 7b5ae15e41..dbeec9ec60 100644
--- a/dlls/kernel32/nls/nep.nls
+++ b/dlls/kernel32/nls/nep.nls
@@ -127,6 +127,7 @@ STRINGTABLE LANGUAGE LANG_NEPALI, SUBLANG_NEPALI_NEPAL
LOCALE_SNATIVELANGNAME "नेपाली"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "NEP "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Deva;"
LOCALE_SPARENT "ne"
diff --git a/dlls/kernel32/nls/nlb.nls b/dlls/kernel32/nls/nlb.nls
index 2fc32e7d26..afa20751a1 100644
--- a/dlls/kernel32/nls/nlb.nls
+++ b/dlls/kernel32/nls/nlb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_DUTCH, SUBLANG_DUTCH_BELGIAN
LOCALE_SNATIVELANGNAME "Nederlands"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "NLD "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "nl"
diff --git a/dlls/kernel32/nls/nld.nls b/dlls/kernel32/nls/nld.nls
index 6c12aec679..a3c51b7162 100644
--- a/dlls/kernel32/nls/nld.nls
+++ b/dlls/kernel32/nls/nld.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_DUTCH, SUBLANG_DUTCH
LOCALE_SNATIVELANGNAME "Nederlands"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "NLD "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "nl"
diff --git a/dlls/kernel32/nls/nls.nls b/dlls/kernel32/nls/nls.nls
index e7a94931fd..a23720cb6a 100644
--- a/dlls/kernel32/nls/nls.nls
+++ b/dlls/kernel32/nls/nls.nls
@@ -139,6 +139,7 @@ STRINGTABLE LANGUAGE LANG_DUTCH, SUBLANG_DUTCH_SURINAM
LOCALE_SNATIVELANGNAME "Nederlands"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "NLD "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "nl"
diff --git a/dlls/kernel32/nls/non.nls b/dlls/kernel32/nls/non.nls
index 6a52f2b514..198458c17c 100644
--- a/dlls/kernel32/nls/non.nls
+++ b/dlls/kernel32/nls/non.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NYNORSK
LOCALE_SNATIVELANGNAME "norsk (nynorsk)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "NYN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "nn"
diff --git a/dlls/kernel32/nls/nor.nls b/dlls/kernel32/nls/nor.nls
index ffe216cd5a..15780daed7 100644
--- a/dlls/kernel32/nls/nor.nls
+++ b/dlls/kernel32/nls/nor.nls
@@ -134,6 +134,7 @@ STRINGTABLE LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
LOCALE_SNATIVELANGNAME "norsk (bokmål)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "NOR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "nb"
diff --git a/dlls/kernel32/nls/pan.nls b/dlls/kernel32/nls/pan.nls
index d6a17ea781..cd44ba57b6 100644
--- a/dlls/kernel32/nls/pan.nls
+++ b/dlls/kernel32/nls/pan.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_PUNJABI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ਪੰਜਾਬੀ"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "PAN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Guru;"
LOCALE_SPARENT "pa"
diff --git a/dlls/kernel32/nls/plk.nls b/dlls/kernel32/nls/plk.nls
index bac0547bb1..6f102c6bc1 100644
--- a/dlls/kernel32/nls/plk.nls
+++ b/dlls/kernel32/nls/plk.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "polski"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "PLK "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "pl"
diff --git a/dlls/kernel32/nls/ptb.nls b/dlls/kernel32/nls/ptb.nls
index 6c5199fa57..87ed95c22d 100644
--- a/dlls/kernel32/nls/ptb.nls
+++ b/dlls/kernel32/nls/ptb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
LOCALE_SNATIVELANGNAME "Português"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "PTG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "pt"
diff --git a/dlls/kernel32/nls/ptg.nls b/dlls/kernel32/nls/ptg.nls
index ae0a843e7d..223ff2923c 100644
--- a/dlls/kernel32/nls/ptg.nls
+++ b/dlls/kernel32/nls/ptg.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
LOCALE_SNATIVELANGNAME "português"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "PTG "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "pt"
diff --git a/dlls/kernel32/nls/rmc.nls b/dlls/kernel32/nls/rmc.nls
index eebf2ddce8..ed3727530b 100644
--- a/dlls/kernel32/nls/rmc.nls
+++ b/dlls/kernel32/nls/rmc.nls
@@ -144,6 +144,7 @@ STRINGTABLE LANGUAGE LANG_ROMANSH, SUBLANG_ROMANSH_SWITZERLAND
LOCALE_SNATIVELANGNAME "Rumantsch"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "RMS "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "rm"
diff --git a/dlls/kernel32/nls/rom.nls b/dlls/kernel32/nls/rom.nls
index 357293e563..01be9ee841 100644
--- a/dlls/kernel32/nls/rom.nls
+++ b/dlls/kernel32/nls/rom.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "română"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ROM "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "ro"
diff --git a/dlls/kernel32/nls/rus.nls b/dlls/kernel32/nls/rus.nls
index 4d14af2c7d..b7b9f62f7e 100644
--- a/dlls/kernel32/nls/rus.nls
+++ b/dlls/kernel32/nls/rus.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "русский"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "RUS "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "ru"
diff --git a/dlls/kernel32/nls/san.nls b/dlls/kernel32/nls/san.nls
index 5fca61335b..d3ae3e4b01 100644
--- a/dlls/kernel32/nls/san.nls
+++ b/dlls/kernel32/nls/san.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SANSKRIT, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "संस्कृत"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SAN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Deva;"
LOCALE_SPARENT "sa"
diff --git a/dlls/kernel32/nls/sin.nls b/dlls/kernel32/nls/sin.nls
index 9b74ca12f6..431898f404 100644
--- a/dlls/kernel32/nls/sin.nls
+++ b/dlls/kernel32/nls/sin.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SINHALESE, SUBLANG_SINHALESE_SRI_LANKA
LOCALE_SNATIVELANGNAME "සිංහල"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SIN "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Sinh;"
LOCALE_SPARENT "si"
diff --git a/dlls/kernel32/nls/sky.nls b/dlls/kernel32/nls/sky.nls
index adc363253f..e502ebc1d9 100644
--- a/dlls/kernel32/nls/sky.nls
+++ b/dlls/kernel32/nls/sky.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "slovenčina"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SKY "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sk"
diff --git a/dlls/kernel32/nls/slv.nls b/dlls/kernel32/nls/slv.nls
index 63181e4d0a..aee9918e82 100644
--- a/dlls/kernel32/nls/slv.nls
+++ b/dlls/kernel32/nls/slv.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "slovenski"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SLV "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sl"
diff --git a/dlls/kernel32/nls/sqi.nls b/dlls/kernel32/nls/sqi.nls
index c269e16f0e..9b363ae0fa 100644
--- a/dlls/kernel32/nls/sqi.nls
+++ b/dlls/kernel32/nls/sqi.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_ALBANIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "shqipe"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SQI "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sq"
diff --git a/dlls/kernel32/nls/srb.nls b/dlls/kernel32/nls/srb.nls
index 86642443f7..9b5a45e479 100644
--- a/dlls/kernel32/nls/srb.nls
+++ b/dlls/kernel32/nls/srb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
LOCALE_SNATIVELANGNAME "српски"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SRB "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "sr-Cyrl"
diff --git a/dlls/kernel32/nls/srl.nls b/dlls/kernel32/nls/srl.nls
index 0c4b2f527f..e749f7777f 100644
--- a/dlls/kernel32/nls/srl.nls
+++ b/dlls/kernel32/nls/srl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
LOCALE_SNATIVELANGNAME "srpski"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SRB "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sr-Latn"
diff --git a/dlls/kernel32/nls/sve.nls b/dlls/kernel32/nls/sve.nls
index 442de8db8a..3d594ef2d8 100644
--- a/dlls/kernel32/nls/sve.nls
+++ b/dlls/kernel32/nls/sve.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SWEDISH, SUBLANG_SWEDISH
LOCALE_SNATIVELANGNAME "svenska"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SVE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sv"
diff --git a/dlls/kernel32/nls/svf.nls b/dlls/kernel32/nls/svf.nls
index 2e71b98595..1843bf3524 100644
--- a/dlls/kernel32/nls/svf.nls
+++ b/dlls/kernel32/nls/svf.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SWEDISH, SUBLANG_SWEDISH_FINLAND
LOCALE_SNATIVELANGNAME "svenska"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SVE "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sv"
diff --git a/dlls/kernel32/nls/swk.nls b/dlls/kernel32/nls/swk.nls
index 30220608cf..66b5e26586 100644
--- a/dlls/kernel32/nls/swk.nls
+++ b/dlls/kernel32/nls/swk.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SWAHILI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Kiswahili"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SWK "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "sw"
diff --git a/dlls/kernel32/nls/syr.nls b/dlls/kernel32/nls/syr.nls
index 9209992d05..cae3f33b05 100644
--- a/dlls/kernel32/nls/syr.nls
+++ b/dlls/kernel32/nls/syr.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_SYRIAC, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ܣܘܪܝܝܐ"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "SYR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN "+"
LOCALE_SSCRIPTS "Syrc;"
LOCALE_SPARENT "syr"
diff --git a/dlls/kernel32/nls/tam.nls b/dlls/kernel32/nls/tam.nls
index 7da8a8f964..198c63c666 100644
--- a/dlls/kernel32/nls/tam.nls
+++ b/dlls/kernel32/nls/tam.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_TAMIL, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "தமிழ்"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "TAM "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Taml;"
LOCALE_SPARENT "ta"
diff --git a/dlls/kernel32/nls/tel.nls b/dlls/kernel32/nls/tel.nls
index 1c7b92d375..7b22c46efb 100644
--- a/dlls/kernel32/nls/tel.nls
+++ b/dlls/kernel32/nls/tel.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_TELUGU, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "తెలుగు"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "TEL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Telu;"
LOCALE_SPARENT "te"
diff --git a/dlls/kernel32/nls/tha.nls b/dlls/kernel32/nls/tha.nls
index 42ea7c04aa..ee4bc3c848 100644
--- a/dlls/kernel32/nls/tha.nls
+++ b/dlls/kernel32/nls/tha.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_THAI, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "ไทย"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "THA "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Thai;"
LOCALE_SPARENT "th"
diff --git a/dlls/kernel32/nls/trk.nls b/dlls/kernel32/nls/trk.nls
index 8f12d35153..f6e02f6925 100644
--- a/dlls/kernel32/nls/trk.nls
+++ b/dlls/kernel32/nls/trk.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Türkçe"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "TRK "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "tr"
diff --git a/dlls/kernel32/nls/ttt.nls b/dlls/kernel32/nls/ttt.nls
index 329954fb3c..97efe0fb32 100644
--- a/dlls/kernel32/nls/ttt.nls
+++ b/dlls/kernel32/nls/ttt.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_TATAR, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Татар"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "TAT "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;" /* FIXME? */
LOCALE_SPARENT "tt"
diff --git a/dlls/kernel32/nls/ukr.nls b/dlls/kernel32/nls/ukr.nls
index 06ba29f808..83f98b3802 100644
--- a/dlls/kernel32/nls/ukr.nls
+++ b/dlls/kernel32/nls/ukr.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "українська"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "UKR "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "uk"
diff --git a/dlls/kernel32/nls/urd.nls b/dlls/kernel32/nls/urd.nls
index e44ab6a7ea..1ff93d5c47 100644
--- a/dlls/kernel32/nls/urd.nls
+++ b/dlls/kernel32/nls/urd.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_URDU, SUBLANG_URDU_PAKISTAN
LOCALE_SNATIVELANGNAME "اُردو"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "URD "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Arab;"
LOCALE_SPARENT "ur"
diff --git a/dlls/kernel32/nls/uzb.nls b/dlls/kernel32/nls/uzb.nls
index fa01707937..9b591a3b64 100644
--- a/dlls/kernel32/nls/uzb.nls
+++ b/dlls/kernel32/nls/uzb.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_UZBEK, SUBLANG_UZBEK_CYRILLIC
LOCALE_SNATIVELANGNAME "Ўзбек"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "UZB "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Cyrl;"
LOCALE_SPARENT "uz-Cyrl"
diff --git a/dlls/kernel32/nls/uzl.nls b/dlls/kernel32/nls/uzl.nls
index affd82b483..5c1bd1b35d 100644
--- a/dlls/kernel32/nls/uzl.nls
+++ b/dlls/kernel32/nls/uzl.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_UZBEK, SUBLANG_UZBEK_LATIN
LOCALE_SNATIVELANGNAME "U'zbek"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "UZB "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "uz-Latn"
diff --git a/dlls/kernel32/nls/vit.nls b/dlls/kernel32/nls/vit.nls
index 573b0260bd..6252bdec03 100644
--- a/dlls/kernel32/nls/vit.nls
+++ b/dlls/kernel32/nls/vit.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_VIETNAMESE, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Tiếng Việt Nam"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "VIT "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "vi"
diff --git a/dlls/kernel32/nls/wal.nls b/dlls/kernel32/nls/wal.nls
index 0fa8fd952a..8091ae4857 100644
--- a/dlls/kernel32/nls/wal.nls
+++ b/dlls/kernel32/nls/wal.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_WALON, SUBLANG_DEFAULT
LOCALE_SNATIVELANGNAME "Walon"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "BEL "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Latn;"
LOCALE_SPARENT "wa"
diff --git a/dlls/kernel32/nls/zhh.nls b/dlls/kernel32/nls/zhh.nls
index 9da553c2c3..31c4b6a0d0 100644
--- a/dlls/kernel32/nls/zhh.nls
+++ b/dlls/kernel32/nls/zhh.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_HONGKONG
LOCALE_SNATIVELANGNAME "中文(繁體)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ZHH "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hant;"
LOCALE_SPARENT "zh-Hant"
diff --git a/dlls/kernel32/nls/zhi.nls b/dlls/kernel32/nls/zhi.nls
index 389b8ebaa1..c3d9dc6d12 100644
--- a/dlls/kernel32/nls/zhi.nls
+++ b/dlls/kernel32/nls/zhi.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE
LOCALE_SNATIVELANGNAME "中文(简体)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ZHS "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hans;"
LOCALE_SPARENT "zh-Hans"
diff --git a/dlls/kernel32/nls/zhm.nls b/dlls/kernel32/nls/zhm.nls
index 009fb93f5a..7239820d5e 100644
--- a/dlls/kernel32/nls/zhm.nls
+++ b/dlls/kernel32/nls/zhm.nls
@@ -133,6 +133,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_MACAU
LOCALE_SNATIVELANGNAME L"\x4e2d\x6587(\x7b80\x4f53)"
LOCALE_SNEGATIVESIGN "-"
LOCALE_SOPENTYPELANGUAGETAG "ZHT "
+ LOCALE_SPERCENT "%"
LOCALE_SPOSITIVESIGN ""
LOCALE_SSCRIPTS "Hant;"
LOCALE_SPARENT "zh-Hant"
--
2.20.1
1
3
31 Jul '19
A recent change to the game Everquest adds a call to EnumSystemFirmwareTables.
This of course causes the game to crash. Adding this stub call restores full
functionality to the game.
Signed-off-by: Steven Bell <bell.steven(a)gmail.com>
---
.../api-ms-win-core-sysinfo-l1-2-0.spec | 2 +-
.../api-ms-win-core-sysinfo-l1-2-1.spec | 2 +-
dlls/kernel32/cpu.c | 14 ++++++++++++--
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernelbase/kernelbase.spec | 2 +-
5 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec b/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec
index 9b0567412d..1103427d4d 100644
--- a/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec
+++ b/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec
@@ -1,4 +1,4 @@
-@ stub EnumSystemFirmwareTables
+@ stdcall EnumSystemFirmwareTables(long ptr long) kernel32.EnumSystemFirmwareTables
@ stdcall GetComputerNameExA(long ptr ptr) kernel32.GetComputerNameExA
@ stdcall GetComputerNameExW(long ptr ptr) kernel32.GetComputerNameExW
@ stdcall GetLocalTime(ptr) kernel32.GetLocalTime
diff --git a/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec b/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec
index 6da2f25fa1..9a89b4b57a 100644
--- a/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec
+++ b/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec
@@ -1,5 +1,5 @@
@ stub DnsHostnameToComputerNameExW
-@ stub EnumSystemFirmwareTables
+@ stdcall EnumSystemFirmwareTables(long ptr long) kernel32.EnumSystemFirmwareTables
@ stdcall GetComputerNameExA(long ptr ptr) kernel32.GetComputerNameExA
@ stdcall GetComputerNameExW(long ptr ptr) kernel32.GetComputerNameExW
@ stdcall GetLocalTime(ptr) kernel32.GetLocalTime
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c
index 7668a10ea4..f92d646d2a 100644
--- a/dlls/kernel32/cpu.c
+++ b/dlls/kernel32/cpu.c
@@ -50,7 +50,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(reg);
* QueryPerformanceCounter (KERNEL32.@)
*
* Get the current value of the performance counter.
- *
+ *
* PARAMS
* counter [O] Destination for the current counter reading
*
@@ -176,7 +176,7 @@ VOID WINAPI GetNativeSystemInfo(
{
BOOL is_wow64;
- GetSystemInfo(si);
+ GetSystemInfo(si);
IsWow64Process(GetCurrentProcess(), &is_wow64);
if (is_wow64)
@@ -365,3 +365,13 @@ UINT WINAPI GetSystemFirmwareTable(DWORD provider, DWORD id, void *buffer, DWORD
HeapFree(GetProcessHeap(), 0, sfti);
return buffer_size;
}
+
+
+/***********************************************************************
+ * EnumSystemFirmwareTables (KERNEL32.@)
+ */
+UINT WINAPI EnumSystemFirmwareTables(DWORD provider, void *buffer, DWORD size)
+{
+ FIXME("stub, always returning 0\n");
+ return 0;
+}
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 979ebd9fea..241c1215c6 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -418,7 +418,7 @@
@ stdcall EnumResourceTypesW(long ptr long)
@ stdcall EnumSystemCodePagesA(ptr long)
@ stdcall EnumSystemCodePagesW(ptr long)
-# @ stub EnumSystemFirmwareTables
+@ stdcall EnumSystemFirmwareTables(long ptr long)
@ stdcall EnumSystemGeoID(long long ptr)
@ stdcall EnumSystemLanguageGroupsA(ptr long ptr)
@ stdcall EnumSystemLanguageGroupsW(ptr long ptr)
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 8087736d12..f44195a4ea 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -312,7 +312,7 @@
@ stdcall EnumResourceTypesExA(long ptr long long long)
@ stdcall EnumResourceTypesExW(long ptr long long long)
@ stdcall EnumSystemCodePagesW(ptr long) kernel32.EnumSystemCodePagesW
-# @ stub EnumSystemFirmwareTables
+@ stdcall EnumSystemFirmwareTables(long ptr long) kernel32.EnumSystemFirmwareTables
@ stdcall EnumSystemGeoID(long long ptr) kernel32.EnumSystemGeoID
@ stdcall EnumSystemLanguageGroupsW(ptr long ptr) kernel32.EnumSystemLanguageGroupsW
@ stdcall EnumSystemLocalesA(ptr long) kernel32.EnumSystemLocalesA
--
2.20.1
2
1
Signed-off-by: Vincent Povirk <vincent(a)codeweavers.com>
---
pcbRead is a required argument. Windows Forms has an IStream
implementation that depends on it:
https://github.com/madewokherd/winforms/blob/36684d6dfd994f2a06dd6ef5fa73e0…
Found when testing Windows Double Explorer in Wine Mono.
dlls/comctl32/imagelist.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 9a6ea3bbffc..ddf538d1336 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -2173,6 +2173,17 @@ ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2,
}
+static HRESULT stream_read(IStream *pstm, void *buf, ULONG bytestoread)
+{
+ HRESULT hr;
+ ULONG bytesread;
+
+ hr = IStream_Read(pstm, buf, bytestoread, &bytesread);
+ if (SUCCEEDED(hr) && bytesread != bytestoread)
+ hr = E_FAIL;
+ return hr;
+}
+
/* helper for ImageList_Read, see comments below */
static void *read_bitmap(IStream *pstm, BITMAPINFO *bmi)
{
@@ -2180,13 +2191,13 @@ static void *read_bitmap(IStream *pstm, BITMAPINFO *bmi)
int bitsperpixel, palspace;
void *bits;
- if (FAILED(IStream_Read ( pstm, &bmfh, sizeof(bmfh), NULL)))
+ if (FAILED(stream_read ( pstm, &bmfh, sizeof(bmfh))))
return NULL;
if (bmfh.bfType != (('M'<<8)|'B'))
return NULL;
- if (FAILED(IStream_Read ( pstm, &bmi->bmiHeader, sizeof(bmi->bmiHeader), NULL)))
+ if (FAILED(stream_read ( pstm, &bmi->bmiHeader, sizeof(bmi->bmiHeader))))
return NULL;
if ((bmi->bmiHeader.biSize != sizeof(bmi->bmiHeader)))
@@ -2205,13 +2216,13 @@ static void *read_bitmap(IStream *pstm, BITMAPINFO *bmi)
bmi->bmiHeader.biSizeImage = get_dib_image_size( bmi );
/* read the palette right after the end of the bitmapinfoheader */
- if (palspace && FAILED(IStream_Read(pstm, bmi->bmiColors, palspace, NULL)))
+ if (palspace && FAILED(stream_read(pstm, bmi->bmiColors, palspace)))
return NULL;
bits = heap_alloc_zero(bmi->bmiHeader.biSizeImage);
if (!bits) return NULL;
- if (FAILED(IStream_Read(pstm, bits, bmi->bmiHeader.biSizeImage, NULL)))
+ if (FAILED(stream_read(pstm, bits, bmi->bmiHeader.biSizeImage)))
{
heap_free(bits);
return NULL;
@@ -2263,7 +2274,7 @@ HIMAGELIST WINAPI ImageList_Read(IStream *pstm)
TRACE("%p\n", pstm);
- if (FAILED(IStream_Read (pstm, &ilHead, sizeof(ILHEAD), NULL)))
+ if (FAILED(stream_read (pstm, &ilHead, sizeof(ILHEAD))))
return NULL;
if (ilHead.usMagic != (('L' << 8) | 'I'))
return NULL;
--
2.17.1
3
2
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/kernel32/tests/debugger.c | 476 ++++++++++++++++++++++++++++++++-
1 file changed, 462 insertions(+), 14 deletions(-)
2
1
WINE_CHECK_LIB_FUNCS() must be called in WINE_PACKAGE_FLAGS()'s checks
parameter so this happens before CAUDIO_{FLAGS,LIBS} have been mangled
for use by makefiles.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
configure.ac | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
This can cause Wine's compilation to fail if the system-wide library has
FAudio_CommitOperationSet() but it is in fact linked against a local
copy that does not have it.
diff --git a/configure.ac b/configure.ac
index a7c45ace738..2b67504e7b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1691,11 +1691,10 @@ if test "x$with_faudio" != "xno"
then
WINE_PACKAGE_FLAGS(FAUDIO,[faudio],[-lFAudio],,,
[AC_CHECK_HEADERS([FAudio.h],
- [WINE_CHECK_SONAME(FAudio,FAudioCreate,,,[$FAUDIO_LIBS],[[libFAudio*]])])])
- WINE_CHECK_LIB_FUNCS(\
- FAudio_CommitOperationSet \
- F3DAudioInitialize8,
- [$FAUDIO_LIBS])
+ [WINE_CHECK_SONAME(FAudio,FAudioCreate,,,[$FAUDIO_LIBS],[[libFAudio*]])])
+ WINE_CHECK_LIB_FUNCS([FAudio_CommitOperationSet \
+ F3DAudioInitialize8], [$FAUDIO_LIBS])
+ ])
fi
WINE_NOTICE_WITH(faudio,[test "x$ac_cv_lib_soname_FAudio" = "x"],
[libFAudio ${notice_platform}development files not found, XAudio2 won't be supported.])
--
2.20.1
1
0
---
dlls/kernel32/tests/debugger.c | 476 ++++++++++++++++++++++++++++++++-
1 file changed, 462 insertions(+), 14 deletions(-)
2
1
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
tools/winegcc/winegcc.c | 1 +
1 file changed, 1 insertion(+)
1
0
30 Jul '19
From: Józef Kucia <jkucia(a)codeweavers.com>
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
libs/vkd3d/command.c | 2 +-
libs/vkd3d/resource.c | 2 +-
libs/vkd3d/utils.c | 82 ++++++++++++--------------------------
libs/vkd3d/vkd3d_private.h | 3 +-
4 files changed, 29 insertions(+), 60 deletions(-)
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c
index 379cd7d10274..ac7e658d5794 100644
--- a/libs/vkd3d/command.c
+++ b/libs/vkd3d/command.c
@@ -3538,7 +3538,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_ResolveSubresource(ID3D12Graphi
return;
}
- if (dxgi_format_is_typeless(dst_resource->desc.Format) || dxgi_format_is_typeless(src_resource->desc.Format))
+ if (dst_format->type == VKD3D_FORMAT_TYPE_TYPELESS || src_format->type == VKD3D_FORMAT_TYPE_TYPELESS)
{
if (!(vk_format = vkd3d_format_from_d3d12_resource_desc(device, &dst_resource->desc, format)))
{
diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index 054ad3fe5039..0f7ce5ee702f 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -800,7 +800,7 @@ static HRESULT vkd3d_create_image(struct d3d12_device *device,
image_info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
image_info.pNext = NULL;
image_info.flags = 0;
- if (!(desc->Flags & D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL) && dxgi_format_is_typeless(desc->Format))
+ if (!(desc->Flags & D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL) && format->type == VKD3D_FORMAT_TYPE_TYPELESS)
image_info.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
if (desc->Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE2D
&& desc->Width == desc->Height && desc->DepthOrArraySize >= 6
diff --git a/libs/vkd3d/utils.c b/libs/vkd3d/utils.c
index 816ec5e16e03..cdc55126d197 100644
--- a/libs/vkd3d/utils.c
+++ b/libs/vkd3d/utils.c
@@ -24,62 +24,63 @@
#define DEPTH (VK_IMAGE_ASPECT_DEPTH_BIT)
#define STENCIL (VK_IMAGE_ASPECT_STENCIL_BIT)
#define DEPTH_STENCIL (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)
+#define TYPELESS VKD3D_FORMAT_TYPE_TYPELESS
#define SINT VKD3D_FORMAT_TYPE_SINT
#define UINT VKD3D_FORMAT_TYPE_UINT
static const struct vkd3d_format vkd3d_formats[] =
{
- {DXGI_FORMAT_R32G32B32A32_TYPELESS, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32G32B32A32_TYPELESS, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R32G32B32A32_FLOAT, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT, 16, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT, 16, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R32G32B32_TYPELESS, VK_FORMAT_R32G32B32_SFLOAT, 12, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32G32B32_TYPELESS, VK_FORMAT_R32G32B32_SFLOAT, 12, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R32G32B32_FLOAT, VK_FORMAT_R32G32B32_SFLOAT, 12, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_UINT, 12, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_SINT, 12, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R16G16B16A16_TYPELESS, VK_FORMAT_R16G16B16A16_SFLOAT, 8, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16G16B16A16_TYPELESS, VK_FORMAT_R16G16B16A16_SFLOAT, 8, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R16G16B16A16_FLOAT, VK_FORMAT_R16G16B16A16_SFLOAT, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_UNORM, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UINT, 8, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_SNORM, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SINT, 8, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R32G32_TYPELESS, VK_FORMAT_R32G32_SFLOAT, 8, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32G32_TYPELESS, VK_FORMAT_R32G32_SFLOAT, 8, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R32G32_FLOAT, VK_FORMAT_R32G32_SFLOAT, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32G32_UINT, VK_FORMAT_R32G32_UINT, 8, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SINT, 8, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R10G10B10A2_TYPELESS, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R10G10B10A2_TYPELESS, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R10G10B10A2_UNORM, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R10G10B10A2_UINT, VK_FORMAT_A2B10G10R10_UINT_PACK32, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R11G11B10_FLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8G8_TYPELESS, VK_FORMAT_R8G8_UNORM, 2, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8G8_TYPELESS, VK_FORMAT_R8G8_UNORM, 2, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_UNORM, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_UINT, 2, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_SNORM, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SINT, 2, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R8G8B8A8_TYPELESS, VK_FORMAT_R8G8B8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8G8B8A8_TYPELESS, VK_FORMAT_R8G8B8A8_UNORM, 4, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, VK_FORMAT_R8G8B8A8_SRGB, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_UINT, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SINT, 4, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R16G16_TYPELESS, VK_FORMAT_R16G16_SFLOAT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16G16_TYPELESS, VK_FORMAT_R16G16_SFLOAT, 4, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R16G16_FLOAT, VK_FORMAT_R16G16_SFLOAT, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_UINT, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R16G16_SNORM, VK_FORMAT_R16G16_SNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SINT, 4, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R32_TYPELESS, VK_FORMAT_R32_UINT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32_TYPELESS, VK_FORMAT_R32_UINT, 4, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_D32_FLOAT, VK_FORMAT_D32_SFLOAT, 4, 1, 1, 1, DEPTH, 1},
{DXGI_FORMAT_R32_FLOAT, VK_FORMAT_R32_SFLOAT, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32_UINT, VK_FORMAT_R32_UINT, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R32_SINT, VK_FORMAT_R32_SINT, 4, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R16_TYPELESS, VK_FORMAT_R16_UINT, 2, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16_TYPELESS, VK_FORMAT_R16_UINT, 2, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R16_FLOAT, VK_FORMAT_R16_SFLOAT, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM, 2, 1, 1, 1, DEPTH, 1},
{DXGI_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16_UINT, VK_FORMAT_R16_UINT, 2, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R16_SNORM, VK_FORMAT_R16_SNORM, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16_SINT, VK_FORMAT_R16_SINT, 2, 1, 1, 1, COLOR, 1, SINT},
- {DXGI_FORMAT_R8_TYPELESS, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8_TYPELESS, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8_UINT, VK_FORMAT_R8_UINT, 1, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R8_SNORM, VK_FORMAT_R8_SNORM, 1, 1, 1, 1, COLOR, 1},
@@ -87,29 +88,29 @@ static const struct vkd3d_format vkd3d_formats[] =
{DXGI_FORMAT_A8_UNORM, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_B8G8R8X8_UNORM, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_B8G8R8A8_TYPELESS, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_B8G8R8A8_TYPELESS, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1, TYPELESS},
{DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_B8G8R8X8_TYPELESS, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_B8G8R8X8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_BC1_TYPELESS, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, 1, 4, 4, 8, COLOR, 1},
+ {DXGI_FORMAT_BC1_TYPELESS, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, 1, 4, 4, 8, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC1_UNORM, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, 1, 4, 4, 8, COLOR, 1},
{DXGI_FORMAT_BC1_UNORM_SRGB, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, 1, 4, 4, 8, COLOR, 1},
- {DXGI_FORMAT_BC2_TYPELESS, VK_FORMAT_BC2_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
+ {DXGI_FORMAT_BC2_TYPELESS, VK_FORMAT_BC2_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC2_UNORM, VK_FORMAT_BC2_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_BC2_UNORM_SRGB, VK_FORMAT_BC2_SRGB_BLOCK, 1, 4, 4, 16, COLOR, 1},
- {DXGI_FORMAT_BC3_TYPELESS, VK_FORMAT_BC3_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
+ {DXGI_FORMAT_BC3_TYPELESS, VK_FORMAT_BC3_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC3_UNORM, VK_FORMAT_BC3_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_BC3_UNORM_SRGB, VK_FORMAT_BC3_SRGB_BLOCK, 1, 4, 4, 16, COLOR, 1},
- {DXGI_FORMAT_BC4_TYPELESS, VK_FORMAT_BC4_UNORM_BLOCK, 1, 4, 4, 8, COLOR, 1},
+ {DXGI_FORMAT_BC4_TYPELESS, VK_FORMAT_BC4_UNORM_BLOCK, 1, 4, 4, 8, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC4_UNORM, VK_FORMAT_BC4_UNORM_BLOCK, 1, 4, 4, 8, COLOR, 1},
{DXGI_FORMAT_BC4_SNORM, VK_FORMAT_BC4_SNORM_BLOCK, 1, 4, 4, 8, COLOR, 1},
- {DXGI_FORMAT_BC5_TYPELESS, VK_FORMAT_BC5_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
+ {DXGI_FORMAT_BC5_TYPELESS, VK_FORMAT_BC5_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC5_UNORM, VK_FORMAT_BC5_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_BC5_SNORM, VK_FORMAT_BC5_SNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
- {DXGI_FORMAT_BC6H_TYPELESS, VK_FORMAT_BC6H_UFLOAT_BLOCK, 1, 4, 4, 16, COLOR, 1},
+ {DXGI_FORMAT_BC6H_TYPELESS, VK_FORMAT_BC6H_UFLOAT_BLOCK, 1, 4, 4, 16, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC6H_UF16, VK_FORMAT_BC6H_UFLOAT_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_BC6H_SF16, VK_FORMAT_BC6H_SFLOAT_BLOCK, 1, 4, 4, 16, COLOR, 1},
- {DXGI_FORMAT_BC7_TYPELESS, VK_FORMAT_BC7_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
+ {DXGI_FORMAT_BC7_TYPELESS, VK_FORMAT_BC7_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1, TYPELESS},
{DXGI_FORMAT_BC7_UNORM, VK_FORMAT_BC7_UNORM_BLOCK, 1, 4, 4, 16, COLOR, 1},
{DXGI_FORMAT_BC7_UNORM_SRGB, VK_FORMAT_BC7_SRGB_BLOCK, 1, 4, 4, 16, COLOR, 1},
};
@@ -117,23 +118,24 @@ static const struct vkd3d_format vkd3d_formats[] =
/* Each depth/stencil format is only compatible with itself in Vulkan. */
static const struct vkd3d_format vkd3d_depth_stencil_formats[] =
{
- {DXGI_FORMAT_R32G8X24_TYPELESS, VK_FORMAT_D32_SFLOAT_S8_UINT, 8, 1, 1, 1, DEPTH_STENCIL, 2},
+ {DXGI_FORMAT_R32G8X24_TYPELESS, VK_FORMAT_D32_SFLOAT_S8_UINT, 8, 1, 1, 1, DEPTH_STENCIL, 2, TYPELESS},
{DXGI_FORMAT_D32_FLOAT_S8X24_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, 8, 1, 1, 1, DEPTH_STENCIL, 2},
{DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, VK_FORMAT_D32_SFLOAT_S8_UINT, 8, 1, 1, 1, DEPTH, 2},
{DXGI_FORMAT_X32_TYPELESS_G8X24_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, 8, 1, 1, 1, STENCIL, 2},
- {DXGI_FORMAT_R32_TYPELESS, VK_FORMAT_D32_SFLOAT, 4, 1, 1, 1, DEPTH, 1},
+ {DXGI_FORMAT_R32_TYPELESS, VK_FORMAT_D32_SFLOAT, 4, 1, 1, 1, DEPTH, 1, TYPELESS},
{DXGI_FORMAT_R32_FLOAT, VK_FORMAT_D32_SFLOAT, 4, 1, 1, 1, DEPTH, 1},
- {DXGI_FORMAT_R24G8_TYPELESS, VK_FORMAT_D24_UNORM_S8_UINT, 4, 1, 1, 1, DEPTH_STENCIL, 2},
+ {DXGI_FORMAT_R24G8_TYPELESS, VK_FORMAT_D24_UNORM_S8_UINT, 4, 1, 1, 1, DEPTH_STENCIL, 2, TYPELESS},
{DXGI_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, 4, 1, 1, 1, DEPTH_STENCIL, 2},
{DXGI_FORMAT_R24_UNORM_X8_TYPELESS, VK_FORMAT_D24_UNORM_S8_UINT, 4, 1, 1, 1, DEPTH, 2},
{DXGI_FORMAT_X24_TYPELESS_G8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, 4, 1, 1, 1, STENCIL, 2},
- {DXGI_FORMAT_R16_TYPELESS, VK_FORMAT_D16_UNORM, 2, 1, 1, 1, DEPTH, 1},
+ {DXGI_FORMAT_R16_TYPELESS, VK_FORMAT_D16_UNORM, 2, 1, 1, 1, DEPTH, 1, TYPELESS},
{DXGI_FORMAT_R16_UNORM, VK_FORMAT_D16_UNORM, 2, 1, 1, 1, DEPTH, 1},
};
#undef COLOR
#undef DEPTH
#undef STENCIL
#undef DEPTH_STENCIL
+#undef TYPELESS
#undef SINT
#undef UINT
@@ -234,38 +236,6 @@ VkFormat vkd3d_get_vk_format(DXGI_FORMAT format)
return vkd3d_format->vk_format;
}
-bool dxgi_format_is_typeless(DXGI_FORMAT dxgi_format)
-{
- switch (dxgi_format)
- {
- case DXGI_FORMAT_R32G32B32A32_TYPELESS:
- case DXGI_FORMAT_R32G32B32_TYPELESS:
- case DXGI_FORMAT_R16G16B16A16_TYPELESS:
- case DXGI_FORMAT_R32G32_TYPELESS:
- case DXGI_FORMAT_R32G8X24_TYPELESS:
- case DXGI_FORMAT_R10G10B10A2_TYPELESS:
- case DXGI_FORMAT_R8G8B8A8_TYPELESS:
- case DXGI_FORMAT_R16G16_TYPELESS:
- case DXGI_FORMAT_R32_TYPELESS:
- case DXGI_FORMAT_R24G8_TYPELESS:
- case DXGI_FORMAT_R8G8_TYPELESS:
- case DXGI_FORMAT_R16_TYPELESS:
- case DXGI_FORMAT_R8_TYPELESS:
- case DXGI_FORMAT_BC1_TYPELESS:
- case DXGI_FORMAT_BC2_TYPELESS:
- case DXGI_FORMAT_BC3_TYPELESS:
- case DXGI_FORMAT_BC4_TYPELESS:
- case DXGI_FORMAT_BC5_TYPELESS:
- case DXGI_FORMAT_B8G8R8A8_TYPELESS:
- case DXGI_FORMAT_B8G8R8X8_TYPELESS:
- case DXGI_FORMAT_BC6H_TYPELESS:
- case DXGI_FORMAT_BC7_TYPELESS:
- return true;
- default:
- return false;
- }
-}
-
DXGI_FORMAT vkd3d_get_dxgi_format(VkFormat format)
{
DXGI_FORMAT dxgi_format;
@@ -276,7 +246,7 @@ DXGI_FORMAT vkd3d_get_dxgi_format(VkFormat format)
{
vk_format = vkd3d_formats[i].vk_format;
dxgi_format = vkd3d_formats[i].dxgi_format;
- if (vk_format == format && !dxgi_format_is_typeless(dxgi_format))
+ if (vk_format == format && vkd3d_formats[i].type != VKD3D_FORMAT_TYPE_TYPELESS)
return dxgi_format;
}
diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h
index 20f16ea3ad7e..9d753ec93090 100644
--- a/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/vkd3d_private.h
@@ -1101,6 +1101,7 @@ static inline unsigned int d3d12_device_get_descriptor_handle_increment_size(str
enum vkd3d_format_type
{
VKD3D_FORMAT_TYPE_OTHER,
+ VKD3D_FORMAT_TYPE_TYPELESS,
VKD3D_FORMAT_TYPE_SINT,
VKD3D_FORMAT_TYPE_UINT,
};
@@ -1130,8 +1131,6 @@ const struct vkd3d_format *vkd3d_get_format(const struct d3d12_device *device,
HRESULT vkd3d_init_depth_stencil_formats(struct d3d12_device *device) DECLSPEC_HIDDEN;
void vkd3d_cleanup_depth_stencil_formats(struct d3d12_device *device) DECLSPEC_HIDDEN;
-bool dxgi_format_is_typeless(DXGI_FORMAT dxgi_format) DECLSPEC_HIDDEN;
-
static inline const struct vkd3d_format *vkd3d_format_from_d3d12_resource_desc(
const struct d3d12_device *device, const D3D12_RESOURCE_DESC *desc, DXGI_FORMAT view_format)
{
--
2.21.0
2
1
[PATCH vkd3d v4 4/5] vkd3d: Handle SINT and UINT formats in ClearRenderTargetView().
by Józef Kucia 30 Jul '19
by Józef Kucia 30 Jul '19
30 Jul '19
From: Jactry Zeng <jzeng(a)codeweavers.com>
Signed-off-by: Jactry Zeng <jzeng(a)codeweavers.com>
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
Version 3: Store format type in vkd3d_format.
---
libs/vkd3d/command.c | 24 +++++++++++++++++++-
libs/vkd3d/utils.c | 46 +++++++++++++++++++++-----------------
libs/vkd3d/vkd3d_private.h | 8 +++++++
tests/d3d12.c | 2 --
4 files changed, 56 insertions(+), 24 deletions(-)
diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c
index 30b4ae344df8..379cd7d10274 100644
--- a/libs/vkd3d/command.c
+++ b/libs/vkd3d/command.c
@@ -4631,11 +4631,11 @@ static void STDMETHODCALLTYPE d3d12_command_list_ClearDepthStencilView(ID3D12Gra
static void STDMETHODCALLTYPE d3d12_command_list_ClearRenderTargetView(ID3D12GraphicsCommandList1 *iface,
D3D12_CPU_DESCRIPTOR_HANDLE rtv, const FLOAT color[4], UINT rect_count, const D3D12_RECT *rects)
{
- const union VkClearValue clear_value = {{{color[0], color[1], color[2], color[3]}}};
struct d3d12_command_list *list = impl_from_ID3D12GraphicsCommandList1(iface);
const struct d3d12_rtv_desc *rtv_desc = d3d12_rtv_desc_from_cpu_handle(rtv);
struct VkAttachmentDescription attachment_desc;
struct VkAttachmentReference color_reference;
+ VkClearValue clear_value;
TRACE("iface %p, rtv %#lx, color %p, rect_count %u, rects %p.\n",
iface, rtv.ptr, color, rect_count, rects);
@@ -4655,6 +4655,28 @@ static void STDMETHODCALLTYPE d3d12_command_list_ClearRenderTargetView(ID3D12Gra
color_reference.attachment = 0;
color_reference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
+ if (rtv_desc->format->type == VKD3D_FORMAT_TYPE_UINT)
+ {
+ clear_value.color.uint32[0] = max(0, color[0]);
+ clear_value.color.uint32[1] = max(0, color[1]);
+ clear_value.color.uint32[2] = max(0, color[2]);
+ clear_value.color.uint32[3] = max(0, color[3]);
+ }
+ else if (rtv_desc->format->type == VKD3D_FORMAT_TYPE_SINT)
+ {
+ clear_value.color.int32[0] = color[0];
+ clear_value.color.int32[1] = color[1];
+ clear_value.color.int32[2] = color[2];
+ clear_value.color.int32[3] = color[3];
+ }
+ else
+ {
+ clear_value.color.float32[0] = color[0];
+ clear_value.color.float32[1] = color[1];
+ clear_value.color.float32[2] = color[2];
+ clear_value.color.float32[3] = color[3];
+ }
+
d3d12_command_list_clear(list, &attachment_desc, &color_reference, NULL,
rtv_desc->view, rtv_desc->width, rtv_desc->height, rtv_desc->layer_count,
&clear_value, rect_count, rects);
diff --git a/libs/vkd3d/utils.c b/libs/vkd3d/utils.c
index 5c8d3635b22c..816ec5e16e03 100644
--- a/libs/vkd3d/utils.c
+++ b/libs/vkd3d/utils.c
@@ -24,64 +24,66 @@
#define DEPTH (VK_IMAGE_ASPECT_DEPTH_BIT)
#define STENCIL (VK_IMAGE_ASPECT_STENCIL_BIT)
#define DEPTH_STENCIL (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)
+#define SINT VKD3D_FORMAT_TYPE_SINT
+#define UINT VKD3D_FORMAT_TYPE_UINT
static const struct vkd3d_format vkd3d_formats[] =
{
{DXGI_FORMAT_R32G32B32A32_TYPELESS, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32G32B32A32_FLOAT, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT, 16, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT, 16, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT, 16, 1, 1, 1, COLOR, 1, UINT},
+ {DXGI_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT, 16, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R32G32B32_TYPELESS, VK_FORMAT_R32G32B32_SFLOAT, 12, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32G32B32_FLOAT, VK_FORMAT_R32G32B32_SFLOAT, 12, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_UINT, 12, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_SINT, 12, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_UINT, 12, 1, 1, 1, COLOR, 1, UINT},
+ {DXGI_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_SINT, 12, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R16G16B16A16_TYPELESS, VK_FORMAT_R16G16B16A16_SFLOAT, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16B16A16_FLOAT, VK_FORMAT_R16G16B16A16_SFLOAT, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_UNORM, 8, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UINT, 8, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UINT, 8, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_SNORM, 8, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SINT, 8, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SINT, 8, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R32G32_TYPELESS, VK_FORMAT_R32G32_SFLOAT, 8, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R32G32_FLOAT, VK_FORMAT_R32G32_SFLOAT, 8, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32G32_UINT, VK_FORMAT_R32G32_UINT, 8, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SINT, 8, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32G32_UINT, VK_FORMAT_R32G32_UINT, 8, 1, 1, 1, COLOR, 1, UINT},
+ {DXGI_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SINT, 8, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R10G10B10A2_TYPELESS, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R10G10B10A2_UNORM, VK_FORMAT_A2B10G10R10_UNORM_PACK32, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R10G10B10A2_UINT, VK_FORMAT_A2B10G10R10_UINT_PACK32, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R10G10B10A2_UINT, VK_FORMAT_A2B10G10R10_UINT_PACK32, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R11G11B10_FLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8_TYPELESS, VK_FORMAT_R8G8_UNORM, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_UNORM, 2, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_UINT, 2, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_UINT, 2, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_SNORM, 2, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SINT, 2, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SINT, 2, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R8G8B8A8_TYPELESS, VK_FORMAT_R8G8B8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, VK_FORMAT_R8G8B8A8_SRGB, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_UINT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_UINT, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SNORM, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SINT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SINT, 4, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R16G16_TYPELESS, VK_FORMAT_R16G16_SFLOAT, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16_FLOAT, VK_FORMAT_R16G16_SFLOAT, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_UNORM, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_UINT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_UINT, 4, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R16G16_SNORM, VK_FORMAT_R16G16_SNORM, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SINT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SINT, 4, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R32_TYPELESS, VK_FORMAT_R32_UINT, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_D32_FLOAT, VK_FORMAT_D32_SFLOAT, 4, 1, 1, 1, DEPTH, 1},
{DXGI_FORMAT_R32_FLOAT, VK_FORMAT_R32_SFLOAT, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32_UINT, VK_FORMAT_R32_UINT, 4, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R32_SINT, VK_FORMAT_R32_SINT, 4, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R32_UINT, VK_FORMAT_R32_UINT, 4, 1, 1, 1, COLOR, 1, UINT},
+ {DXGI_FORMAT_R32_SINT, VK_FORMAT_R32_SINT, 4, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R16_TYPELESS, VK_FORMAT_R16_UINT, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R16_FLOAT, VK_FORMAT_R16_SFLOAT, 2, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM, 2, 1, 1, 1, DEPTH, 1},
{DXGI_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, 2, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R16_UINT, VK_FORMAT_R16_UINT, 2, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16_UINT, VK_FORMAT_R16_UINT, 2, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R16_SNORM, VK_FORMAT_R16_SNORM, 2, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R16_SINT, VK_FORMAT_R16_SINT, 2, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R16_SINT, VK_FORMAT_R16_SINT, 2, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_R8_TYPELESS, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8_UINT, VK_FORMAT_R8_UINT, 1, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8_UINT, VK_FORMAT_R8_UINT, 1, 1, 1, 1, COLOR, 1, UINT},
{DXGI_FORMAT_R8_SNORM, VK_FORMAT_R8_SNORM, 1, 1, 1, 1, COLOR, 1},
- {DXGI_FORMAT_R8_SINT, VK_FORMAT_R8_SINT, 1, 1, 1, 1, COLOR, 1},
+ {DXGI_FORMAT_R8_SINT, VK_FORMAT_R8_SINT, 1, 1, 1, 1, COLOR, 1, SINT},
{DXGI_FORMAT_A8_UNORM, VK_FORMAT_R8_UNORM, 1, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
{DXGI_FORMAT_B8G8R8X8_UNORM, VK_FORMAT_B8G8R8A8_UNORM, 4, 1, 1, 1, COLOR, 1},
@@ -132,6 +134,8 @@ static const struct vkd3d_format vkd3d_depth_stencil_formats[] =
#undef DEPTH
#undef STENCIL
#undef DEPTH_STENCIL
+#undef SINT
+#undef UINT
HRESULT vkd3d_init_depth_stencil_formats(struct d3d12_device *device)
{
diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h
index fe939e548258..20f16ea3ad7e 100644
--- a/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/vkd3d_private.h
@@ -1098,6 +1098,13 @@ static inline unsigned int d3d12_device_get_descriptor_handle_increment_size(str
}
/* utils */
+enum vkd3d_format_type
+{
+ VKD3D_FORMAT_TYPE_OTHER,
+ VKD3D_FORMAT_TYPE_SINT,
+ VKD3D_FORMAT_TYPE_UINT,
+};
+
struct vkd3d_format
{
DXGI_FORMAT dxgi_format;
@@ -1108,6 +1115,7 @@ struct vkd3d_format
size_t block_byte_count;
VkImageAspectFlags vk_aspect_mask;
unsigned int plane_count;
+ enum vkd3d_format_type type;
bool is_emulated;
};
diff --git a/tests/d3d12.c b/tests/d3d12.c
index 4ac6b5ef54f0..508535cb53f8 100644
--- a/tests/d3d12.c
+++ b/tests/d3d12.c
@@ -4455,7 +4455,6 @@ static void test_clear_render_target_view(void)
ID3D12GraphicsCommandList_ClearRenderTargetView(command_list, rtv_handle, r8g8b8a8[i].color, 0, NULL);
transition_resource_state(command_list, resource,
D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_COPY_SOURCE);
- todo_if(rtv_desc.Format == DXGI_FORMAT_R8G8B8A8_UINT || rtv_desc.Format == DXGI_FORMAT_R8G8B8A8_SINT)
check_sub_resource_uint(resource, 0, queue, command_list, r8g8b8a8[i].result, 2);
reset_command_list(command_list, context.allocator);
@@ -4486,7 +4485,6 @@ static void test_clear_render_target_view(void)
ID3D12GraphicsCommandList_ClearRenderTargetView(command_list, rtv_handle, r16g16b16a16[i].color, 0, NULL);
transition_resource_state(command_list, resource,
D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_COPY_SOURCE);
- todo_if(rtv_desc.Format != DXGI_FORMAT_R16G16B16A16_UNORM)
check_sub_resource_uint64(resource, 0, queue, command_list, r16g16b16a16[i].result, 0);
reset_command_list(command_list, context.allocator);
--
2.21.0
2
1