Rebase against 709935314458bd0ce27aab3986ae98cc556cb663.

This commit is contained in:
Sebastian Lackner 2017-04-14 15:28:19 +02:00
parent 14acf51a2d
commit 3003efacdb
6 changed files with 69 additions and 120 deletions

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "aa1580398e4c9eda851d475213e07d865d9238bd"
echo "709935314458bd0ce27aab3986ae98cc556cb663"
}
# Show version information
@ -416,7 +416,6 @@ patch_enable_all ()
enable_wined3d_1DTextures="$1"
enable_wined3d_Accounting="$1"
enable_wined3d_CSMT_Helper="$1"
enable_wined3d_CSMT_Main="$1"
enable_wined3d_DXTn="$1"
enable_wined3d_GTX_560M="$1"
enable_wined3d_Limit_Vram="$1"
@ -1478,9 +1477,6 @@ patch_enable ()
wined3d-CSMT_Helper)
enable_wined3d_CSMT_Helper="$2"
;;
wined3d-CSMT_Main)
enable_wined3d_CSMT_Main="$2"
;;
wined3d-DXTn)
enable_wined3d_DXTn="$2"
;;
@ -2030,13 +2026,6 @@ if test "$enable_winex11_WM_WINDOWPOSCHANGING" -eq 1; then
enable_winex11__NET_ACTIVE_WINDOW=1
fi
if test "$enable_wined3d_CSMT_Main" -eq 1; then
if test "$enable_wined3d_CSMT_Helper" -gt 1; then
abort "Patchset wined3d-CSMT_Helper disabled, but wined3d-CSMT_Main depends on that."
fi
enable_wined3d_CSMT_Helper=1
fi
if test "$enable_wined3d_CSMT_Helper" -eq 1; then
if test "$enable_d3d11_Deferred_Context" -gt 1; then
abort "Patchset d3d11-Deferred_Context disabled, but wined3d-CSMT_Helper depends on that."
@ -8734,53 +8723,6 @@ if test "$enable_wined3d_check_format_support" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-CSMT_Main
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * d3d11-Deferred_Context, d3d9-Tests, makedep-PARENTSPEC, ntdll-Attach_Process_DLLs, ntdll-DllOverrides_WOW64, ntdll-
# | Loader_Machine_Type, ntdll-DllRedirects, wined3d-1DTextures, wined3d-Accounting, wined3d-DXTn, wined3d-QUERY_Stubs,
# | wined3d-Revert_Buffer_Upload, wined3d-Revert_Pixel_Center_Offset, wined3d-Silence_FIXMEs, wined3d-CSMT_Helper
# |
# | This patchset fixes the following Wine bugs:
# | * [#11674] Support for CSMT (command stream) to increase graphic performance
# |
# | Modified files:
# | * dlls/wined3d/buffer.c, dlls/wined3d/context.c, dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/query.c,
# | dlls/wined3d/resource.c, dlls/wined3d/surface.c, dlls/wined3d/swapchain.c, dlls/wined3d/texture.c, dlls/wined3d/view.c,
# | dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h
# |
if test "$enable_wined3d_CSMT_Main" -eq 1; then
patch_apply wined3d-CSMT_Main/9999-IfDefined.patch
(
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Add additional synchronization CS ops.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Send push_constants through the CS.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Prevent the command stream from running ahead too far.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send blits through the command stream.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Get rid of the end_scene flush and finish.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Send query_poll through the command stream.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Wrap GL BOs in a structure.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Add a separate variable to check if queries are started.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Wait for the cs to finish before destroying the device.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Add swapchain waits.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Hackily introduce a multithreaded command stream.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Run the cs asynchronously.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Introduce a separate priority queue.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for maps/unmaps.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for query polls.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish before swapping.", 1 },';
printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Use an event to block the worker thread when it is idle.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Do not immediately submit stateblock updates.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for update_sub_resource.", 1 },';
printf '%s\n' '+ { "Michael Müller", "wined3d: Use spin lock for cs list critical sections.", 1 },';
printf '%s\n' '+ { "Michael Müller", "wined3d: Don'\''t wait for events that have not been issued yet.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Reset context before destruction.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Synchronize before resizing swapchain context array.", 1 },';
printf '%s\n' '+ { "Michael Müller", "wined3d: Improve wined3d_cs_emit_update_sub_resource.", 1 },';
printf '%s\n' '+ { "Michael Müller", "wined3d: Discard buffer during upload when replacing complete content.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Enforce a memory limit of about 16 MB for CSMT blocks.", 1 },';
) >> "$patchlist"
fi
# Patchset winedbg-Process_Arguments
# |
# | Modified files:

