Rebase against 4eaaf06ce4e5d7424eec2cf303c8256610544b39.

This commit is contained in:
Sebastian Lackner 2017-05-13 01:14:10 +02:00
parent 171d05fffe
commit 8748402001
9 changed files with 184 additions and 441 deletions

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "b77688102a84e1c7b7278340c46f53db3e1cda00"
echo "4eaaf06ce4e5d7424eec2cf303c8256610544b39"
}
# Show version information
@ -8300,7 +8300,6 @@ if test "$enable_windowscodecs_TIFF_Support" -eq 1; then
patch_apply windowscodecs-TIFF_Support/0007-windowscodecs-Add-support-for-3bps-RGB-format-to-TIF.patch
patch_apply windowscodecs-TIFF_Support/0008-windowscodecs-Add-support-for-12bpp-RGB-format-to-TI.patch
patch_apply windowscodecs-TIFF_Support/0009-windowscodecs-Add-support-for-128bppRGBAFloat-format.patch
patch_apply windowscodecs-TIFF_Support/0010-include-Fix-the-GUID_WICPixelFormat32bppCMYK-definit.patch
patch_apply windowscodecs-TIFF_Support/0011-windowscodecs-Add-support-for-32bppCMYK-and-64bppCMY.patch
patch_apply windowscodecs-TIFF_Support/0012-windowscodecs-Add-support-for-4bpp-RGBA-format-to-TI.patch
patch_apply windowscodecs-TIFF_Support/0013-windowscodecs-Add-support-for-16bpp-RGBA-format-to-T.patch
@ -8318,7 +8317,6 @@ if test "$enable_windowscodecs_TIFF_Support" -eq 1; then
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 3bps RGB format to TIFF decoder.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 12bpp RGB format to TIFF decoder.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 128bppRGBAFloat format to TIFF decoder.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "include: Fix the GUID_WICPixelFormat32bppCMYK definition.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 32bppCMYK and 64bppCMYK formats to TIFF decoder.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 4bpp RGBA format to TIFF decoder.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 16bpp RGBA format to TIFF decoder.", 1 },';
@ -8388,24 +8386,21 @@ fi
# | windowscodecs-IWICPalette_InitializeFromBitmap, windowscodecs-TIFF_Support, windowscodecs-WICCreateBitmapFromSection
# |
# | Modified files:
# | * dlls/windowscodecs/Makefile.in, dlls/windowscodecs/gifformat.c, dlls/windowscodecs/imgfactory.c,
# | dlls/windowscodecs/metadatahandler.c, dlls/windowscodecs/metadataquery.c, dlls/windowscodecs/tests/converter.c,
# | dlls/windowscodecs/tests/metadata.c, dlls/windowscodecs/tiffformat.c, dlls/windowscodecs/windowscodecs.spec,
# | include/wincodec.idl, include/wincodecsdk.idl
# | * dlls/windowscodecs/Makefile.in, dlls/windowscodecs/metadatahandler.c, dlls/windowscodecs/metadataquery.c,
# | dlls/windowscodecs/tests/metadata.c, dlls/windowscodecs/windowscodecs.spec, include/wincodec.idl,
# | include/wincodecsdk.idl
# |
if test "$enable_windowscodecs_Metadata" -eq 1; then
patch_apply windowscodecs-Metadata/0001-windowscodecs-Implement-WICMapGuidToShortName.patch
patch_apply windowscodecs-Metadata/0002-windowscodecs-Implement-WICMapShortNameToGuid.patch
patch_apply windowscodecs-Metadata/0003-windowscodecs-Implement-WICMapSchemaToName.patch
patch_apply windowscodecs-Metadata/0004-windowscodecs-Implement-IWICMetadataQueryReader-GetC.patch
patch_apply windowscodecs-Metadata/0005-include-Fix-typos-in-WICPersistOptions-enumeration-n.patch
patch_apply windowscodecs-Metadata/0006-windowscodecs-Simplify-a-bit-comparison-of-two-PROPV.patch
(
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Implement WICMapGuidToShortName.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Implement WICMapShortNameToGuid.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Implement WICMapSchemaToName.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Implement IWICMetadataQueryReader::GetContainerFormat.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "include: Fix typos in WICPersistOptions enumeration names.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Simplify a bit comparison of two PROPVARIANTs.", 1 },';
) >> "$patchlist"
fi

View File

