[PATCH 3/5] d3d9/tests: Cleanup test_display_formats() a bit.
Henri Verbeet
hverbeet at codeweavers.com
Wed Jan 29 12:28:37 CST 2014
---
dlls/d3d9/tests/device.c | 115 ++++++++++++++++++++++------------------------
1 file changed, 55 insertions(+), 60 deletions(-)
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index eeb2b07..71b0a51 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -2271,59 +2271,57 @@ cleanup:
if(d3d9) IDirect3D9_Release(d3d9);
}
-struct format {
- D3DFORMAT format;
- D3DFORMAT alpha_format;
- const char* name;
- BOOL display;
- BOOL windowed;
-};
-
-static const struct format formats[] =
-{
-#define FORMAT(f, a, d, w) { f, a, #f, d, w }
- FORMAT(D3DFMT_R5G6B5, 0, TRUE, TRUE),
- FORMAT(D3DFMT_X1R5G5B5, D3DFMT_A1R5G5B5, TRUE, TRUE),
- FORMAT(D3DFMT_A1R5G5B5, D3DFMT_A1R5G5B5, FALSE, FALSE),
- FORMAT(D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, TRUE, TRUE),
- FORMAT(D3DFMT_A8R8G8B8, D3DFMT_A8R8G8B8, FALSE, FALSE),
- FORMAT(D3DFMT_A2R10G10B10, 0, TRUE, FALSE),
- FORMAT(D3DFMT_UNKNOWN, 0, FALSE, FALSE),
-#undef FORMAT
-};
-
+/* Direct3D9 offers 4 display formats: R5G6B5, X1R5G5B5, X8R8G8B8 and
+ * A2R10G10B10. Next to these there are 6 different back buffer formats. Only
+ * a fixed number of combinations are possible in fullscreen mode. In windowed
+ * mode more combinations are allowed due to format conversion and this is
+ * likely driver dependent. */
static void test_display_formats(void)
{
- /* Direct3D9 offers 4 display formats R5G6B5, X1R5G5B5, X8R8G8B8 and A2R10G10B10.
- * Next to these there are 6 different backbuffer formats. Only a fixed number of
- * combinations are possible in FULLSCREEN mode. In windowed mode more combinations are
- * allowed due to depth conversion and this is likely driver dependent. */
-
- UINT Adapter = D3DADAPTER_DEFAULT;
- D3DDEVTYPE DeviceType = D3DDEVTYPE_HAL;
- int display;
+ D3DDEVTYPE device_type = D3DDEVTYPE_HAL;
+ unsigned int backbuffer, display;
+ unsigned int windowed;
+ IDirect3D9 *d3d9;
+ BOOL should_pass;
+ BOOL has_modes;
+ HRESULT hr;
- IDirect3D9 *d3d9 = pDirect3DCreate9( D3D_SDK_VERSION );
- ok(d3d9 != NULL, "Failed to create IDirect3D9 object\n");
- if(!d3d9) return;
+ static const struct
+ {
+ const char *name;
+ D3DFORMAT format;
+ D3DFORMAT alpha_format;
+ BOOL display;
+ BOOL windowed;
+ }
+ formats[] =
+ {
+ {"D3DFMT_R5G6B5", D3DFMT_R5G6B5, 0, TRUE, TRUE},
+ {"D3DFMT_X1R5G5B5", D3DFMT_X1R5G5B5, D3DFMT_A1R5G5B5, TRUE, TRUE},
+ {"D3DFMT_A1R5G5B5", D3DFMT_A1R5G5B5, D3DFMT_A1R5G5B5, FALSE, FALSE},
+ {"D3DFMT_X8R8G8B8", D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, TRUE, TRUE},
+ {"D3DFMT_A8R8G8B8", D3DFMT_A8R8G8B8, D3DFMT_A8R8G8B8, FALSE, FALSE},
+ {"D3DFMT_A2R10G10B10", D3DFMT_A2R10G10B10, 0, TRUE, FALSE},
+ {"D3DFMT_UNKNOWN", D3DFMT_UNKNOWN, 0, FALSE, FALSE},
+ };
- for (display = 0; display < sizeof(formats) / sizeof(formats[0]); display++)
+ if (!(d3d9 = pDirect3DCreate9(D3D_SDK_VERSION)))
{
- int nmodes, windowed;
+ skip("Failed to create an IDirect3D9 object, skipping test.\n");
+ return;
+ }
- nmodes = IDirect3D9_GetAdapterModeCount(d3d9, D3DADAPTER_DEFAULT, formats[display].format);
+ for (display = 0; display < sizeof(formats) / sizeof(*formats); ++display)
+ {
+ has_modes = IDirect3D9_GetAdapterModeCount(d3d9, D3DADAPTER_DEFAULT, formats[display].format);
- for (windowed = 0; windowed <= 1; windowed++)
+ for (windowed = 0; windowed <= 1; ++windowed)
{
- int backbuffer;
- for (backbuffer = 0; backbuffer < sizeof(formats) / sizeof(formats[0]); backbuffer++)
+ for (backbuffer = 0; backbuffer < sizeof(formats) / sizeof(*formats); ++backbuffer)
{
- BOOL shouldPass;
- HRESULT hr;
+ should_pass = FALSE;
- if (!formats[display].display || (windowed && !formats[display].windowed) || (!windowed && !nmodes))
- shouldPass = FALSE;
- else
+ if (formats[display].display && (formats[display].windowed || !windowed) && (has_modes || windowed))
{
D3DFORMAT backbuffer_format;
@@ -2332,36 +2330,33 @@ static void test_display_formats(void)
else
backbuffer_format = formats[backbuffer].format;
- hr = IDirect3D9_CheckDeviceFormat(d3d9, Adapter, DeviceType, formats[display].format, D3DUSAGE_RENDERTARGET,
- D3DRTYPE_SURFACE, backbuffer_format);
+ hr = IDirect3D9_CheckDeviceFormat(d3d9, D3DADAPTER_DEFAULT, device_type, formats[display].format,
+ D3DUSAGE_RENDERTARGET, D3DRTYPE_SURFACE, backbuffer_format);
if (hr == D3D_OK)
{
if (windowed)
{
- hr = IDirect3D9_CheckDeviceFormatConversion(d3d9, Adapter, DeviceType, backbuffer_format, formats[display].format);
- shouldPass = (hr == D3D_OK);
+ hr = IDirect3D9_CheckDeviceFormatConversion(d3d9, D3DADAPTER_DEFAULT, device_type,
+ backbuffer_format, formats[display].format);
+ should_pass = (hr == D3D_OK);
}
else
- shouldPass = (formats[display].format == formats[backbuffer].format ||
- (formats[display].alpha_format && formats[display].alpha_format == formats[backbuffer].alpha_format));
+ should_pass = (formats[display].format == formats[backbuffer].format
+ || (formats[display].alpha_format
+ && formats[display].alpha_format == formats[backbuffer].alpha_format));
}
- else
- shouldPass = FALSE;
}
- hr = IDirect3D9_CheckDeviceType(d3d9, Adapter, DeviceType, formats[display].format, formats[backbuffer].format, windowed);
-
- if (shouldPass)
- ok(hr == D3D_OK, "CheckDeviceType(..., %s, %s, windowed=%d) failed with hr=%#08x\n", formats[display].name,
- formats[backbuffer].name, windowed, hr);
- else
- ok(hr != D3D_OK, "CheckDeviceType(..., %s, %s, windowed=%d) succeeded when it was expected to fail\n", formats[display].name,
- formats[backbuffer].name, windowed);
+ hr = IDirect3D9_CheckDeviceType(d3d9, D3DADAPTER_DEFAULT, device_type,
+ formats[display].format, formats[backbuffer].format, windowed);
+ ok(SUCCEEDED(hr) == should_pass,
+ "Got unexpected hr %#x for %s / %s, windowed %#x, should_pass %#x.\n",
+ hr, formats[display].name, formats[backbuffer].name, windowed, should_pass);
}
}
}
- if(d3d9) IDirect3D9_Release(d3d9);
+ IDirect3D9_Release(d3d9);
}
static void test_scissor_size(void)
--
1.7.10.4
More information about the wine-patches
mailing list