View File

@ -5,6 +5,7 @@ Fixes: [11674] Support for CSMT (command stream) to increase graphic performance
Apply-After: dlls/wined3d/*
Depends: wined3d-CSMT_Helper
IfDefined: STAGING_CSMT
Disabled: true
# Known issues:
# https://bugs.wine-staging.com/buglist.cgi?component=Bugs&keywords=csmt%2C%20&keywords_type=allwords&list_id=3690&query_format=advanced&resolution=---

View File

@ -1,4 +1,4 @@
From b14633555358bcce6ab3dbef2573f19f72a5b2e8 Mon Sep 17 00:00:00 2001
From 6fb6fb2e293e57e2645d988e82c12782db1c30b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 20 Sep 2014 02:48:07 +0200
Subject: wined3d: Add support for DXTn software decoding through libtxc_dxtn.
@ -22,10 +22,10 @@ Changes in rev 3:
create mode 100644 dlls/wined3d/dxtn.c
diff --git a/configure.ac b/configure.ac
index 76fb87d..7a80fff 100644
index 1a5b0de0e3..adf7cd0f4d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1622,6 +1622,9 @@ fi
@@ -1633,6 +1633,9 @@ fi
WINE_NOTICE_WITH(tiff,[test "x$ac_cv_lib_soname_tiff" = "x"],
[libtiff ${notice_platform}development files not found, TIFF won't be supported.])
@ -36,7 +36,7 @@ index 76fb87d..7a80fff 100644
if test "x$with_mpg123" != "xno"
then
diff --git a/dlls/wined3d/Makefile.in b/dlls/wined3d/Makefile.in
index 655800b..ee0615f 100644
index edee58845a..70f47c6a5f 100644
--- a/dlls/wined3d/Makefile.in
+++ b/dlls/wined3d/Makefile.in
@@ -11,6 +11,7 @@ C_SRCS = \
@ -49,7 +49,7 @@ index 655800b..ee0615f 100644
nvidia_texture_shader.c \
diff --git a/dlls/wined3d/dxtn.c b/dlls/wined3d/dxtn.c
new file mode 100644
index 0000000..ce98949
index 0000000000..ce989490ef
--- /dev/null
+++ b/dlls/wined3d/dxtn.c
@@ -0,0 +1,299 @@
@ -353,10 +353,10 @@ index 0000000..ce98949
+ wine_dlclose(txc_dxtn_handle, NULL, 0);
+}
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index abbab26..3668c25 100644
index 2ba80605a5..3a91e98e98 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1697,6 +1697,66 @@ static void convert_yuy2_r5g6b5(const BYTE *src, BYTE *dst,
@@ -1215,6 +1215,66 @@ static void convert_yuy2_r5g6b5(const BYTE *src, BYTE *dst,
}
}
@ -423,7 +423,7 @@ index abbab26..3668c25 100644
struct d3dfmt_converter_desc
{
enum wined3d_format_id from, to;
@@ -1713,6 +1773,20 @@ static const struct d3dfmt_converter_desc converters[] =
@@ -1231,6 +1291,20 @@ static const struct d3dfmt_converter_desc converters[] =
{WINED3DFMT_YUY2, WINED3DFMT_B5G6R5_UNORM, convert_yuy2_r5g6b5},
};
@ -444,7 +444,7 @@ index abbab26..3668c25 100644
static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_format_id from,
enum wined3d_format_id to)
{
@@ -1724,6 +1798,12 @@ static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_fo
@@ -1242,6 +1316,12 @@ static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_fo
return &converters[i];
}
@ -458,10 +458,10 @@ index abbab26..3668c25 100644
}
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
index d584664..cb55ef8 100644
index f662c3a48d..dca6a2a64d 100644
--- a/dlls/wined3d/wined3d_main.c
+++ b/dlls/wined3d/wined3d_main.c
@@ -333,6 +333,8 @@ static BOOL wined3d_dll_init(HINSTANCE hInstDLL)
@@ -336,6 +336,8 @@ static BOOL wined3d_dll_init(HINSTANCE hInstDLL)
if (appkey) RegCloseKey( appkey );
if (hkey) RegCloseKey( hkey );
@ -470,7 +470,7 @@ index d584664..cb55ef8 100644
return TRUE;
}
@@ -364,6 +366,9 @@ static BOOL wined3d_dll_destroy(HINSTANCE hInstDLL)
@@ -367,6 +369,9 @@ static BOOL wined3d_dll_destroy(HINSTANCE hInstDLL)
DeleteCriticalSection(&wined3d_wndproc_cs);
DeleteCriticalSection(&wined3d_cs);
@ -481,11 +481,11 @@ index d584664..cb55ef8 100644
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 9a7dff4..e14786c 100644
index 1ed0846939..e6f9ebc79a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3483,6 +3483,19 @@ static inline struct wined3d_surface *context_get_rt_surface(const struct wined3
return texture->sub_resources[context->current_rt.sub_resource_idx].u.surface;
@@ -4062,6 +4062,19 @@ static inline void wined3d_not_from_cs(struct wined3d_cs *cs)
assert(cs->thread_id != GetCurrentThreadId());
}
+BOOL wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
@ -505,5 +505,5 @@ index 9a7dff4..e14786c 100644
#define WINED3D_OPENGL_WINDOW_CLASS_NAME "WineD3D_OpenGL"
--
2.7.1
2.11.0

View File

@ -1,4 +1,4 @@
From 0e6a390ce17ae3d5d7fd05fb904b430ef3f6afaa Mon Sep 17 00:00:00 2001
From 3887fb8fe306cce71cd026c060346083659bf20b Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Tue, 4 Nov 2014 22:41:45 +0100
Subject: wined3d: Improve DXTn support and export conversion functions for
@ -153,10 +153,10 @@ index ce989490ef..77f7d550a5 100644
#undef LOAD_FUNCPTR
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index a9b24419f9..26c75b6d88 100644
index 3a91e98e98..a694de41d2 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1269,6 +1269,30 @@ static void convert_dxt1_x8r8g8b8(const BYTE *src, BYTE *dst,
@@ -1227,6 +1227,30 @@ static void convert_dxt1_x8r8g8b8(const BYTE *src, BYTE *dst,
wined3d_dxt1_decode(src, dst, pitch_in, pitch_out, WINED3DFMT_B8G8R8X8_UNORM, w, h);
}
@ -187,7 +187,7 @@ index a9b24419f9..26c75b6d88 100644
static void convert_a8r8g8b8_dxt1(const BYTE *src, BYTE *dst,
DWORD pitch_in, DWORD pitch_out, unsigned int w, unsigned int h)
{
@@ -1335,8 +1359,15 @@ static const struct d3dfmt_converter_desc converters[] =
@@ -1293,8 +1317,15 @@ static const struct d3dfmt_converter_desc converters[] =
static const struct d3dfmt_converter_desc dxtn_converters[] =
{
@ -220,11 +220,11 @@ index 12246122f0..ed943dcf69 100644
+@ cdecl wined3d_dxt5_decode(ptr ptr long long long long long)
+@ cdecl wined3d_dxt5_encode(ptr ptr long long long long long)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0ee4c9dc38..b88d89105e 100644
index e6f9ebc79a..a5eeb31f3e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -4007,17 +4007,7 @@ static inline struct wined3d_surface *context_get_rt_surface(const struct wined3
return texture->sub_resources[context->current_rt.sub_resource_idx].u.surface;
@@ -4062,17 +4062,7 @@ static inline void wined3d_not_from_cs(struct wined3d_cs *cs)
assert(cs->thread_id != GetCurrentThreadId());
}
-BOOL wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
@ -242,10 +242,10 @@ index 0ee4c9dc38..b88d89105e 100644
/* The WNDCLASS-Name for the fake window which we use to retrieve the GL capabilities */
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 25c75f251a..bb85326a90 100644
index 2831357c6e..bbd5be95bf 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2679,4 +2679,18 @@ static inline void wined3d_box_set(struct wined3d_box *box, unsigned int left, u
@@ -2680,4 +2680,18 @@ static inline void wined3d_box_set(struct wined3d_box *box, unsigned int left, u
box->back = back;
}

View File

@ -1,4 +1,4 @@
From 5237dd1b75bc109101d8476cdd0c8ce30cc628d4 Mon Sep 17 00:00:00 2001
From 94cd7b33b2e9a1a60cda6f5e6b474b29065f1d83 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 16 Apr 2016 18:18:54 +0200
Subject: wined3d: Add stubs for QUERY_TYPE_SO_STATISTICS and
@ -7,15 +7,15 @@ Subject: wined3d: Add stubs for QUERY_TYPE_SO_STATISTICS and
---
dlls/d3d10core/tests/device.c | 4 +-
dlls/d3d11/tests/d3d11.c | 4 +-
dlls/wined3d/query.c | 90 +++++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/query.c | 94 +++++++++++++++++++++++++++++++++++++++++++
include/wine/wined3d.h | 6 +++
4 files changed, 100 insertions(+), 4 deletions(-)
4 files changed, 104 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d10core/tests/device.c b/dlls/d3d10core/tests/device.c
index 0b38265c83f..3c47f9cbcdb 100644
index 566529016b..8276f98873 100644
--- a/dlls/d3d10core/tests/device.c
+++ b/dlls/d3d10core/tests/device.c
@@ -3591,8 +3591,8 @@ static void test_create_query(void)
@@ -3660,8 +3660,8 @@ static void test_create_query(void)
{D3D10_QUERY_TIMESTAMP_DISJOINT, FALSE, FALSE},
{D3D10_QUERY_PIPELINE_STATISTICS, FALSE, TRUE},
{D3D10_QUERY_OCCLUSION_PREDICATE, TRUE, FALSE},
@ -27,10 +27,10 @@ index 0b38265c83f..3c47f9cbcdb 100644
ULONG refcount, expected_refcount;
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index ac4393dd3b3..ac96918aed3 100644
index bba52b5d7b..e532ee28c8 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -4566,8 +4566,8 @@ static void test_create_query(void)
@@ -4647,8 +4647,8 @@ static void test_create_query(void)
{D3D11_QUERY_TIMESTAMP_DISJOINT, D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, FALSE},
{D3D11_QUERY_PIPELINE_STATISTICS, D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, TRUE},
{D3D11_QUERY_OCCLUSION_PREDICATE, D3D_FEATURE_LEVEL_10_0, TRUE, TRUE, FALSE},
@ -42,10 +42,10 @@ index ac4393dd3b3..ac96918aed3 100644
{D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0, D3D_FEATURE_LEVEL_11_0, TRUE, FALSE, TRUE},
{D3D11_QUERY_SO_STATISTICS_STREAM1, D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, TRUE},
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index 9f75a493d5f..c5ca37d4878 100644
index 79e61763a0..95d735c05e 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -296,6 +296,14 @@ static void wined3d_query_destroy_object(void *object)
@@ -293,6 +293,14 @@ static void wined3d_query_destroy_object(void *object)
{
HeapFree(GetProcessHeap(), 0, query);
}
@ -60,8 +60,8 @@ index 9f75a493d5f..c5ca37d4878 100644
else
{
ERR("Query %p has invalid type %#x.\n", query, query->type);
@@ -614,6 +622,30 @@ static void wined3d_timestamp_disjoint_query_ops_issue(struct wined3d_query *que
TRACE("query %p, flags %#x.\n", query, flags);
@@ -633,6 +641,34 @@ static BOOL wined3d_timestamp_disjoint_query_ops_issue(struct wined3d_query *que
return FALSE;
}
+static BOOL wined3d_statistics_query_ops_poll(struct wined3d_query *query, DWORD flags)
@ -71,27 +71,31 @@ index 9f75a493d5f..c5ca37d4878 100644
+ return TRUE;
+}
+
+static void wined3d_statistics_query_ops_issue(struct wined3d_query *query, DWORD flags)
+static BOOL wined3d_statistics_query_ops_issue(struct wined3d_query *query, DWORD flags)
+{
+ FIXME("query %p, flags %#x.\n", query, flags);
+
+ return FALSE;
+}
+
+static HRESULT wined3d_overflow_query_ops_poll(struct wined3d_query *query, DWORD flags)
+static BOOL wined3d_overflow_query_ops_poll(struct wined3d_query *query, DWORD flags)
+{
+ TRACE("query %p, flags %#x.\n", query, flags);
+
+ return TRUE;
+}
+
+static void wined3d_overflow_query_ops_issue(struct wined3d_query *query, DWORD flags)
+static BOOL wined3d_overflow_query_ops_issue(struct wined3d_query *query, DWORD flags)
+{
+ FIXME("query %p, flags %#x.\n", query, flags);
+
+ return FALSE;
+}
+
static const struct wined3d_query_ops event_query_ops =
{
wined3d_event_query_ops_poll,
@@ -754,6 +786,58 @@ static HRESULT wined3d_timestamp_disjoint_query_create(struct wined3d_device *de
@@ -773,6 +809,58 @@ static HRESULT wined3d_timestamp_disjoint_query_create(struct wined3d_device *de
return WINED3D_OK;
}
@ -150,7 +154,7 @@ index 9f75a493d5f..c5ca37d4878 100644
HRESULT CDECL wined3d_query_create(struct wined3d_device *device,
enum wined3d_query_type type, void *parent, struct wined3d_query **query)
{
@@ -774,6 +858,12 @@ HRESULT CDECL wined3d_query_create(struct wined3d_device *device,
@@ -793,6 +881,12 @@ HRESULT CDECL wined3d_query_create(struct wined3d_device *device,
case WINED3D_QUERY_TYPE_TIMESTAMP_FREQ:
return wined3d_timestamp_disjoint_query_create(device, type, parent, query);
@ -164,10 +168,10 @@ index 9f75a493d5f..c5ca37d4878 100644
FIXME("Unhandled query type %#x.\n", type);
return WINED3DERR_NOTAVAILABLE;
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 7271ec055ae..0357bfda6d8 100644
index 1bf5a6c97b..30925d2ca3 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -705,6 +705,12 @@ struct wined3d_query_data_timestamp_disjoint
@@ -709,6 +709,12 @@ struct wined3d_query_data_timestamp_disjoint
BOOL disjoint;
};

View File

@ -1,4 +1,4 @@
From d02a092f2e480b6ca82273de0a50534c5cb7d42f Mon Sep 17 00:00:00 2001
From 834cd708e0bc3ea23ea2a8b0c3563f9add49fcdd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 22 Jan 2017 01:51:51 +0100
Subject: d3d11: Add dummy support for D3D11_QUERY_PIPELINE_STATISTICS query.
@ -6,15 +6,15 @@ Subject: d3d11: Add dummy support for D3D11_QUERY_PIPELINE_STATISTICS query.
---
dlls/d3d10core/tests/device.c | 2 +-
dlls/d3d11/tests/d3d11.c | 2 +-
dlls/wined3d/query.c | 45 +++++++++++++++++++++++++++++++++++++++++++
include/wine/wined3d.h | 15 +++++++++++++++
4 files changed, 62 insertions(+), 2 deletions(-)
dlls/wined3d/query.c | 47 +++++++++++++++++++++++++++++++++++++++++++
include/wine/wined3d.h | 15 ++++++++++++++
4 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d10core/tests/device.c b/dlls/d3d10core/tests/device.c
index 6c87a979ba6..be915a8ff86 100644
index 8276f98873..12d690fb6d 100644
--- a/dlls/d3d10core/tests/device.c
+++ b/dlls/d3d10core/tests/device.c
@@ -3604,7 +3604,7 @@ static void test_create_query(void)
@@ -3658,7 +3658,7 @@ static void test_create_query(void)
{D3D10_QUERY_OCCLUSION, FALSE, FALSE},
{D3D10_QUERY_TIMESTAMP, FALSE, FALSE},
{D3D10_QUERY_TIMESTAMP_DISJOINT, FALSE, FALSE},
@ -24,10 +24,10 @@ index 6c87a979ba6..be915a8ff86 100644
{D3D10_QUERY_SO_STATISTICS, FALSE, FALSE},
{D3D10_QUERY_SO_OVERFLOW_PREDICATE, TRUE, FALSE},
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 9d8d827b306..fbbede8dd79 100644
index e532ee28c8..97b1f2ce1b 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -4564,7 +4564,7 @@ static void test_create_query(void)
@@ -4645,7 +4645,7 @@ static void test_create_query(void)
{D3D11_QUERY_OCCLUSION, D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, FALSE},
{D3D11_QUERY_TIMESTAMP, D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, FALSE},
{D3D11_QUERY_TIMESTAMP_DISJOINT, D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, FALSE},
@ -37,10 +37,10 @@ index 9d8d827b306..fbbede8dd79 100644
{D3D11_QUERY_SO_STATISTICS, D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, FALSE},
{D3D11_QUERY_SO_OVERFLOW_PREDICATE, D3D_FEATURE_LEVEL_10_0, TRUE, TRUE, FALSE},
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index c5ca37d4878..23a07a9e09c 100644
index 95d735c05e..f1e0d680b9 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -304,6 +304,10 @@ static void wined3d_query_destroy_object(void *object)
@@ -301,6 +301,10 @@ static void wined3d_query_destroy_object(void *object)
{
HeapFree(GetProcessHeap(), 0, query);
}
@ -51,26 +51,28 @@ index c5ca37d4878..23a07a9e09c 100644
else
{
ERR("Query %p has invalid type %#x.\n", query, query->type);
@@ -646,6 +650,18 @@ static void wined3d_overflow_query_ops_issue(struct wined3d_query *query, DWORD
FIXME("query %p, flags %#x.\n", query, flags);
@@ -669,6 +673,20 @@ static BOOL wined3d_overflow_query_ops_issue(struct wined3d_query *query, DWORD
return FALSE;
}
+static HRESULT wined3d_pipeline_query_ops_poll(struct wined3d_query *query, DWORD flags)
+static BOOL wined3d_pipeline_query_ops_poll(struct wined3d_query *query, DWORD flags)
+{
+ TRACE("query %p, flags %#x.\n", query, flags);
+
+ return TRUE;
+}
+
+static void wined3d_pipeline_query_ops_issue(struct wined3d_query *query, DWORD flags)
+static BOOL wined3d_pipeline_query_ops_issue(struct wined3d_query *query, DWORD flags)
+{
+ FIXME("query %p, flags %#x.\n", query, flags);
+
+ return FALSE;
+}
+
static const struct wined3d_query_ops event_query_ops =
{
wined3d_event_query_ops_poll,
@@ -838,6 +854,32 @@ static HRESULT wined3d_overflow_query_create(struct wined3d_device *device,
@@ -861,6 +879,32 @@ static HRESULT wined3d_overflow_query_create(struct wined3d_device *device,
return WINED3D_OK;
}
@ -103,7 +105,7 @@ index c5ca37d4878..23a07a9e09c 100644
HRESULT CDECL wined3d_query_create(struct wined3d_device *device,
enum wined3d_query_type type, void *parent, struct wined3d_query **query)
{
@@ -864,6 +906,9 @@ HRESULT CDECL wined3d_query_create(struct wined3d_device *device,
@@ -887,6 +931,9 @@ HRESULT CDECL wined3d_query_create(struct wined3d_device *device,
case WINED3D_QUERY_TYPE_SO_OVERFLOW:
return wined3d_overflow_query_create(device, type, parent, query);
@ -114,10 +116,10 @@ index c5ca37d4878..23a07a9e09c 100644
FIXME("Unhandled query type %#x.\n", type);
return WINED3DERR_NOTAVAILABLE;
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 0357bfda6d8..2625cf5a879 100644
index 30925d2ca3..52db093676 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -711,6 +711,21 @@ struct wined3d_query_data_so_statistics
@@ -715,6 +715,21 @@ struct wined3d_query_data_so_statistics
UINT64 needed;
};