On Tue, 28 Sept 2021 at 23:28, Zebediah Figura zfigura@codeweavers.com wrote:
@@ -2749,6 +2751,7 @@ void wined3d_device_context_emit_update_sub_resource(struct wined3d_device_conte op->box = *box; op->bo.addr.buffer_object = 0; op->bo.addr.addr = data;
- op->bo.flags = UPLOAD_BO_UPLOAD_ON_UNMAP; op->row_pitch = row_pitch; op->slice_pitch = slice_pitch;
Do we need UPLOAD_BO_UPLOAD_ON_UNMAP here? It seems a little out of place, and wined3d_cs_exec_update_sub_resource() doesn't appear to use it.
@@ -3519,13 +3522,13 @@ static void *wined3d_deferred_context_prepare_upload_bo(struct wined3d_device_co
if (flags & WINED3D_MAP_NOOVERWRITE) {
const struct wined3d_deferred_upload *upload;
if ((upload = deferred_context_get_upload(deferred, resource, sub_resource_idx))) {
upload->map_flags = flags; map_ptr = (uint8_t *)align((size_t)upload->sysmem, RESOURCE_ALIGNMENT); bo->addr.buffer_object = 0; bo->addr.addr = map_ptr;
bo->flags = 0; return map_ptr; }
@@ -3540,6 +3543,7 @@ static void *wined3d_deferred_context_prepare_upload_bo(struct wined3d_device_co return NULL;
upload = &deferred->uploads[deferred->upload_count++];
- upload->map_flags = flags; upload->resource = resource; wined3d_resource_incref(resource); upload->sub_resource_idx = sub_resource_idx;
@@ -3549,6 +3553,7 @@ static void *wined3d_deferred_context_prepare_upload_bo(struct wined3d_device_co bo->addr.buffer_object = 0; map_ptr = (uint8_t *)align((size_t)sysmem, RESOURCE_ALIGNMENT); bo->addr.addr = map_ptr;
- bo->flags = UPLOAD_BO_UPLOAD_ON_UNMAP; return map_ptr;
}
@@ -3563,6 +3568,9 @@ static bool wined3d_deferred_context_get_upload_bo(struct wined3d_device_context *box = upload->box; bo->addr.buffer_object = 0; bo->addr.addr = (uint8_t *)align((size_t)upload->sysmem, RESOURCE_ALIGNMENT);
bo->flags = 0;
if (!(upload->map_flags & WINED3D_MAP_NOOVERWRITE))
}bo->flags |= UPLOAD_BO_UPLOAD_ON_UNMAP; return true;
In some ways, it would seem nicer to store the UPLOAD_BO flags directly in the wined3d_deferred_upload structure, instead of deriving them from the stored map flags. Perhaps there are other reasons to store the map flags in subsequent patches though?