llvmpipe: add images to the scene resource tracker.
This adds all the images to the scene resource tracker. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14923>
This commit is contained in:
@@ -1186,11 +1186,6 @@ lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
|
||||
return ref;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(setup->images); i++) {
|
||||
if (setup->images[i].current.resource == texture)
|
||||
return LP_REFERENCED_FOR_READ | LP_REFERENCED_FOR_WRITE;
|
||||
}
|
||||
|
||||
return LP_UNREFERENCED;
|
||||
}
|
||||
|
||||
@@ -1414,6 +1409,18 @@ try_update_scene_state( struct lp_setup_context *setup )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(setup->images); i++) {
|
||||
if (setup->images[i].current.resource) {
|
||||
if (!lp_scene_add_resource_reference(scene,
|
||||
setup->images[i].current.resource,
|
||||
new_scene,
|
||||
setup->images[i].current.shader_access & PIPE_IMAGE_ACCESS_WRITE)) {
|
||||
assert(!new_scene);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4084,6 +4084,12 @@ llvmpipe_set_shader_images(struct pipe_context *pipe,
|
||||
const struct pipe_image_view *image = images ? &images[idx] : NULL;
|
||||
|
||||
util_copy_image_view(&llvmpipe->images[shader][i], image);
|
||||
|
||||
if (image && image->resource) {
|
||||
bool read_only = !(image->access & PIPE_IMAGE_ACCESS_WRITE);
|
||||
llvmpipe_flush_resource(pipe, image->resource, 0, read_only, false,
|
||||
false, "image");
|
||||
}
|
||||
}
|
||||
|
||||
llvmpipe->num_images[shader] = start_slot + count;
|
||||
|
||||
Reference in New Issue
Block a user