Stefan Dösinger (@stefan) commented about dlls/d3d9/tests/visual.c:
goto done;
- }
- hr = IDirect3DDevice9_CreateVertexShader(device, vertex_shader_code1, &vertex_shader[1]);
- ok(SUCCEEDED(hr), "CreateVertexShader failed, hr %#lx.\n", hr);
- hr = IDirect3DDevice9_CreatePixelShader(device, pixel_shader_code1, &pixel_shader[1]);
- ok(SUCCEEDED(hr), "CreatePixelShader failed, hr %#lx.\n", hr);
- hr = IDirect3DDevice9_CreatePixelShader(device, pixel_shader_code2, &pixel_shader[2]);
- ok(SUCCEEDED(hr), "CreatePixelShader failed, hr %#lx.\n", hr);
- hr = IDirect3DDevice9_SetRenderState(device, D3DRS_LIGHTING, FALSE);
- ok(SUCCEEDED(hr), "Failed to set render state, hr %#lx.\n", hr);
- hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGENABLE, TRUE);
- ok(SUCCEEDED(hr), "Failed to set render state, hr %#lx.\n", hr);
- hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGCOLOR, 0x0000ff00);
- ok(SUCCEEDED(hr), "Failed to set render state, hr %#lx.\n", hr);
- hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGSTART, *(DWORD*)(&start));
I know we are using this kind of float-to-DWORD cast in a few other places, but technically speaking it violates the C strict aliasing rule. Better use a union, like e.g. in fog_with_shader_test().
(Actually, I see you already have the conv union for depth bias, just reuse it here)