llvmpipe: flush/reference fs ubos on bind

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22828>
This commit is contained in:
Mike Blumenkrantz
2023-05-12 09:05:01 -04:00
committed by Marge Bot
parent b9c588b47b
commit 83a7a88d6b
3 changed files with 9 additions and 0 deletions

View File

@@ -1065,6 +1065,13 @@ try_update_scene_state(struct lp_setup_context *setup)
for (unsigned i = 0; i < ARRAY_SIZE(setup->constants); ++i) {
lp_jit_buffer_from_pipe_const(&setup->fs.current.jit_resources.constants[i],
&setup->constants[i].current, setup->pipe->screen);
if (setup->constants[i].current.buffer &&
!lp_scene_add_resource_reference(scene,
setup->constants[i].current.buffer,
new_scene, false)) {
assert(!new_scene);
return false;
}
setup->dirty |= LP_SETUP_NEW_FS;
}
}

View File

@@ -4198,6 +4198,7 @@ llvmpipe_set_constant_buffer(struct pipe_context *pipe,
debug_printf("Illegal set constant without bind flag\n");
constants->buffer->bind |= PIPE_BIND_CONSTANT_BUFFER;
}
llvmpipe_flush_resource(pipe, constants->buffer, 0, true, true, false, "set_constant_buffer");
}
switch (shader) {

View File

@@ -837,6 +837,7 @@ llvmpipe_is_resource_referenced(struct pipe_context *pipe,
if (!(presource->bind & (PIPE_BIND_DEPTH_STENCIL |
PIPE_BIND_RENDER_TARGET |
PIPE_BIND_SAMPLER_VIEW |
PIPE_BIND_CONSTANT_BUFFER |
PIPE_BIND_SHADER_BUFFER |
PIPE_BIND_SHADER_IMAGE)))
return LP_UNREFERENCED;