From patch 2/5: ```diff +bool wined3d_texture_validate_sub_resource_idx(const struct wined3d_texture *texture, unsigned int sub_resource_idx) +{ + if (sub_resource_idx < texture->level_count * texture->layer_count) + return true; + + WARN("Invalid sub-resource index %u.\n", sub_resource_idx); + return false; +} ```
It's fairly inconsequential, but `wined3d_texture_validate_sub_resource_idx()` sounds like something that modifies the texture. (Compare e.g. `wined3d_texture_validate_location()`.)
From patch 3/5: ```diff @@ -5521,8 +5521,23 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
if ((resource->usage & WINED3DUSAGE_MANAGED) && !resource->map_count) { - TRACE("Evicting %p.\n", resource); - wined3d_cs_emit_unload_resource(device->cs, resource); + if (resource->access & WINED3D_RESOURCE_ACCESS_GPU) + { + TRACE("Evicting %p.\n", resource); + wined3d_cs_emit_unload_resource(device->cs, resource); + } ```
Doesn't `WINED3DUSAGE_MANAGED` imply `WINED3D_RESOURCE_ACCESS_GPU`? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/657#note_6408