mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-28 15:10:46 +02:00
llvmpipe: add ssbo to resources reference by scenes.
Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14923>
This commit is contained in:
parent
ef34719459
commit
eff32fa591
2 changed files with 18 additions and 6 deletions
|
|
@ -1179,18 +1179,13 @@ lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
|
|||
return LP_REFERENCED_FOR_READ | LP_REFERENCED_FOR_WRITE;
|
||||
}
|
||||
|
||||
/* check textures referenced by the scene */
|
||||
/* check resources referenced by the scene */
|
||||
for (i = 0; i < setup->num_active_scenes; i++) {
|
||||
unsigned ref = lp_scene_is_resource_referenced(setup->scenes[i], texture);
|
||||
if (ref)
|
||||
return ref;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(setup->ssbos); i++) {
|
||||
if (setup->ssbos[i].current.buffer == texture)
|
||||
return LP_REFERENCED_FOR_READ | LP_REFERENCED_FOR_WRITE;
|
||||
}
|
||||
|
||||
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;
|
||||
|
|
@ -1408,6 +1403,17 @@ try_update_scene_state( struct lp_setup_context *setup )
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(setup->ssbos); i++) {
|
||||
if (setup->ssbos[i].current.buffer) {
|
||||
if (!lp_scene_add_resource_reference(scene,
|
||||
setup->ssbos[i].current.buffer,
|
||||
new_scene, setup->ssbo_write_mask & (1 << i))) {
|
||||
assert(!new_scene);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4042,6 +4042,12 @@ llvmpipe_set_shader_buffers(struct pipe_context *pipe,
|
|||
|
||||
util_copy_shader_buffer(&llvmpipe->ssbos[shader][i], buffer);
|
||||
|
||||
if (buffer && buffer->buffer) {
|
||||
boolean read_only = !(writable_bitmask & (1 << idx));
|
||||
llvmpipe_flush_resource(pipe, buffer->buffer, 0, read_only, false,
|
||||
false, "buffer");
|
||||
}
|
||||
|
||||
if (shader == PIPE_SHADER_VERTEX ||
|
||||
shader == PIPE_SHADER_GEOMETRY ||
|
||||
shader == PIPE_SHADER_TESS_CTRL ||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue