wined3d: Handle WINED3D_LOCATION_CLEARED in wined3d_texture_load_location().

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-02-23 20:21:37 -06:00 committed by Alexandre Julliard
parent 23fbec2722
commit 3a67b7f2fb
1 changed files with 17 additions and 0 deletions

View File

@ -815,6 +815,23 @@ BOOL wined3d_texture_load_location(struct wined3d_texture *texture,
return TRUE;
}
if (current & WINED3D_LOCATION_CLEARED)
{
struct wined3d_bo_address addr;
/* FIXME: Clear textures on the GPU if possible. */
if (!wined3d_texture_prepare_location(texture, sub_resource_idx, context, WINED3D_LOCATION_SYSMEM))
return FALSE;
wined3d_texture_get_bo_address(texture, sub_resource_idx, &addr, WINED3D_LOCATION_SYSMEM);
memset(addr.addr, 0, texture->sub_resources[sub_resource_idx].size);
wined3d_texture_validate_location(texture, sub_resource_idx, WINED3D_LOCATION_SYSMEM);
current |= WINED3D_LOCATION_SYSMEM;
if (current & location)
return TRUE;
}
if (!current)
{
ERR("Sub-resource %u of texture %p does not have any up to date location.\n",