On Fri, 29 Nov 2019 at 17:58, Paul Gofman gofmanp@gmail.com wrote:
release:
- wined3d_context_unmap_bo_address(context, &dst_data, 0, 1, &dst_range);
- if (upload)
- {
struct wined3d_bo_address data;
data.buffer_object = 0;
data.addr = dst_map.data;
texture_level = dst_sub_resource_idx % dst_texture->level_count;
wined3d_texture_prepare_location(dst_texture, texture_level, context, WINED3D_LOCATION_TEXTURE_RGB);
dst_texture->texture_ops->texture_upload_data(context, wined3d_const_bo_address(&data), dst_format,
dst_box, dst_map.row_pitch, dst_map.slice_pitch, dst_texture, texture_level,
WINED3D_LOCATION_TEXTURE_RGB, dst_box->left, dst_box->top, 0);
wined3d_texture_validate_location(dst_texture, texture_level, WINED3D_LOCATION_TEXTURE_RGB);
wined3d_texture_invalidate_location(dst_texture, texture_level, ~WINED3D_LOCATION_TEXTURE_RGB);
heap_free(dst_map.data);
- }
- else
- {
wined3d_context_unmap_bo_address(context, &dst_data, 0, 1, &dst_range);
- }
It probably works out in practice because we only jump to "release:" from error paths when "upload" is FALSE, but it doesn't seem right to depend on that. I.e., we should probably explicitly check for success before uploading here.