@ -1,248 +0,0 @@
From e9cd0d95e6c21d304f67035b7aa5113021f2aeb1 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 28 Mar 2017 14:29:55 +0800
Subject: include: Fix typos in WICPersistOptions enumeration names.
---
dlls/windowscodecs/gifformat.c | 4 ++--
dlls/windowscodecs/imgfactory.c | 4 ++--
dlls/windowscodecs/metadatahandler.c | 6 +++---
dlls/windowscodecs/tests/converter.c | 4 ++--
dlls/windowscodecs/tests/metadata.c | 28 ++++++++++++++--------------
dlls/windowscodecs/tiffformat.c | 6 +++---
include/wincodecsdk.idl | 12 ++++++------
7 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/dlls/windowscodecs/gifformat.c b/dlls/windowscodecs/gifformat.c
index efeddb00bb..7537eaca07 100644
--- a/dlls/windowscodecs/gifformat.c
+++ b/dlls/windowscodecs/gifformat.c
@@ -566,7 +566,7 @@ static HRESULT create_metadata_reader(const void *data, int data_size,
}
stream = create_stream(data, data_size);
- IWICPersistStream_LoadEx(persist, stream, NULL, WICPersistOptionsDefault);
+ IWICPersistStream_LoadEx(persist, stream, NULL, WICPersistOptionDefault);
IStream_Release(stream);
IWICPersistStream_Release(persist);
@@ -936,7 +936,7 @@ static HRESULT create_IMD_metadata_reader(GifFrameDecode *This, IWICMetadataRead
}
stream = create_stream(&IMD_data, sizeof(IMD_data));
- IWICPersistStream_LoadEx(persist, stream, NULL, WICPersistOptionsDefault);
+ IWICPersistStream_LoadEx(persist, stream, NULL, WICPersistOptionDefault);
IStream_Release(stream);
IWICPersistStream_Release(persist);
diff --git a/dlls/windowscodecs/imgfactory.c b/dlls/windowscodecs/imgfactory.c
index 0ff4c123ee..c28c4a8d28 100644
--- a/dlls/windowscodecs/imgfactory.c
+++ b/dlls/windowscodecs/imgfactory.c
@@ -1044,7 +1044,7 @@ start:
if (SUCCEEDED(hr))
{
hr = IWICPersistStream_LoadEx(wicpersiststream,
- stream, vendor, options & WICPersistOptionsMask);
+ stream, vendor, options & WICPersistOptionMask);
IWICPersistStream_Release(wicpersiststream);
}
@@ -1088,7 +1088,7 @@ start:
if (SUCCEEDED(hr))
{
- hr = IWICPersistStream_LoadEx(wicpersiststream, stream, NULL, options & WICPersistOptionsMask);
+ hr = IWICPersistStream_LoadEx(wicpersiststream, stream, NULL, options & WICPersistOptionMask);
IWICPersistStream_Release(wicpersiststream);
}
diff --git a/dlls/windowscodecs/metadatahandler.c b/dlls/windowscodecs/metadatahandler.c
index d0663066c9..e394064f2a 100644
--- a/dlls/windowscodecs/metadatahandler.c
+++ b/dlls/windowscodecs/metadatahandler.c
@@ -390,7 +390,7 @@ static HRESULT WINAPI MetadataHandler_Load(IWICPersistStream *iface,
{
MetadataHandler *This = impl_from_IWICPersistStream(iface);
TRACE("(%p,%p)\n", iface, pStm);
- return IWICPersistStream_LoadEx(&This->IWICPersistStream_iface, pStm, NULL, WICPersistOptionsDefault);
+ return IWICPersistStream_LoadEx(&This->IWICPersistStream_iface, pStm, NULL, WICPersistOptionDefault);
}
static HRESULT WINAPI MetadataHandler_Save(IWICPersistStream *iface,
@@ -1059,9 +1059,9 @@ static HRESULT LoadIfdMetadata(IStream *input, const GUID *preferred_vendor,
TRACE("\n");
#ifdef WORDS_BIGENDIAN
- if (persist_options & WICPersistOptionsLittleEndian)
+ if (persist_options & WICPersistOptionLittleEndian)
#else
- if (persist_options & WICPersistOptionsBigEndian)
+ if (persist_options & WICPersistOptionBigEndian)
#endif
native_byte_order = FALSE;
diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c
index 17724d9ed0..357f9ef642 100644
--- a/dlls/windowscodecs/tests/converter.c
+++ b/dlls/windowscodecs/tests/converter.c
@@ -776,9 +776,9 @@ static void load_stream(IUnknown *reader, IStream *stream)
HRESULT hr;
IWICPersistStream *persist;
#ifdef WORDS_BIGENDIAN
- DWORD persist_options = WICPersistOptionsBigEndian;
+ DWORD persist_options = WICPersistOptionBigEndian;
#else
- DWORD persist_options = WICPersistOptionsLittleEndian;
+ DWORD persist_options = WICPersistOptionLittleEndian;
#endif
hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist);
diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c
index 1123b9f7e3..ad5bcf7b98 100644
--- a/dlls/windowscodecs/tests/metadata.c
+++ b/dlls/windowscodecs/tests/metadata.c
@@ -262,7 +262,7 @@ static void test_metadata_unknown(void)
ok(hr == S_OK, "CoCreateInstance failed, hr=%x\n", hr);
if (FAILED(hr)) return;
- load_stream((IUnknown*)reader, metadata_unknown, sizeof(metadata_unknown), WICPersistOptionsDefault);
+ load_stream((IUnknown*)reader, metadata_unknown, sizeof(metadata_unknown), WICPersistOptionDefault);
hr = IWICMetadataReader_GetEnumerator(reader, &enumerator);
ok(hr == S_OK, "GetEnumerator failed, hr=%x\n", hr);
@@ -329,7 +329,7 @@ static void test_metadata_tEXt(void)
ok(hr == S_OK, "GetCount failed, hr=%x\n", hr);
ok(count == 0, "unexpected count %i\n", count);
- load_stream((IUnknown*)reader, metadata_tEXt, sizeof(metadata_tEXt), WICPersistOptionsDefault);
+ load_stream((IUnknown*)reader, metadata_tEXt, sizeof(metadata_tEXt), WICPersistOptionDefault);
hr = IWICMetadataReader_GetCount(reader, &count);
ok(hr == S_OK, "GetCount failed, hr=%x\n", hr);
@@ -440,7 +440,7 @@ static void test_metadata_gAMA(void)
ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%x\n", hr);
if (FAILED(hr)) return;
- load_stream((IUnknown*)reader, metadata_gAMA, sizeof(metadata_gAMA), WICPersistOptionsDefault);
+ load_stream((IUnknown*)reader, metadata_gAMA, sizeof(metadata_gAMA), WICPersistOptionDefault);
hr = IWICMetadataReader_GetMetadataFormat(reader, &format);
ok(hr == S_OK, "GetMetadataFormat failed, hr=%x\n", hr);
@@ -498,7 +498,7 @@ static void test_metadata_cHRM(void)
ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%x\n", hr);
if (FAILED(hr)) return;
- load_stream((IUnknown*)reader, metadata_cHRM, sizeof(metadata_cHRM), WICPersistOptionsDefault);
+ load_stream((IUnknown*)reader, metadata_cHRM, sizeof(metadata_cHRM), WICPersistOptionDefault);
hr = IWICMetadataReader_GetMetadataFormat(reader, &format);
ok(hr == S_OK, "GetMetadataFormat failed, hr=%x\n", hr);
@@ -792,9 +792,9 @@ static void test_metadata_IFD(void)
GUID format;
char *IFD_data_swapped;
#ifdef WORDS_BIGENDIAN
- DWORD persist_options = WICPersistOptionsBigEndian;
+ DWORD persist_options = WICPersistOptionBigEndian;
#else
- DWORD persist_options = WICPersistOptionsLittleEndian;
+ DWORD persist_options = WICPersistOptionLittleEndian;
#endif
hr = CoCreateInstance(&CLSID_WICIfdMetadataReader, NULL, CLSCTX_INPROC_SERVER,
@@ -817,10 +817,10 @@ static void test_metadata_IFD(void)
compare_metadata(reader, td, count);
/* test IFD data with different endianness */
- if (persist_options == WICPersistOptionsLittleEndian)
- persist_options = WICPersistOptionsBigEndian;
+ if (persist_options == WICPersistOptionLittleEndian)
+ persist_options = WICPersistOptionBigEndian;
else
- persist_options = WICPersistOptionsLittleEndian;
+ persist_options = WICPersistOptionLittleEndian;
IFD_data_swapped = HeapAlloc(GetProcessHeap(), 0, sizeof(IFD_data));
memcpy(IFD_data_swapped, &IFD_data, sizeof(IFD_data));
@@ -964,22 +964,22 @@ static void test_create_reader(void)
stream = create_stream(metadata_tEXt, sizeof(metadata_tEXt));
hr = IWICComponentFactory_CreateMetadataReaderFromContainer(factory,
- NULL, NULL, WICPersistOptionsDefault,
+ NULL, NULL, WICPersistOptionDefault,
stream, &reader);
ok(hr == E_INVALIDARG, "CreateMetadataReaderFromContainer failed, hr=%x\n", hr);
hr = IWICComponentFactory_CreateMetadataReaderFromContainer(factory,
- &GUID_ContainerFormatPng, NULL, WICPersistOptionsDefault,
+ &GUID_ContainerFormatPng, NULL, WICPersistOptionDefault,
NULL, &reader);
ok(hr == E_INVALIDARG, "CreateMetadataReaderFromContainer failed, hr=%x\n", hr);
hr = IWICComponentFactory_CreateMetadataReaderFromContainer(factory,
- &GUID_ContainerFormatPng, NULL, WICPersistOptionsDefault,
+ &GUID_ContainerFormatPng, NULL, WICPersistOptionDefault,
stream, NULL);
ok(hr == E_INVALIDARG, "CreateMetadataReaderFromContainer failed, hr=%x\n", hr);
hr = IWICComponentFactory_CreateMetadataReaderFromContainer(factory,
- &GUID_ContainerFormatPng, NULL, WICPersistOptionsDefault,
+ &GUID_ContainerFormatPng, NULL, WICPersistOptionDefault,
stream, &reader);
ok(hr == S_OK, "CreateMetadataReaderFromContainer failed, hr=%x\n", hr);
@@ -997,7 +997,7 @@ static void test_create_reader(void)
}
hr = IWICComponentFactory_CreateMetadataReaderFromContainer(factory,
- &GUID_ContainerFormatWmp, NULL, WICPersistOptionsDefault,
+ &GUID_ContainerFormatWmp, NULL, WICPersistOptionDefault,
stream, &reader);
ok(hr == S_OK, "CreateMetadataReaderFromContainer failed, hr=%x\n", hr);
diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c
index c8f16f2112..5bc08e42e5 100644
--- a/dlls/windowscodecs/tiffformat.c
+++ b/dlls/windowscodecs/tiffformat.c
@@ -1517,11 +1517,11 @@ static HRESULT create_metadata_reader(TiffFrameDecode *This, IWICMetadataReader
{
BOOL byte_swapped = pTIFFIsByteSwapped(This->parent->tiff);
#ifdef WORDS_BIGENDIAN
- DWORD persist_options = byte_swapped ? WICPersistOptionsLittleEndian : WICPersistOptionsBigEndian;
+ DWORD persist_options = byte_swapped ? WICPersistOptionLittleEndian : WICPersistOptionBigEndian;
#else
- DWORD persist_options = byte_swapped ? WICPersistOptionsBigEndian : WICPersistOptionsLittleEndian;
+ DWORD persist_options = byte_swapped ? WICPersistOptionBigEndian : WICPersistOptionLittleEndian;
#endif
- persist_options |= WICPersistOptionsNoCacheStream;
+ persist_options |= WICPersistOptionNoCacheStream;
hr = IWICPersistStream_LoadEx(persist, This->parent->stream, NULL, persist_options);
if (FAILED(hr))
ERR("IWICPersistStream_LoadEx error %#x\n", hr);
diff --git a/include/wincodecsdk.idl b/include/wincodecsdk.idl
index 7c3c13fbc7..75492774f3 100644
--- a/include/wincodecsdk.idl
+++ b/include/wincodecsdk.idl
@@ -20,13 +20,13 @@ import "wtypes.idl";
import "wincodec.idl";
typedef enum WICPersistOptions {
- WICPersistOptionsDefault = 0x00000000,
- WICPersistOptionsLittleEndian = 0x00000000,
- WICPersistOptionsBigEndian = 0x00000001,
- WICPersistOptionsStrictFormat = 0x00000002,
- WICPersistOptionsNoCacheStream = 0x00000004,
+ WICPersistOptionDefault = 0x00000000,
+ WICPersistOptionLittleEndian = 0x00000000,
+ WICPersistOptionBigEndian = 0x00000001,
+ WICPersistOptionStrictFormat = 0x00000002,
+ WICPersistOptionNoCacheStream = 0x00000004,
WICPersistOptionPreferUTF8 = 0x00000008,
- WICPersistOptionsMask = 0x0000FFFF
+ WICPersistOptionMask = 0x0000FFFF
} WICPersistOptions;
typedef enum WICMetadataCreationOptions {
--
2.12.2

View File

@ -44,9 +44,9 @@ index 7bfd70bdc21..85214d4fb1f 100644
+ HRESULT hr;
+ IWICPersistStream *persist;
+#ifdef WORDS_BIGENDIAN
+ DWORD persist_options = WICPersistOptionsBigEndian;
+ DWORD persist_options = WICPersistOptionBigEndian;
+#else
+ DWORD persist_options = WICPersistOptionsLittleEndian;
+ DWORD persist_options = WICPersistOptionLittleEndian;
+#endif
+
+ hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist);

View File

@ -1,4 +1,4 @@
From cfee4c0d28ee7eff5992423c826e999bbc07db43 Mon Sep 17 00:00:00 2001
From 96f1d2f5fdf6f9f40852c170535a2392b51aa7d7 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 9 Dec 2016 12:46:00 +0800
Subject: windowscodecs: Add support for 128bppRGBAFloat format to TIFF
@ -11,7 +11,7 @@ Subject: windowscodecs: Add support for 128bppRGBAFloat format to TIFF
3 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/windowscodecs/regsvr.c b/dlls/windowscodecs/regsvr.c
index d1649fa955..f695d3e40a 100644
index d1649fa955a..f695d3e40a5 100644
--- a/dlls/windowscodecs/regsvr.c
+++ b/dlls/windowscodecs/regsvr.c
@@ -1224,6 +1224,7 @@ static GUID const * const tiff_decode_formats[] = {
@ -61,7 +61,7 @@ index d1649fa955..f695d3e40a 100644
};
diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c
index f17e508b53..48e46d69db 100644
index aac21e37d0a..151b999a359 100644
--- a/dlls/windowscodecs/tiffformat.c
+++ b/dlls/windowscodecs/tiffformat.c
@@ -466,9 +466,17 @@ static HRESULT tiff_get_decode_info(TIFF *tiff, tiff_decode_info *decode_info)
@ -85,7 +85,7 @@ index f17e508b53..48e46d69db 100644
break;
case 3: /* RGB Palette */
diff --git a/include/wincodec.idl b/include/wincodec.idl
index 406fe6b411..dfcb9bce2e 100644
index 962a6fd6883..f3b99b864ff 100644
--- a/include/wincodec.idl
+++ b/include/wincodec.idl
@@ -213,6 +213,8 @@ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat48bppRGB, 0x6fddc324,0x4e03,0x4bfe,0xb
@ -94,7 +94,7 @@ index 406fe6b411..dfcb9bce2e 100644
+cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppRGBAFloat, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x19);")
+
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppCMYK, 0x6fddc324,0x4e03,0x4fbe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1c);")
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppCMYK, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1c);")
typedef struct WICRect {
--

View File

@ -1,25 +0,0 @@
From 7d9df59da745fe72a232617a340b795d23fa4dc8 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 9 Dec 2016 12:47:24 +0800
Subject: include: Fix the GUID_WICPixelFormat32bppCMYK definition.
---
include/wincodec.idl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/wincodec.idl b/include/wincodec.idl
index e8c7023..04765b4 100644
--- a/include/wincodec.idl
+++ b/include/wincodec.idl
@@ -221,7 +221,7 @@ cpp_quote("DEFINE_GUID(GUID_WICPixelFormat64bppPRGBA, 0x6fddc324,0x4e03,0x4bfe,0
cpp_quote("DEFINE_GUID(GUID_WICPixelFormat128bppRGBAFloat, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x19);")
-cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppCMYK, 0x6fddc324,0x4e03,0x4fbe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1c);")
+cpp_quote("DEFINE_GUID(GUID_WICPixelFormat32bppCMYK, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1c);")
typedef struct WICRect {
INT X;
--
2.9.0

View File

@ -1,21 +1,21 @@
From 7a785a0a194993f156a173dd8bdbdcbd22390dd6 Mon Sep 17 00:00:00 2001
From cac0b10bce56962963b7f27293ded18d1aeb579e Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 8 Feb 2017 00:12:31 +0100
Subject: wined3d: Introduce a separate priority queue.
---
dlls/wined3d/cs.c | 133 ++++++++++++++++++++++++-----------------
dlls/wined3d/cs.c | 135 ++++++++++++++++++++++++-----------------
dlls/wined3d/device.c | 6 +-
dlls/wined3d/swapchain.c | 4 +-
dlls/wined3d/texture.c | 2 +-
dlls/wined3d/wined3d_private.h | 7 ++-
5 files changed, 88 insertions(+), 64 deletions(-)
5 files changed, 89 insertions(+), 65 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index fd6968634b9..c54f49ae13a 100644
index 896cafb87f4..43d1fdcb47f 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -418,6 +418,17 @@ static void wined3d_cs_exec_nop(struct wined3d_cs *cs, const void *data)
@@ -426,6 +426,17 @@ static void wined3d_cs_exec_nop(struct wined3d_cs *cs, const void *data)
{
}
@ -33,7 +33,7 @@ index fd6968634b9..c54f49ae13a 100644
static void wined3d_cs_exec_present(struct wined3d_cs *cs, const void *data)
{
const struct wined3d_cs_present *op = data;
@@ -445,7 +456,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw
@@ -453,7 +464,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw
unsigned int i;
LONG pending;
@ -42,7 +42,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_PRESENT;
op->dst_window_override = dst_window_override;
op->swapchain = swapchain;
@@ -506,7 +517,7 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *
@@ -514,7 +525,7 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *
struct wined3d_cs_clear *op;
unsigned int i;
@ -51,7 +51,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_CLEAR;
op->flags = flags;
op->rt_count = rt_count;
@@ -542,7 +553,7 @@ void wined3d_cs_emit_clear_rendertarget_view(struct wined3d_cs *cs, struct wined
@@ -550,7 +561,7 @@ void wined3d_cs_emit_clear_rendertarget_view(struct wined3d_cs *cs, struct wined
struct wined3d_fb_state fb;
} *extra;
@ -60,7 +60,7 @@ index fd6968634b9..c54f49ae13a 100644
extra = (void *)&op->rects[1];
extra->fb.render_targets = &extra->rt;
op->fb = &extra->fb;
@@ -698,7 +709,7 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
@@ -706,7 +717,7 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
const struct wined3d_state *state = &cs->device->state;
struct wined3d_cs_dispatch *op;
@ -69,7 +69,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_DISPATCH;
op->group_count_x = group_count_x;
op->group_count_y = group_count_y;
@@ -770,7 +781,7 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, int base
@@ -778,7 +789,7 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, int base
struct wined3d_cs_draw *op;
unsigned int i;
@ -78,7 +78,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_DRAW;
op->primitive_type = primitive_type;
op->base_vertex_idx = base_vertex_idx;
@@ -824,7 +835,7 @@ void wined3d_cs_emit_flush(struct wined3d_cs *cs)
@@ -832,7 +843,7 @@ void wined3d_cs_emit_flush(struct wined3d_cs *cs)
{
struct wined3d_cs_flush *op;
@ -87,7 +87,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_FLUSH;
cs->ops->submit(cs);
@@ -842,7 +853,7 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query
@@ -850,7 +861,7 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query
{
struct wined3d_cs_set_predication *op;
@ -96,7 +96,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_PREDICATION;
op->predicate = predicate;
op->value = value;
@@ -862,7 +873,7 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi
@@ -870,7 +881,7 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi
{
struct wined3d_cs_set_viewport *op;
@ -105,7 +105,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_VIEWPORT;
op->viewport = *viewport;
@@ -881,7 +892,7 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect)
@@ -889,7 +900,7 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect)
{
struct wined3d_cs_set_scissor_rect *op;
@ -114,7 +114,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_SCISSOR_RECT;
op->rect = *rect;
@@ -901,7 +912,7 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v
@@ -909,7 +920,7 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v
{
struct wined3d_cs_set_rendertarget_view *op;
@ -123,7 +123,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_RENDERTARGET_VIEW;
op->view_idx = view_idx;
op->view = view;
@@ -950,7 +961,7 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3
@@ -958,7 +969,7 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3
{
struct wined3d_cs_set_depth_stencil_view *op;
@ -132,7 +132,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_DEPTH_STENCIL_VIEW;
op->view = view;
@@ -969,7 +980,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3
@@ -977,7 +988,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3
{
struct wined3d_cs_set_vertex_declaration *op;
@ -141,7 +141,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_VERTEX_DECLARATION;
op->declaration = declaration;
@@ -1001,7 +1012,7 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx,
@@ -1009,7 +1020,7 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx,
{
struct wined3d_cs_set_stream_source *op;
@ -150,7 +150,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_STREAM_SOURCE;
op->stream_idx = stream_idx;
op->buffer = buffer;
@@ -1027,7 +1038,7 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i
@@ -1035,7 +1046,7 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i
{
struct wined3d_cs_set_stream_source_freq *op;
@ -159,7 +159,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_STREAM_SOURCE_FREQ;
op->stream_idx = stream_idx;
op->frequency = frequency;
@@ -1060,7 +1071,7 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx,
@@ -1068,7 +1079,7 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx,
{
struct wined3d_cs_set_stream_output *op;
@ -168,7 +168,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_STREAM_OUTPUT;
op->stream_idx = stream_idx;
op->buffer = buffer;
@@ -1092,7 +1103,7 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff
@@ -1100,7 +1111,7 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff
{
struct wined3d_cs_set_index_buffer *op;
@ -177,7 +177,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_INDEX_BUFFER;
op->buffer = buffer;
op->format_id = format_id;
@@ -1122,7 +1133,7 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha
@@ -1130,7 +1141,7 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha
{
struct wined3d_cs_set_constant_buffer *op;
@ -186,7 +186,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_CONSTANT_BUFFER;
op->type = type;
op->cb_idx = cb_idx;
@@ -1214,7 +1225,7 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined
@@ -1222,7 +1233,7 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined
{
struct wined3d_cs_set_texture *op;
@ -195,7 +195,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_TEXTURE;
op->stage = stage;
op->texture = texture;
@@ -1246,7 +1257,7 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3
@@ -1254,7 +1265,7 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3
{
struct wined3d_cs_set_shader_resource_view *op;
@ -204,7 +204,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_SHADER_RESOURCE_VIEW;
op->type = type;
op->view_idx = view_idx;
@@ -1276,7 +1287,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
@@ -1284,7 +1295,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
{
struct wined3d_cs_set_unordered_access_view *op;
@ -213,7 +213,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_UNORDERED_ACCESS_VIEW;
op->pipeline = pipeline;
op->view_idx = view_idx;
@@ -1301,7 +1312,7 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type
@@ -1309,7 +1320,7 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type
{
struct wined3d_cs_set_sampler *op;
@ -222,7 +222,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_SAMPLER;
op->type = type;
op->sampler_idx = sampler_idx;
@@ -1326,7 +1337,7 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type
@@ -1334,7 +1345,7 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type
{
struct wined3d_cs_set_shader *op;
@ -231,7 +231,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_SHADER;
op->type = type;
op->shader = shader;
@@ -1347,7 +1358,7 @@ void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs,
@@ -1355,7 +1366,7 @@ void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs,
{
struct wined3d_cs_set_rasterizer_state *op;
@ -240,7 +240,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_RASTERIZER_STATE;
op->state = rasterizer_state;
@@ -1366,7 +1377,7 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render
@@ -1374,7 +1385,7 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render
{
struct wined3d_cs_set_render_state *op;
@ -249,7 +249,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_RENDER_STATE;
op->state = state;
op->value = value;
@@ -1387,7 +1398,7 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage,
@@ -1395,7 +1406,7 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage,
{
struct wined3d_cs_set_texture_state *op;
@ -258,7 +258,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_TEXTURE_STATE;
op->stage = stage;
op->state = state;
@@ -1409,7 +1420,7 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx,
@@ -1417,7 +1428,7 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx,
{
struct wined3d_cs_set_sampler_state *op;
@ -267,7 +267,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_SAMPLER_STATE;
op->sampler_idx = sampler_idx;
op->state = state;
@@ -1432,7 +1443,7 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform
@@ -1440,7 +1451,7 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform
{
struct wined3d_cs_set_transform *op;
@ -276,7 +276,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_TRANSFORM;
op->state = state;
op->matrix = *matrix;
@@ -1452,7 +1463,7 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const
@@ -1460,7 +1471,7 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const
{
struct wined3d_cs_set_clip_plane *op;
@ -285,7 +285,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_CLIP_PLANE;
op->plane_idx = plane_idx;
op->plane = *plane;
@@ -1528,7 +1539,7 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture
@@ -1536,7 +1547,7 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture
{
struct wined3d_cs_set_color_key *op;
@ -294,7 +294,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_COLOR_KEY;
op->texture = texture;
op->flags = flags;
@@ -1555,7 +1566,7 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma
@@ -1563,7 +1574,7 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma
{
struct wined3d_cs_set_material *op;
@ -303,7 +303,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_MATERIAL;
op->material = *material;
@@ -1603,7 +1614,7 @@ void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light
@@ -1611,7 +1622,7 @@ void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light
{
struct wined3d_cs_set_light *op;
@ -312,7 +312,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_LIGHT;
op->light = *light;
@@ -1636,7 +1647,7 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, unsigned int idx, B
@@ -1644,7 +1655,7 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, unsigned int idx, B
{
struct wined3d_cs_set_light_enable *op;
@ -321,7 +321,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_SET_LIGHT_ENABLE;
op->idx = idx;
op->enable = enable;
@@ -1701,7 +1712,7 @@ static void wined3d_cs_mt_push_constants(struct wined3d_cs *cs, enum wined3d_pus
@@ -1709,7 +1720,7 @@ static void wined3d_cs_mt_push_constants(struct wined3d_cs *cs, enum wined3d_pus
size_t size;
size = count * wined3d_cs_push_constant_info[p].size;
@ -330,7 +330,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_PUSH_CONSTANTS;
op->type = p;
op->start_idx = start_idx;
@@ -1725,7 +1736,7 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs)
@@ -1733,7 +1744,7 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs)
{
struct wined3d_cs_reset_state *op;
@ -339,7 +339,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_RESET_STATE;
cs->ops->submit(cs);
@@ -1742,7 +1753,7 @@ static void wined3d_cs_emit_callback(struct wined3d_cs *cs, void (*callback)(voi
@@ -1750,7 +1761,7 @@ static void wined3d_cs_emit_callback(struct wined3d_cs *cs, void (*callback)(voi
{
struct wined3d_cs_callback *op;
@ -348,7 +348,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_CALLBACK;
op->callback = callback;
op->object = object;
@@ -1803,7 +1814,7 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
@@ -1811,7 +1822,7 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
{
struct wined3d_cs_query_issue *op;
@ -357,7 +357,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_QUERY_ISSUE;
op->query = query;
op->flags = flags;
@@ -1824,7 +1835,7 @@ void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_reso
@@ -1832,7 +1843,7 @@ void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_reso
{
struct wined3d_cs_preload_resource *op;
@ -366,7 +366,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_PRELOAD_RESOURCE;
op->resource = resource;
@@ -1846,7 +1857,7 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou
@@ -1854,7 +1865,7 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou
{
struct wined3d_cs_unload_resource *op;
@ -375,7 +375,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_UNLOAD_RESOURCE;
op->resource = resource;
@@ -1874,7 +1885,7 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
@@ -1882,7 +1893,7 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
* increasing the map count would be visible to applications. */
wined3d_not_from_cs(cs);
@ -384,7 +384,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_MAP;
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
@@ -1904,7 +1915,7 @@ HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resourc
@@ -1912,7 +1923,7 @@ HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resourc
wined3d_not_from_cs(cs);
@ -393,7 +393,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_UNMAP;
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
@@ -2044,7 +2055,7 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
@@ -2052,7 +2063,7 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
{
struct wined3d_cs_blt_sub_resource *op;
@ -402,7 +402,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_BLT_SUB_RESOURCE;
op->dst_resource = dst_resource;
op->dst_sub_resource_idx = dst_sub_resource_idx;
@@ -2124,7 +2135,7 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
@@ -2132,7 +2143,7 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
{
struct wined3d_cs_update_sub_resource *op;
@ -411,7 +411,7 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
@@ -2167,7 +2178,7 @@ void wined3d_cs_emit_add_dirty_texture_region(struct wined3d_cs *cs,
@@ -2175,7 +2186,7 @@ void wined3d_cs_emit_add_dirty_texture_region(struct wined3d_cs *cs,
{
struct wined3d_cs_add_dirty_texture_region *op;
@ -420,7 +420,16 @@ index fd6968634b9..c54f49ae13a 100644
op->opcode = WINED3D_CS_OP_ADD_DIRTY_TEXTURE_REGION;
op->texture = texture;
op->layer = layer;
@@ -2181,11 +2192,10 @@ static void wined3d_cs_emit_stop(struct wined3d_cs *cs)
@@ -2203,7 +2214,7 @@ void wined3d_cs_emit_clear_unordered_access_view_uint(struct wined3d_cs *cs,
{
struct wined3d_cs_clear_unordered_access_view *op;
- op = cs->ops->require_space(cs, sizeof(*op));
+ op = cs->ops->require_space(cs, sizeof(*op), 0);
op->opcode = WINED3D_CS_OP_CLEAR_UNORDERED_ACCESS_VIEW;
op->view = view;
op->clear_value = *clear_value;
@@ -2217,11 +2228,10 @@ static void wined3d_cs_emit_stop(struct wined3d_cs *cs)
{
struct wined3d_cs_stop *op;
@ -433,8 +442,8 @@ index fd6968634b9..c54f49ae13a 100644
}
static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
@@ -2235,7 +2245,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_ADD_DIRTY_TEXTURE_REGION */ wined3d_cs_exec_add_dirty_texture_region,
@@ -2272,7 +2282,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_CLEAR_UNORDERED_ACCESS_VIEW */ wined3d_cs_exec_clear_unordered_access_view,
};
-static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size)
@ -442,7 +451,7 @@ index fd6968634b9..c54f49ae13a 100644
{
if (size > (cs->data_size - cs->end))
{
@@ -2301,7 +2311,7 @@ static BOOL wined3d_cs_queue_is_empty(const struct wined3d_cs_queue *queue)
@@ -2338,7 +2348,7 @@ static BOOL wined3d_cs_queue_is_empty(const struct wined3d_cs_queue *queue)
static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
{
@ -451,7 +460,7 @@ index fd6968634b9..c54f49ae13a 100644
struct wined3d_cs_packet *packet;
size_t packet_size;
@@ -2316,15 +2326,15 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
@@ -2353,15 +2363,15 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
SetEvent(cs->event);
}
@ -470,7 +479,7 @@ index fd6968634b9..c54f49ae13a 100644
header_size = FIELD_OFFSET(struct wined3d_cs_packet, data[0]);
size = (size + header_size - 1) & ~(header_size - 1);
@@ -2345,7 +2355,7 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -2382,7 +2392,7 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
TRACE("Inserting a nop for %lu + %lu bytes.\n",
(unsigned long)header_size, (unsigned long)nop_size);
@ -479,7 +488,7 @@ index fd6968634b9..c54f49ae13a 100644
if (nop_size)
nop->opcode = WINED3D_CS_OP_NOP;
@@ -2376,6 +2386,7 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -2413,6 +2423,7 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
head, tail, (unsigned long)packet_size);
}
@ -487,7 +496,7 @@ index fd6968634b9..c54f49ae13a 100644
packet = (struct wined3d_cs_packet *)&queue->data[queue->head];
packet->size = size;
return packet->data;
@@ -2383,11 +2394,15 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -2420,11 +2431,15 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
static void wined3d_cs_mt_finish(struct wined3d_cs *cs)
{
@ -504,7 +513,7 @@ index fd6968634b9..c54f49ae13a 100644
}
static const struct wined3d_cs_ops wined3d_cs_mt_ops =
@@ -2413,6 +2428,13 @@ static void poll_queries(struct wined3d_cs *cs)
@@ -2450,6 +2465,13 @@ static void poll_queries(struct wined3d_cs *cs)
}
}
@ -518,7 +527,7 @@ index fd6968634b9..c54f49ae13a 100644
static void wined3d_cs_wait_event(struct wined3d_cs *cs)
{
InterlockedExchange(&cs->waiting_for_event, TRUE);
@@ -2424,7 +2446,7 @@ static void wined3d_cs_wait_event(struct wined3d_cs *cs)
@@ -2461,7 +2483,7 @@ static void wined3d_cs_wait_event(struct wined3d_cs *cs)
* Likewise, we can race with the main thread when resetting
* "waiting_for_event", in which case we would need to call
* WaitForSingleObject() because the main thread called SetEvent(). */
@ -527,7 +536,7 @@ index fd6968634b9..c54f49ae13a 100644
&& InterlockedCompareExchange(&cs->waiting_for_event, FALSE, TRUE))
return;
@@ -2443,7 +2465,6 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
@@ -2480,7 +2502,6 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
TRACE("Started.\n");
@ -535,7 +544,7 @@ index fd6968634b9..c54f49ae13a 100644
list_init(&cs->query_poll_list);
cs->thread_id = GetCurrentThreadId();
for (;;)
@@ -2454,7 +2475,7 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
@@ -2491,7 +2512,7 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
poll = 0;
}
@ -544,7 +553,7 @@ index fd6968634b9..c54f49ae13a 100644
{
if (++spin_count >= WINED3D_CS_SPIN_COUNT && list_empty(&cs->query_poll_list))
wined3d_cs_wait_event(cs);
@@ -2483,7 +2504,6 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
@@ -2520,7 +2541,6 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
InterlockedExchange(&queue->tail, tail);
}
@ -552,7 +561,7 @@ index fd6968634b9..c54f49ae13a 100644
TRACE("Stopped.\n");
FreeLibraryAndExitThread(cs->wined3d_module, 0);
}
@@ -2557,6 +2577,7 @@ void wined3d_cs_destroy(struct wined3d_cs *cs)
@@ -2594,6 +2614,7 @@ void wined3d_cs_destroy(struct wined3d_cs *cs)
if (cs->thread)
{
wined3d_cs_emit_stop(cs);
@ -561,7 +570,7 @@ index fd6968634b9..c54f49ae13a 100644
if (!CloseHandle(cs->event))
ERR("Closing event failed.\n");
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 896f5d2f9d2..e5b0470821a 100644
index fa3fbc7120b..07d5970e4b3 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1207,7 +1207,7 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
@ -582,7 +591,7 @@ index 896f5d2f9d2..e5b0470821a 100644
if (dst_texture->sub_resources[dst_sub_resource_idx].map_count ||
src_texture->sub_resources[src_sub_resource_idx].map_count)
{
@@ -4722,7 +4722,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
@@ -4730,7 +4730,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
TRACE("device %p, swapchain_desc %p, mode %p, callback %p, reset_state %#x.\n",
device, swapchain_desc, mode, callback, reset_state);
@ -627,7 +636,7 @@ index 01a29e605ac..3bd438f64d6 100644
|| (src_texture && src_texture->sub_resources[src_sub_resource_idx].map_count))
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d6d2b89b9e6..754dc67d753 100644
index 451a924c99e..b647f4e23b4 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3267,7 +3267,7 @@ struct wined3d_cs_queue
@ -650,7 +659,7 @@ index d6d2b89b9e6..754dc67d753 100644
size_t data_size, start, end;
void *data;
struct list query_poll_list;
@@ -3365,6 +3367,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
@@ -3367,6 +3369,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;

View File

@ -1,4 +1,4 @@
From 01509cc439709029511b1781878bb6bd8c67a8ab Mon Sep 17 00:00:00 2001
From 9316955f860efa52c6b58edb4998c120bd43c377 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 12 Feb 2017 00:08:28 +0100
Subject: wined3d: Use priority queue for update_sub_resource.
@ -9,10 +9,10 @@ Subject: wined3d: Use priority queue for update_sub_resource.
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 1fbf48ec94b..7ee2fe18f49 100644
index f146cbe4633..8dea530b413 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -2123,7 +2123,7 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
@@ -2143,7 +2143,7 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
{
struct wined3d_cs_update_sub_resource *op;
@ -22,10 +22,10 @@ index 1fbf48ec94b..7ee2fe18f49 100644
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 734f818692c..60d24c38319 100644
index 07d5970e4b3..56d52952a10 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4111,6 +4111,8 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
@@ -4286,6 +4286,8 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
TRACE("device %p, resource %p, sub_resource_idx %u, box %s, data %p, row_pitch %u, depth_pitch %u.\n",
device, resource, sub_resource_idx, debug_box(box), data, row_pitch, depth_pitch);
@ -35,5 +35,5 @@ index 734f818692c..60d24c38319 100644
{
if (sub_resource_idx > 0)
--
2.11.0
2.12.2

View File

@ -1,4 +1,4 @@
From e17eeff3044b2a6417c3232b3e8a5fe4e28b059e Mon Sep 17 00:00:00 2001
From 6c606d8f44420417fc8cbb248f57556a26125d0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 20 Feb 2017 00:27:25 +0100
Subject: wined3d: Improve wined3d_cs_emit_update_sub_resource.
@ -10,10 +10,10 @@ Subject: wined3d: Improve wined3d_cs_emit_update_sub_resource.
3 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index c8bd8adc82e..7a380905179 100644
index 8dea530b413..fc67672fff2 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -400,6 +400,7 @@ struct wined3d_cs_update_sub_resource
@@ -401,6 +401,7 @@ struct wined3d_cs_update_sub_resource
unsigned int sub_resource_idx;
struct wined3d_box box;
struct wined3d_sub_resource_data data;
@ -21,7 +21,7 @@ index c8bd8adc82e..7a380905179 100644
};
struct wined3d_cs_add_dirty_texture_region
@@ -2123,6 +2124,49 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
@@ -2142,6 +2143,49 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
unsigned int slice_pitch)
{
struct wined3d_cs_update_sub_resource *op;
@ -71,8 +71,8 @@ index c8bd8adc82e..7a380905179 100644
op = cs->ops->require_space(cs, sizeof(*op), 1);
op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
@@ -2234,6 +2278,11 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_ADD_DIRTY_TEXTURE_REGION */ wined3d_cs_exec_add_dirty_texture_region,
@@ -2282,6 +2326,11 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_CLEAR_UNORDERED_ACCESS_VIEW */ wined3d_cs_exec_clear_unordered_access_view,
};
+static BOOL wined3d_cs_st_check_space(struct wined3d_cs *cs, size_t size, int priority)
@ -83,7 +83,7 @@ index c8bd8adc82e..7a380905179 100644
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size, int priority)
{
if (size > (cs->data_size - cs->end))
@@ -2287,6 +2336,7 @@ static void wined3d_cs_st_finish(struct wined3d_cs *cs)
@@ -2335,6 +2384,7 @@ static void wined3d_cs_st_finish(struct wined3d_cs *cs)
static const struct wined3d_cs_ops wined3d_cs_st_ops =
{
@ -91,7 +91,7 @@ index c8bd8adc82e..7a380905179 100644
wined3d_cs_st_require_space,
wined3d_cs_st_submit,
wined3d_cs_st_finish,
@@ -2315,6 +2365,23 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
@@ -2363,6 +2413,23 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
SetEvent(cs->event);
}
@ -115,7 +115,7 @@ index c8bd8adc82e..7a380905179 100644
static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, int priority)
{
struct wined3d_cs_queue *queue = priority ? &cs->prio_queue : &cs->norm_queue;
@@ -2394,6 +2461,7 @@ static void wined3d_cs_mt_finish(struct wined3d_cs *cs)
@@ -2444,6 +2511,7 @@ static void wined3d_cs_mt_finish(struct wined3d_cs *cs)
static const struct wined3d_cs_ops wined3d_cs_mt_ops =
{
@ -124,10 +124,10 @@ index c8bd8adc82e..7a380905179 100644
wined3d_cs_mt_submit,
wined3d_cs_mt_finish,
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 26872ec5ec5..44e9a18fd22 100644
index 1e17106cddc..adf6ded131f 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4256,8 +4256,6 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
@@ -4287,8 +4287,6 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
TRACE("device %p, resource %p, sub_resource_idx %u, box %s, data %p, row_pitch %u, depth_pitch %u.\n",
device, resource, sub_resource_idx, debug_box(box), data, row_pitch, depth_pitch);
@ -137,10 +137,10 @@ index 26872ec5ec5..44e9a18fd22 100644
{
if (sub_resource_idx > 0)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index eca14c4a819..bde0e9f47b9 100644
index b647f4e23b4..093f33eee77 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3265,6 +3265,7 @@ struct wined3d_cs_queue
@@ -3267,6 +3267,7 @@ struct wined3d_cs_queue
struct wined3d_cs_ops
{

View File

@ -37,7 +37,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -400,6 +400,9 @@ struct wined3d_cs_update_sub_resource
@@ -401,6 +401,9 @@ struct wined3d_cs_update_sub_resource
unsigned int sub_resource_idx;
struct wined3d_box box;
struct wined3d_sub_resource_data data;
@ -47,7 +47,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
};
struct wined3d_cs_add_dirty_texture_region
@@ -418,6 +421,19 @@ static void wined3d_cs_exec_nop(struct wined3d_cs *cs, const void *data)
@@ -426,6 +429,19 @@ static void wined3d_cs_exec_nop(struct wined3d_cs *cs, const void *data)
{
}
@ -67,7 +67,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
static void wined3d_cs_exec_present(struct wined3d_cs *cs, const void *data)
{
const struct wined3d_cs_present *op = data;
@@ -445,7 +461,11 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw
@@ -453,7 +469,11 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw
unsigned int i;
LONG pending;
@ -79,7 +79,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_PRESENT;
op->dst_window_override = dst_window_override;
op->swapchain = swapchain;
@@ -506,7 +526,11 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *
@@ -514,7 +534,11 @@ void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *
struct wined3d_cs_clear *op;
unsigned int i;
@ -91,7 +91,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_CLEAR;
op->flags = flags;
op->rt_count = rt_count;
@@ -542,7 +566,11 @@ void wined3d_cs_emit_clear_rendertarget_view(struct wined3d_cs *cs, struct wined
@@ -550,7 +574,11 @@ void wined3d_cs_emit_clear_rendertarget_view(struct wined3d_cs *cs, struct wined
struct wined3d_fb_state fb;
} *extra;
@ -103,7 +103,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
extra = (void *)&op->rects[1];
extra->fb.render_targets = &extra->rt;
op->fb = &extra->fb;
@@ -698,7 +726,11 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
@@ -706,7 +734,11 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
const struct wined3d_state *state = &cs->device->state;
struct wined3d_cs_dispatch *op;
@ -115,7 +115,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_DISPATCH;
op->group_count_x = group_count_x;
op->group_count_y = group_count_y;
@@ -770,7 +802,11 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, int base
@@ -778,7 +810,11 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, GLenum primitive_type, int base
struct wined3d_cs_draw *op;
unsigned int i;
@ -127,7 +127,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_DRAW;
op->primitive_type = primitive_type;
op->base_vertex_idx = base_vertex_idx;
@@ -824,7 +860,11 @@ void wined3d_cs_emit_flush(struct wined3d_cs *cs)
@@ -832,7 +868,11 @@ void wined3d_cs_emit_flush(struct wined3d_cs *cs)
{
struct wined3d_cs_flush *op;
@ -139,7 +139,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_FLUSH;
cs->ops->submit(cs);
@@ -842,7 +882,11 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query
@@ -850,7 +890,11 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query
{
struct wined3d_cs_set_predication *op;
@ -151,7 +151,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_PREDICATION;
op->predicate = predicate;
op->value = value;
@@ -862,7 +906,11 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi
@@ -870,7 +914,11 @@ void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_vi
{
struct wined3d_cs_set_viewport *op;
@ -163,7 +163,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_VIEWPORT;
op->viewport = *viewport;
@@ -881,7 +929,11 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect)
@@ -889,7 +937,11 @@ void wined3d_cs_emit_set_scissor_rect(struct wined3d_cs *cs, const RECT *rect)
{
struct wined3d_cs_set_scissor_rect *op;
@ -175,7 +175,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_SCISSOR_RECT;
op->rect = *rect;
@@ -901,7 +953,11 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v
@@ -909,7 +961,11 @@ void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int v
{
struct wined3d_cs_set_rendertarget_view *op;
@ -187,7 +187,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_RENDERTARGET_VIEW;
op->view_idx = view_idx;
op->view = view;
@@ -950,7 +1006,11 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3
@@ -958,7 +1014,11 @@ void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3
{
struct wined3d_cs_set_depth_stencil_view *op;
@ -199,7 +199,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_DEPTH_STENCIL_VIEW;
op->view = view;
@@ -969,7 +1029,11 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3
@@ -977,7 +1037,11 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3
{
struct wined3d_cs_set_vertex_declaration *op;
@ -211,7 +211,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_VERTEX_DECLARATION;
op->declaration = declaration;
@@ -1001,7 +1065,11 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx,
@@ -1009,7 +1073,11 @@ void wined3d_cs_emit_set_stream_source(struct wined3d_cs *cs, UINT stream_idx,
{
struct wined3d_cs_set_stream_source *op;
@ -223,7 +223,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_STREAM_SOURCE;
op->stream_idx = stream_idx;
op->buffer = buffer;
@@ -1027,7 +1095,11 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i
@@ -1035,7 +1103,11 @@ void wined3d_cs_emit_set_stream_source_freq(struct wined3d_cs *cs, UINT stream_i
{
struct wined3d_cs_set_stream_source_freq *op;
@ -235,7 +235,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_STREAM_SOURCE_FREQ;
op->stream_idx = stream_idx;
op->frequency = frequency;
@@ -1060,7 +1132,11 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx,
@@ -1068,7 +1140,11 @@ void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx,
{
struct wined3d_cs_set_stream_output *op;
@ -247,7 +247,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_STREAM_OUTPUT;
op->stream_idx = stream_idx;
op->buffer = buffer;
@@ -1092,7 +1168,11 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff
@@ -1100,7 +1176,11 @@ void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buff
{
struct wined3d_cs_set_index_buffer *op;
@ -259,7 +259,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_INDEX_BUFFER;
op->buffer = buffer;
op->format_id = format_id;
@@ -1122,7 +1202,11 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha
@@ -1130,7 +1210,11 @@ void wined3d_cs_emit_set_constant_buffer(struct wined3d_cs *cs, enum wined3d_sha
{
struct wined3d_cs_set_constant_buffer *op;
@ -271,7 +271,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_CONSTANT_BUFFER;
op->type = type;
op->cb_idx = cb_idx;
@@ -1214,7 +1298,11 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined
@@ -1222,7 +1306,11 @@ void wined3d_cs_emit_set_texture(struct wined3d_cs *cs, UINT stage, struct wined
{
struct wined3d_cs_set_texture *op;
@ -283,7 +283,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_TEXTURE;
op->stage = stage;
op->texture = texture;
@@ -1246,7 +1334,11 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3
@@ -1254,7 +1342,11 @@ void wined3d_cs_emit_set_shader_resource_view(struct wined3d_cs *cs, enum wined3
{
struct wined3d_cs_set_shader_resource_view *op;
@ -295,7 +295,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_SHADER_RESOURCE_VIEW;
op->type = type;
op->view_idx = view_idx;
@@ -1276,7 +1368,11 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
@@ -1284,7 +1376,11 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
{
struct wined3d_cs_set_unordered_access_view *op;
@ -307,7 +307,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_UNORDERED_ACCESS_VIEW;
op->pipeline = pipeline;
op->view_idx = view_idx;
@@ -1301,7 +1397,11 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type
@@ -1309,7 +1405,11 @@ void wined3d_cs_emit_set_sampler(struct wined3d_cs *cs, enum wined3d_shader_type
{
struct wined3d_cs_set_sampler *op;
@ -319,7 +319,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_SAMPLER;
op->type = type;
op->sampler_idx = sampler_idx;
@@ -1326,7 +1426,11 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type
@@ -1334,7 +1434,11 @@ void wined3d_cs_emit_set_shader(struct wined3d_cs *cs, enum wined3d_shader_type
{
struct wined3d_cs_set_shader *op;
@ -331,7 +331,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_SHADER;
op->type = type;
op->shader = shader;
@@ -1347,7 +1451,11 @@ void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs,
@@ -1355,7 +1459,11 @@ void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs,
{
struct wined3d_cs_set_rasterizer_state *op;
@ -343,7 +343,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_RASTERIZER_STATE;
op->state = rasterizer_state;
@@ -1366,7 +1474,11 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render
@@ -1374,7 +1482,11 @@ void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render
{
struct wined3d_cs_set_render_state *op;
@ -355,7 +355,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_RENDER_STATE;
op->state = state;
op->value = value;
@@ -1387,7 +1499,11 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage,
@@ -1395,7 +1507,11 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage,
{
struct wined3d_cs_set_texture_state *op;
@ -367,7 +367,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_TEXTURE_STATE;
op->stage = stage;
op->state = state;
@@ -1409,7 +1525,11 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx,
@@ -1417,7 +1533,11 @@ void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx,
{
struct wined3d_cs_set_sampler_state *op;
@ -379,7 +379,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_SAMPLER_STATE;
op->sampler_idx = sampler_idx;
op->state = state;
@@ -1432,7 +1552,11 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform
@@ -1440,7 +1560,11 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform
{
struct wined3d_cs_set_transform *op;
@ -391,7 +391,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_TRANSFORM;
op->state = state;
op->matrix = *matrix;
@@ -1452,7 +1576,11 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const
@@ -1460,7 +1584,11 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const
{
struct wined3d_cs_set_clip_plane *op;
@ -403,7 +403,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_CLIP_PLANE;
op->plane_idx = plane_idx;
op->plane = *plane;
@@ -1528,7 +1656,11 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture
@@ -1536,7 +1664,11 @@ void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture
{
struct wined3d_cs_set_color_key *op;
@ -415,7 +415,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_COLOR_KEY;
op->texture = texture;
op->flags = flags;
@@ -1555,7 +1687,11 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma
@@ -1563,7 +1695,11 @@ void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_ma
{
struct wined3d_cs_set_material *op;
@ -427,7 +427,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_MATERIAL;
op->material = *material;
@@ -1603,7 +1739,11 @@ void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light
@@ -1611,7 +1747,11 @@ void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light
{
struct wined3d_cs_set_light *op;
@ -439,7 +439,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_LIGHT;
op->light = *light;
@@ -1636,7 +1776,11 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, unsigned int idx, B
@@ -1644,7 +1784,11 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, unsigned int idx, B
{
struct wined3d_cs_set_light_enable *op;
@ -451,7 +451,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_SET_LIGHT_ENABLE;
op->idx = idx;
op->enable = enable;
@@ -1701,7 +1845,11 @@ static void wined3d_cs_mt_push_constants(struct wined3d_cs *cs, enum wined3d_pus
@@ -1709,7 +1853,11 @@ static void wined3d_cs_mt_push_constants(struct wined3d_cs *cs, enum wined3d_pus
size_t size;
size = count * wined3d_cs_push_constant_info[p].size;
@ -463,7 +463,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_PUSH_CONSTANTS;
op->type = p;
op->start_idx = start_idx;
@@ -1725,7 +1873,11 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs)
@@ -1733,7 +1881,11 @@ void wined3d_cs_emit_reset_state(struct wined3d_cs *cs)
{
struct wined3d_cs_reset_state *op;
@ -475,7 +475,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_RESET_STATE;
cs->ops->submit(cs);
@@ -1742,7 +1894,11 @@ static void wined3d_cs_emit_callback(struct wined3d_cs *cs, void (*callback)(voi
@@ -1750,7 +1902,11 @@ static void wined3d_cs_emit_callback(struct wined3d_cs *cs, void (*callback)(voi
{
struct wined3d_cs_callback *op;
@ -487,7 +487,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_CALLBACK;
op->callback = callback;
op->object = object;
@@ -1803,7 +1959,11 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
@@ -1811,7 +1967,11 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
{
struct wined3d_cs_query_issue *op;
@ -499,7 +499,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_QUERY_ISSUE;
op->query = query;
op->flags = flags;
@@ -1824,7 +1984,11 @@ void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_reso
@@ -1832,7 +1992,11 @@ void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_reso
{
struct wined3d_cs_preload_resource *op;
@ -511,7 +511,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_PRELOAD_RESOURCE;
op->resource = resource;
@@ -1846,7 +2010,11 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou
@@ -1854,7 +2018,11 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou
{
struct wined3d_cs_unload_resource *op;
@ -523,7 +523,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_UNLOAD_RESOURCE;
op->resource = resource;
@@ -1874,7 +2042,11 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
@@ -1882,7 +2050,11 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
* increasing the map count would be visible to applications. */
wined3d_not_from_cs(cs);
@ -535,7 +535,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_MAP;
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
@@ -1904,7 +2076,11 @@ HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resourc
@@ -1912,7 +2084,11 @@ HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resourc
wined3d_not_from_cs(cs);
@ -547,7 +547,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_UNMAP;
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
@@ -2044,7 +2220,11 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
@@ -2052,7 +2228,11 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
{
struct wined3d_cs_blt_sub_resource *op;
@ -559,7 +559,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_BLT_SUB_RESOURCE;
op->dst_resource = dst_resource;
op->dst_sub_resource_idx = dst_sub_resource_idx;
@@ -2123,8 +2303,56 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
@@ -2131,8 +2311,56 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
unsigned int slice_pitch)
{
struct wined3d_cs_update_sub_resource *op;
@ -616,7 +616,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
@@ -2167,7 +2395,11 @@ void wined3d_cs_emit_add_dirty_texture_region(struct wined3d_cs *cs,
@@ -2175,7 +2403,11 @@ void wined3d_cs_emit_add_dirty_texture_region(struct wined3d_cs *cs,
{
struct wined3d_cs_add_dirty_texture_region *op;
@ -628,7 +628,19 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->opcode = WINED3D_CS_OP_ADD_DIRTY_TEXTURE_REGION;
op->texture = texture;
op->layer = layer;
@@ -2181,11 +2413,17 @@ static void wined3d_cs_emit_stop(struct wined3d_cs *cs)
@@ -2203,7 +2435,11 @@ void wined3d_cs_emit_clear_unordered_access_view_uint(struct wined3d_cs *cs,
{
struct wined3d_cs_clear_unordered_access_view *op;
+#if !defined(STAGING_CSMT)
op = cs->ops->require_space(cs, sizeof(*op));
+#else /* STAGING_CSMT */
+ op = cs->ops->require_space(cs, sizeof(*op), 0);
+#endif /* STAGING_CSMT */
op->opcode = WINED3D_CS_OP_CLEAR_UNORDERED_ACCESS_VIEW;
op->view = view;
op->clear_value = *clear_value;
@@ -2217,11 +2453,17 @@ static void wined3d_cs_emit_stop(struct wined3d_cs *cs)
{
struct wined3d_cs_stop *op;
@ -646,8 +658,8 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
}
static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
@@ -2235,7 +2473,16 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_ADD_DIRTY_TEXTURE_REGION */ wined3d_cs_exec_add_dirty_texture_region,
@@ -2272,7 +2514,16 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_CLEAR_UNORDERED_ACCESS_VIEW */ wined3d_cs_exec_clear_unordered_access_view,
};
+#if !defined(STAGING_CSMT)
@ -663,7 +675,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
{
if (size > (cs->data_size - cs->end))
{
@@ -2288,6 +2535,9 @@ static void wined3d_cs_st_finish(struct wined3d_cs *cs)
@@ -2325,6 +2576,9 @@ static void wined3d_cs_st_finish(struct wined3d_cs *cs)
static const struct wined3d_cs_ops wined3d_cs_st_ops =
{
@ -673,7 +685,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
wined3d_cs_st_require_space,
wined3d_cs_st_submit,
wined3d_cs_st_finish,
@@ -2301,7 +2551,11 @@ static BOOL wined3d_cs_queue_is_empty(const struct wined3d_cs_queue *queue)
@@ -2338,7 +2592,11 @@ static BOOL wined3d_cs_queue_is_empty(const struct wined3d_cs_queue *queue)
static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
{
@ -685,7 +697,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
struct wined3d_cs_packet *packet;
size_t packet_size;
@@ -2316,15 +2570,42 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
@@ -2353,15 +2611,42 @@ static void wined3d_cs_mt_submit(struct wined3d_cs *cs)
SetEvent(cs->event);
}
@ -728,7 +740,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
header_size = FIELD_OFFSET(struct wined3d_cs_packet, data[0]);
size = (size + header_size - 1) & ~(header_size - 1);
@@ -2345,7 +2626,11 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -2382,7 +2667,11 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
TRACE("Inserting a nop for %lu + %lu bytes.\n",
(unsigned long)header_size, (unsigned long)nop_size);
@ -740,7 +752,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
if (nop_size)
nop->opcode = WINED3D_CS_OP_NOP;
@@ -2376,6 +2661,9 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -2413,6 +2702,9 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
head, tail, (unsigned long)packet_size);
}
@ -750,7 +762,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
packet = (struct wined3d_cs_packet *)&queue->data[queue->head];
packet->size = size;
return packet->data;
@@ -2383,15 +2671,29 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -2420,15 +2712,29 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
static void wined3d_cs_mt_finish(struct wined3d_cs *cs)
{
@ -780,7 +792,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
wined3d_cs_mt_require_space,
wined3d_cs_mt_submit,
wined3d_cs_mt_finish,
@@ -2413,6 +2715,15 @@ static void poll_queries(struct wined3d_cs *cs)
@@ -2450,6 +2756,15 @@ static void poll_queries(struct wined3d_cs *cs)
}
}
@ -796,7 +808,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
static void wined3d_cs_wait_event(struct wined3d_cs *cs)
{
InterlockedExchange(&cs->waiting_for_event, TRUE);
@@ -2424,7 +2735,11 @@ static void wined3d_cs_wait_event(struct wined3d_cs *cs)
@@ -2461,7 +2776,11 @@ static void wined3d_cs_wait_event(struct wined3d_cs *cs)
* Likewise, we can race with the main thread when resetting
* "waiting_for_event", in which case we would need to call
* WaitForSingleObject() because the main thread called SetEvent(). */
@ -808,7 +820,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
&& InterlockedCompareExchange(&cs->waiting_for_event, FALSE, TRUE))
return;
@@ -2443,7 +2758,9 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
@@ -2480,7 +2799,9 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
TRACE("Started.\n");
@ -818,7 +830,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
list_init(&cs->query_poll_list);
cs->thread_id = GetCurrentThreadId();
for (;;)
@@ -2454,7 +2771,11 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
@@ -2491,7 +2812,11 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
poll = 0;
}
@ -830,7 +842,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
{
if (++spin_count >= WINED3D_CS_SPIN_COUNT && list_empty(&cs->query_poll_list))
wined3d_cs_wait_event(cs);
@@ -2483,7 +2804,9 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
@@ -2520,7 +2845,9 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
InterlockedExchange(&queue->tail, tail);
}
@ -840,7 +852,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
TRACE("Stopped.\n");
FreeLibraryAndExitThread(cs->wined3d_module, 0);
}
@@ -2557,6 +2880,9 @@ void wined3d_cs_destroy(struct wined3d_cs *cs)
@@ -2594,6 +2921,9 @@ void wined3d_cs_destroy(struct wined3d_cs *cs)
if (cs->thread)
{
wined3d_cs_emit_stop(cs);
@ -903,7 +915,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
if (!src_box)
@@ -4721,7 +4742,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
@@ -4729,7 +4750,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
TRACE("device %p, swapchain_desc %p, mode %p, callback %p, reset_state %#x.\n",
device, swapchain_desc, mode, callback, reset_state);
@ -915,7 +927,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (!(swapchain = wined3d_device_get_swapchain(device, 0)))
{
@@ -5273,3 +5298,58 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
@@ -5281,3 +5306,58 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
else
return CallWindowProcA(proc, window, message, wparam, lparam);
}
@ -1288,7 +1300,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -716,6 +716,10 @@ static void wined3d_shader_resource_view_cs_init(void *object)
@@ -722,6 +722,10 @@ static void wined3d_shader_resource_view_cs_init(void *object)
debug_d3dformat(resource->format->id), debug_d3dformat(view_format->id));
}
}
@ -1299,7 +1311,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
}
static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view,
@@ -732,6 +736,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
@@ -738,6 +742,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
wined3d_resource_incref(view->resource = resource);
@ -1309,7 +1321,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
wined3d_cs_init_object(resource->device->cs, wined3d_shader_resource_view_cs_init, view);
return WINED3D_OK;
@@ -898,6 +905,10 @@ static void wined3d_unordered_access_view_cs_init(void *object)
@@ -945,6 +952,10 @@ static void wined3d_unordered_access_view_cs_init(void *object)
desc, texture, view->format);
}
}
@ -1320,7 +1332,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
}
static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view,
@@ -917,6 +928,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
@@ -964,6 +975,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
wined3d_resource_incref(view->resource = resource);
@ -1417,7 +1429,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
size_t data_size, start, end;
void *data;
struct list query_poll_list;
@@ -3353,6 +3384,9 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
@@ -3355,6 +3386,9 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;