On 2/18/21 3:06 PM, Henri Verbeet wrote:
On Thu, 18 Feb 2021 at 13:31, Rémi Bernon rbernon@codeweavers.com wrote:
@@ -2973,7 +2972,7 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) cs->device = device; cs->serialize_commands = TRACE_ON(d3d_sync) || wined3d_settings.cs_multithreaded & WINED3D_CSMT_SERIALIZE;
- state_init(&cs->state, d3d_info, WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT);
- state_reset(&cs->state, d3d_info, WINED3D_STATE_NO_REF | WINED3D_STATE_INIT_DEFAULT);
I think reset and initialisation are conceptually different, and this is clearly an initialisation. More, there's no need for the memset() that state_reset() does here, since "cs" was allocated with heap_alloc_zero().
@@ -6020,8 +6018,7 @@ HRESULT wined3d_device_init(struct wined3d_device *device, struct wined3d *wined hr = E_OUTOFMEMORY; goto err; }
- memset(state, 0, sizeof(*state));
- state_init(state, &adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT);
- state_reset(state, &adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT);
Likewise.
+void state_reset(struct wined3d_state *state, const struct wined3d_d3d_info *d3d_info, DWORD flags) +{
- memset(&state->flags, 0, sizeof(struct wined3d_state) - FIELD_OFFSET(struct wined3d_state, flags));
- state_init(state, d3d_info, flags);
+}
Do we expect to ever change the flags on state_reset()? The "flags" parameter seems redundant. The memset() effectively clears the entire structure, except if we were to ever move the "flags" field to a different place in the structure. Any reason to not simply use "memset(state, 0, sizeof(*state));"?
So I wanted to avoid adding a new helper, but would having both state_init and state_reset make more sense?