On 4/4/19 17:39, Henri Verbeet wrote:
@@ -749,7 +753,7 @@ static void light_check_data(IDirect3DDevice9 *device, const struct state_test *
"Chain stage %u: expected get_light_result %#x, got %#x.\n", chain_stage, ldata->get_light_result, value.get_light_result);
- ok(value.enabled == ldata->enabled,
- ok(!value.enabled == !ldata->enabled,
Is that an unrelated change? I remember us caring about the specific value GetLightEnable() returns, so the test was probably intentionally written this way.
After rearranging some tests the test started failing with exactly the same failing values under Wine and Windows, so I changed this to boolean comparison. I will investigate this and get the test back to exact values comparison, even if maybe I will have to add yet another quirk.
@@ -3641,6 +3641,7 @@ struct wined3d_saved_states { DWORD transform[(WINED3D_HIGHEST_TRANSFORM_STATE >> 5) + 1]; WORD streamSource; /* WINED3D_MAX_STREAMS, 16 */
- BOOL stream_offset_ignore; WORD streamFreq; /* WINED3D_MAX_STREAMS, 16 */
Putting a BOOL between two WORDs really isn't ideal for structure packing. Rather than just moving the BOOL though, perhaps it makes more sense to invert its meaning, take a bit out of "padding", and add a "DWORD stream_offset : 1;" instead?
store_stream_offset maybe? I suggest this as the flag does not influence state block application, only the capturing of the offset.