Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/d3d8/tests/device.c | 113 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index adfeca8eaf..99f9ae1575 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -9208,6 +9208,118 @@ static void test_resource_access(void) DestroyWindow(window); }
+static void test_multiply_transform(void) +{ + IDirect3DDevice8 *device; + D3DMATRIX ret_mat; + DWORD stateblock; + IDirect3D8 *d3d; + unsigned int i; + ULONG refcount; + HWND window; + HRESULT hr; + + static const D3DTRANSFORMSTATETYPE tests[] = + { + D3DTS_VIEW, + D3DTS_PROJECTION, + D3DTS_TEXTURE0, + D3DTS_TEXTURE1, + D3DTS_TEXTURE2, + D3DTS_TEXTURE3, + D3DTS_TEXTURE4, + D3DTS_TEXTURE5, + D3DTS_TEXTURE6, + D3DTS_TEXTURE7, + D3DTS_WORLDMATRIX(0), + D3DTS_WORLDMATRIX(1), + D3DTS_WORLDMATRIX(2), + D3DTS_WORLDMATRIX(3), + D3DTS_WORLDMATRIX(255), + }; + + static const D3DMATRIX mat1 = + {{{ + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + }}}, + mat2 = + {{{ + 2.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 2.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 2.0f, + }}}; + + window = create_window(); + ok(!!window, "Failed to create a window.\n"); + d3d = Direct3DCreate8(D3D_SDK_VERSION); + ok(!!d3d, "Failed to create D3D object.\n"); + + if (!(device = create_device(d3d, window, NULL))) + { + skip("Failed to create 3D device.\n"); + IDirect3D8_Release(d3d); + DestroyWindow(window); + return; + } + + for (i = 0; i < ARRAY_SIZE(tests); ++i) + { + hr = IDirect3DDevice8_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat1, sizeof(mat1)), "Test %u: Got unexpected transform matrix.\n", i); + + hr = IDirect3DDevice8_MultiplyTransform(device, tests[i], &mat2); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i); + + /* MultiplyTransform() goes directly into the primary stateblock. */ + + hr = IDirect3DDevice8_SetTransform(device, tests[i], &mat1); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_BeginStateBlock(device); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_MultiplyTransform(device, tests[i], &mat2); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_EndStateBlock(device, &stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); +todo_wine + ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i); + + hr = IDirect3DDevice8_CaptureStateBlock(device, stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_SetTransform(device, tests[i], &mat1); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_ApplyStateBlock(device, stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice8_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat1, sizeof(mat1)), "Test %u: Got unexpected transform matrix.\n", i); + + IDirect3DDevice8_DeleteStateBlock(device, stateblock); + } + + refcount = IDirect3DDevice8_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); + IDirect3D8_Release(d3d); + DestroyWindow(window); +} + START_TEST(device) { HMODULE d3d8_handle = GetModuleHandleA("d3d8.dll"); @@ -9321,6 +9433,7 @@ START_TEST(device) test_device_caps(); test_get_info(); test_resource_access(); + test_multiply_transform();
UnregisterClassA("d3d8_test_wc", GetModuleHandleA(NULL)); }
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/d3d9/tests/device.c | 113 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+)
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index bc8d7088d3..37cf8d9a66 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -13042,6 +13042,118 @@ static void test_resource_access(void) DestroyWindow(window); }
+static void test_multiply_transform(void) +{ + IDirect3DStateBlock9 *stateblock; + IDirect3DDevice9 *device; + D3DMATRIX ret_mat; + IDirect3D9 *d3d; + unsigned int i; + ULONG refcount; + HWND window; + HRESULT hr; + + static const D3DTRANSFORMSTATETYPE tests[] = + { + D3DTS_VIEW, + D3DTS_PROJECTION, + D3DTS_TEXTURE0, + D3DTS_TEXTURE1, + D3DTS_TEXTURE2, + D3DTS_TEXTURE3, + D3DTS_TEXTURE4, + D3DTS_TEXTURE5, + D3DTS_TEXTURE6, + D3DTS_TEXTURE7, + D3DTS_WORLDMATRIX(0), + D3DTS_WORLDMATRIX(1), + D3DTS_WORLDMATRIX(2), + D3DTS_WORLDMATRIX(3), + D3DTS_WORLDMATRIX(255), + }; + + static const D3DMATRIX mat1 = + {{{ + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + }}}, + mat2 = + {{{ + 2.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 2.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 2.0f, + }}}; + + window = create_window(); + ok(!!window, "Failed to create a window.\n"); + d3d = Direct3DCreate9(D3D_SDK_VERSION); + ok(!!d3d, "Failed to create D3D object.\n"); + + if (!(device = create_device(d3d, window, NULL))) + { + skip("Failed to create 3D device.\n"); + IDirect3D9_Release(d3d); + DestroyWindow(window); + return; + } + + for (i = 0; i < ARRAY_SIZE(tests); ++i) + { + hr = IDirect3DDevice9_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat1, sizeof(mat1)), "Test %u: Got unexpected transform matrix.\n", i); + + hr = IDirect3DDevice9_MultiplyTransform(device, tests[i], &mat2); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i); + + /* MultiplyTransform() goes directly into the primary stateblock. */ + + hr = IDirect3DDevice9_SetTransform(device, tests[i], &mat1); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_BeginStateBlock(device); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_MultiplyTransform(device, tests[i], &mat2); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_EndStateBlock(device, &stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); +todo_wine + ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i); + + hr = IDirect3DStateBlock9_Capture(stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_SetTransform(device, tests[i], &mat1); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DStateBlock9_Apply(stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice9_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat1, sizeof(mat1)), "Test %u: Got unexpected transform matrix.\n", i); + + IDirect3DStateBlock9_Release(stateblock); + } + + refcount = IDirect3DDevice9_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); + IDirect3D9_Release(d3d); + DestroyWindow(window); +} + START_TEST(device) { WNDCLASSA wc = {0}; @@ -13167,6 +13279,7 @@ START_TEST(device) test_stretch_rect(); test_device_caps(); test_resource_access(); + test_multiply_transform();
UnregisterClassA("d3d9_test_wc", GetModuleHandleA(NULL)); }
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=46447
Your paranoid android.
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/ddraw/tests/ddraw7.c | 105 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 1f57420250..3c81846752 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -15317,6 +15317,110 @@ static void test_gdi_surface(void) DestroyWindow(window); }
+static void test_multiply_transform(void) +{ + IDirect3DDevice7 *device; + D3DMATRIX ret_mat; + DWORD stateblock; + unsigned int i; + ULONG refcount; + HWND window; + HRESULT hr; + + static const D3DTRANSFORMSTATETYPE tests[] = + { + D3DTRANSFORMSTATE_WORLD, + D3DTRANSFORMSTATE_VIEW, + D3DTRANSFORMSTATE_PROJECTION, + D3DTRANSFORMSTATE_WORLD1, + D3DTRANSFORMSTATE_WORLD2, + D3DTRANSFORMSTATE_WORLD3, + D3DTRANSFORMSTATE_TEXTURE0, + D3DTRANSFORMSTATE_TEXTURE1, + D3DTRANSFORMSTATE_TEXTURE2, + D3DTRANSFORMSTATE_TEXTURE3, + D3DTRANSFORMSTATE_TEXTURE4, + D3DTRANSFORMSTATE_TEXTURE5, + D3DTRANSFORMSTATE_TEXTURE6, + D3DTRANSFORMSTATE_TEXTURE7, + }; + + D3DMATRIX mat1 = + { + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + }, + mat2 = + { + 2.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 2.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 2.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 2.0f, + }; + + window = create_window(); + if (!(device = create_device(window, DDSCL_NORMAL))) + { + skip("Failed to create 3D device.\n"); + DestroyWindow(window); + return; + } + + for (i = 0; i < ARRAY_SIZE(tests); ++i) + { + hr = IDirect3DDevice7_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat1, sizeof(mat1)), "Test %u: Got unexpected transform matrix.\n", i); + + hr = IDirect3DDevice7_MultiplyTransform(device, tests[i], &mat2); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i); + + /* MultiplyTransform() goes directly into the primary stateblock. */ + + hr = IDirect3DDevice7_SetTransform(device, tests[i], &mat1); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_BeginStateBlock(device); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_MultiplyTransform(device, tests[i], &mat2); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_EndStateBlock(device, &stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); +todo_wine + ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i); + + hr = IDirect3DDevice7_CaptureStateBlock(device, stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_SetTransform(device, tests[i], &mat1); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_ApplyStateBlock(device, stateblock); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + + hr = IDirect3DDevice7_GetTransform(device, tests[i], &ret_mat); + ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(!memcmp(&ret_mat, &mat1, sizeof(mat1)), "Test %u: Got unexpected transform matrix.\n", i); + + IDirect3DDevice7_DeleteStateBlock(device, stateblock); + } + + refcount = IDirect3DDevice7_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); + DestroyWindow(window); +} + START_TEST(ddraw7) { DDDEVICEIDENTIFIER2 identifier; @@ -15458,4 +15562,5 @@ START_TEST(ddraw7) test_killfocus(); test_sysmem_draw(); test_gdi_surface(); + test_multiply_transform(); }
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=46448
Your paranoid android.
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/d3d8/tests/device.c | 1 - dlls/d3d9/tests/device.c | 1 - dlls/ddraw/tests/ddraw7.c | 1 - dlls/wined3d/device.c | 17 ++++++----------- 4 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index 99f9ae1575..5f8c0eb794 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -9295,7 +9295,6 @@ static void test_multiply_transform(void)
hr = IDirect3DDevice8_GetTransform(device, tests[i], &ret_mat); ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); -todo_wine ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i);
hr = IDirect3DDevice8_CaptureStateBlock(device, stateblock); diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index 37cf8d9a66..896a7308ea 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -13129,7 +13129,6 @@ static void test_multiply_transform(void)
hr = IDirect3DDevice9_GetTransform(device, tests[i], &ret_mat); ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); -todo_wine ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i);
hr = IDirect3DStateBlock9_Capture(stateblock); diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 3c81846752..9374edb785 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -15397,7 +15397,6 @@ static void test_multiply_transform(void)
hr = IDirect3DDevice7_GetTransform(device, tests[i], &ret_mat); ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); -todo_wine ok(!memcmp(&ret_mat, &mat2, sizeof(mat2)), "Test %u: Got unexpected transform matrix.\n", i);
hr = IDirect3DDevice7_CaptureStateBlock(device, stateblock); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index d03a982e74..b5460c9e16 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1529,26 +1529,21 @@ void CDECL wined3d_device_get_transform(const struct wined3d_device *device, void CDECL wined3d_device_multiply_transform(struct wined3d_device *device, enum wined3d_transform_state state, const struct wined3d_matrix *matrix) { - const struct wined3d_matrix *mat; - struct wined3d_matrix temp; + struct wined3d_matrix *mat;
TRACE("device %p, state %s, matrix %p.\n", device, debug_d3dtstype(state), matrix);
- /* Note: Using 'updateStateBlock' rather than 'stateblock' in the code - * below means it will be recorded in a state block change, but it - * works regardless where it is recorded. - * If this is found to be wrong, change to StateBlock. */ if (state > HIGHEST_TRANSFORMSTATE) { WARN("Unhandled transform state %#x.\n", state); return; }
- mat = &device->update_state->transforms[state]; - multiply_matrix(&temp, mat, matrix); - - /* Apply change via set transform - will reapply to eg. lights this way. */ - wined3d_device_set_transform(device, state, &temp); + /* Tests show that stateblock recording is ignored; the change goes directly + * into the primary stateblock. */ + mat = &device->state.transforms[state]; + multiply_matrix(mat, mat, matrix); + wined3d_cs_emit_set_transform(device->cs, state, matrix); }
/* Note lights are real special cases. Although the device caps state only
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=46449
Your paranoid android.
=== w1064 (32 bit report) ===
d3d8: device.c:1539: Test failed: Reset failed, hr 0x80070057. device.c:1541: Test failed: TestCooperativeLevel failed, hr 0x88760869. device.c:1553: Test failed: D3DVIEWPORT->Width = 400. device.c:1554: Test failed: D3DVIEWPORT->Height = 300. 0138:device: unhandled exception c0000005 at 706FA86E
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
On 23-01-19 02:50, Zebediah Figura wrote:
- mat = &device->update_state->transforms[state];
- multiply_matrix(&temp, mat, matrix);
- /* Apply change via set transform - will reapply to eg. lights this way. */
- wined3d_device_set_transform(device, state, &temp);
- /* Tests show that stateblock recording is ignored; the change goes directly
* into the primary stateblock. */
- mat = &device->state.transforms[state];
- multiply_matrix(mat, mat, matrix);
- wined3d_cs_emit_set_transform(device->cs, state, matrix);
}
/* Note lights are real special cases. Although the device caps state only
Hey Zeb,
I don't think this works properly, since inline matrix multiplication is not a thing. You'll need the temp matrix here, unless you're really lucky with the matrix values.
Sven
On Wed, Jan 23, 2019 at 9:08 AM Sven Baars sven.wine@gmail.com wrote:
I don't think this works properly, since inline matrix multiplication is not a thing. You'll need the temp matrix here, unless you're really lucky with the matrix values.
multiply_matrix() uses a temporary matrix to store results.
On 23-01-19 09:33, Józef Kucia wrote:
On Wed, Jan 23, 2019 at 9:08 AM Sven Baars sven.wine@gmail.com wrote:
I don't think this works properly, since inline matrix multiplication is not a thing. You'll need the temp matrix here, unless you're really lucky with the matrix values.
multiply_matrix() uses a temporary matrix to store results.
Ah, I see. Sorry for the noise.
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=46446
Your paranoid android.
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)