Module: wine
Branch: master
Commit: 8492b1939501093af78bf22d0c486f2ca8a3a9f8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8492b1939501093af78bf22d0…
Author: Stefan Dösinger <stefan(a)codeweavers.com>
Date: Tue Nov 24 22:18:46 2015 +0100
dxgi/tests: Windows 10 properly makes buffers read only.
Signed-off-by: Stefan Dösinger <stefan(a)codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/dxgi/tests/device.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/dlls/dxgi/tests/device.c b/dlls/dxgi/tests/device.c
index 522d5de..4e54f4f 100644
--- a/dlls/dxgi/tests/device.c
+++ b/dlls/dxgi/tests/device.c
@@ -1051,7 +1051,7 @@ static void test_swapchain_parameters(void)
HRESULT hr;
unsigned int i, j;
ULONG refcount;
- DXGI_USAGE usage, expected_usage;
+ DXGI_USAGE usage, expected_usage, broken_usage;
HWND window;
static const struct
{
@@ -1191,13 +1191,14 @@ static void test_swapchain_parameters(void)
hr = IDXGISwapChain_GetBuffer(swapchain, j, &IID_IDXGIResource, (void **)&resource);
ok(SUCCEEDED(hr), "GetBuffer(%u) failed, hr %#x, test %u.\n", hr, i, j);
- expected_usage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER;
-
/* Buffers > 0 are supposed to be read only. This is the case except that in
- * fullscreen mode the last backbuffer (BufferCount - 1) is writeable. This
- * is not the case if an unsupported refresh rate is passed for some reason,
- * probably because the invalid refresh rate triggers a kinda-sorta windowed
- * mode.
+ * fullscreen mode on Windows <= 8 the last backbuffer (BufferCount - 1) is
+ * writeable. This is not the case if an unsupported refresh rate is passed
+ * for some reason, probably because the invalid refresh rate triggers a
+ * kinda-sorta windowed mode.
+ *
+ * On Windows 10 all buffers > 0 are read-only. Mark the earlier behavior
+ * broken.
*
* This last buffer acts as a shadow frontbuffer. Writing to it doesn't show
* the draw on the screen right away (Aero on or off doesn't matter), but
@@ -1206,12 +1207,15 @@ static void test_swapchain_parameters(void)
* Note that if the application doesn't have focused creating a fullscreen
* swapchain returns DXGI_STATUS_OCCLUDED and we get a windowed swapchain,
* so use the Windowed property of the swapchain that was actually created. */
+ expected_usage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER | DXGI_USAGE_READ_ONLY;
+ broken_usage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER;
+
if (desc.Windowed || j < tests[i].highest_accessible_buffer)
- expected_usage |= DXGI_USAGE_READ_ONLY;
+ broken_usage |= DXGI_USAGE_READ_ONLY;
hr = IDXGIResource_GetUsage(resource, &usage);
ok(SUCCEEDED(hr), "Failed to get resource usage, hr %#x, test %u, buffer %u.\n", hr, i, j);
- ok(usage == expected_usage, "Got usage %x, expected %x, test %u, buffer %u.\n",
+ ok(usage == expected_usage || broken(usage == broken_usage), "Got usage %x, expected %x, test %u, buffer %u.\n",
usage, expected_usage, i, j);
IDXGIResource_Release(resource);