On 23 August 2017 at 16:17, Paul Gofman gofmanp@gmail.com wrote:
-static IDirect3DDevice9 *create_device(IDirect3D9 *d3d, HWND device_window, HWND focus_window, BOOL windowed) +static IDirect3DDevice9 *create_device_behavior(IDirect3D9 *d3d, HWND device_window, HWND focus_window,
BOOL windowed, DWORD behavior_flags)
It's perhaps a bit of an uncomfortable change to make due to the number of tests in visual.c, but ideally this would match the version of create_device() in device.c. Lacking that, there are a few tests in visual.c that just call IDirect3D9_CreateDevice() directly. In either case, we'd like device.c and visual.c to converge instead of diverge.
- hr = IDirect3DDevice9_SetVertexShader(device, NULL);
- ok(SUCCEEDED(hr), "Got unexpected hr %#x.\n", hr);
- hr = IDirect3DDevice9_SetVertexShader(device, pure_sw_shader);
- ok(SUCCEEDED(hr), "Got unexpected hr %#x.\n", hr);
Is resetting the shader to NULL really needed here?
- hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad, sizeof(*quad));
- todo_wine
- ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
- hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad, sizeof(*quad));
- ok(SUCCEEDED(hr), "Got unexpected hr %#x.\n", hr);
Odd.
- /* wined3d does not guarantee 0 for out of bounds constant access by default. */
IIRC neither does Windows, in general. Matteo may have a better recollection of the details, but IIRC while it mostly works out in practice on current NVIDIA hardware, it doesn't necessarily everywhere else, and is essentially hardware/driver specific behaviour.