Mesa (master): radeonsi: don't validate inlinable uniforms at draw time
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jan 20 22:13:28 UTC 2021
Module: Mesa
Branch: master
Commit: 76d6351dab7e716775ec965a2bb467713d97d03b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=76d6351dab7e716775ec965a2bb467713d97d03b
Author: Marek Olšák <marek.olsak at amd.com>
Date: Mon Jan 11 22:57:32 2021 -0500
radeonsi: don't validate inlinable uniforms at draw time
Let's trust the state tracker that it sets inlinable uniforms only
when shaders can use them.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8600>
---
src/gallium/drivers/radeonsi/si_descriptors.c | 2 +-
src/gallium/drivers/radeonsi/si_pipe.h | 2 --
src/gallium/drivers/radeonsi/si_state_draw.cpp | 8 --------
src/gallium/drivers/radeonsi/si_state_shaders.c | 5 -----
4 files changed, 1 insertion(+), 16 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index 1fbbfd40ff3..75cfc1c8662 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -1192,8 +1192,8 @@ static void si_set_inlinable_constants(struct pipe_context *ctx,
struct si_context *sctx = (struct si_context *)ctx;
memcpy(sctx->inlinable_uniforms[shader], values, num_values * 4);
- sctx->inlinable_uniforms_dirty_mask |= 1 << shader;
sctx->inlinable_uniforms_valid_mask |= 1 << shader;
+ sctx->do_update_shaders = true;
}
void si_get_pipe_constant_buffer(struct si_context *sctx, uint shader, uint slot,
diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
index e00f9a1af3d..ba77a1ebf5e 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.h
+++ b/src/gallium/drivers/radeonsi/si_pipe.h
@@ -1073,8 +1073,6 @@ struct si_context {
unsigned descriptors_dirty;
unsigned shader_pointers_dirty;
unsigned shader_needs_decompress_mask;
- unsigned shader_has_inlinable_uniforms_mask;
- unsigned inlinable_uniforms_dirty_mask;
unsigned inlinable_uniforms_valid_mask;
uint32_t inlinable_uniforms[SI_NUM_SHADERS][MAX_INLINABLE_UNIFORMS];
struct si_buffer_resources rw_buffers;
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp
index 9b1ae0ea91a..977a3028288 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.cpp
+++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp
@@ -1954,14 +1954,6 @@ static void si_draw_vbo(struct pipe_context *ctx,
}
}
- if (sctx->shader_has_inlinable_uniforms_mask &
- sctx->inlinable_uniforms_valid_mask &
- sctx->inlinable_uniforms_dirty_mask) {
- sctx->do_update_shaders = true;
- /* If inlinable uniforms are not valid, they are also not dirty, so clear all bits. */
- sctx->inlinable_uniforms_dirty_mask = 0;
- }
-
if (unlikely(sctx->do_update_shaders)) {
if (unlikely(!si_update_shaders(sctx))) {
DRAW_CLEANUP;
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 4342c26f00d..3326ad934fe 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -2969,11 +2969,6 @@ static void si_update_common_shader_state(struct si_context *sctx, struct si_sha
si_shader_uses_bindless_images(sctx->tcs_shader.cso) ||
si_shader_uses_bindless_images(sctx->tes_shader.cso);
- if (sel && sel->info.base.num_inlinable_uniforms)
- sctx->shader_has_inlinable_uniforms_mask |= 1 << type;
- else
- sctx->shader_has_inlinable_uniforms_mask &= ~(1 << type);
-
/* Invalidate inlinable uniforms. */
sctx->inlinable_uniforms_valid_mask &= ~(1 << type);
More information about the mesa-commit
mailing list