[PATCH 2/2] wined3d: Store and use stream offset in state block.

Paul Gofman gofmanp at gmail.com
Thu Apr 4 09:49:09 CDT 2019


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.




More information about the wine-devel mailing list