Mesa (main): radeonsi: check is_buffer once instead of 4 times in si_set_sampler_view_desc
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 16 17:32:29 UTC 2021
Module: Mesa
Branch: main
Commit: 53853d0b27c1a9609cb2701c59944a91d1f76db2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=53853d0b27c1a9609cb2701c59944a91d1f76db2
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sun Jun 6 06:45:48 2021 -0400
radeonsi: check is_buffer once instead of 4 times in si_set_sampler_view_desc
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11340>
---
src/gallium/drivers/radeonsi/si_descriptors.c | 32 ++++++++++++++-------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index 0aff0082fd8..052688cef97 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -445,9 +445,17 @@ static void si_set_sampler_view_desc(struct si_context *sctx, struct si_sampler_
{
struct pipe_sampler_view *view = &sview->base;
struct si_texture *tex = (struct si_texture *)view->texture;
- bool is_buffer = tex->buffer.b.b.target == PIPE_BUFFER;
- if (unlikely(!is_buffer && sview->dcc_incompatible)) {
+ assert(tex); /* views with texture == NULL aren't supported */
+
+ if (tex->buffer.b.b.target == PIPE_BUFFER) {
+ memcpy(desc, sview->state, 8 * 4);
+ memcpy(desc + 8, null_texture_descriptor, 4 * 4); /* Disable FMASK. */
+ si_set_buf_desc_address(&tex->buffer, sview->base.u.buf.offset, desc + 4);
+ return;
+ }
+
+ if (unlikely(sview->dcc_incompatible)) {
if (vi_dcc_enabled(tex, view->u.tex.first_level))
if (!si_texture_disable_dcc(sctx, tex))
si_decompress_dcc(sctx, tex);
@@ -455,27 +463,21 @@ static void si_set_sampler_view_desc(struct si_context *sctx, struct si_sampler_
sview->dcc_incompatible = false;
}
- assert(tex); /* views with texture == NULL aren't supported */
- memcpy(desc, sview->state, 8 * 4);
-
- if (is_buffer) {
- si_set_buf_desc_address(&tex->buffer, sview->base.u.buf.offset, desc + 4);
- } else {
- bool is_separate_stencil = tex->db_compatible && sview->is_stencil_sampler;
+ bool is_separate_stencil = tex->db_compatible && sview->is_stencil_sampler;
- si_set_mutable_tex_desc_fields(sctx->screen, tex, sview->base_level_info, sview->base_level,
- sview->base.u.tex.first_level, sview->block_width,
- is_separate_stencil, 0, desc);
- }
+ memcpy(desc, sview->state, 8 * 4);
+ si_set_mutable_tex_desc_fields(sctx->screen, tex, sview->base_level_info, sview->base_level,
+ sview->base.u.tex.first_level, sview->block_width,
+ is_separate_stencil, 0, desc);
- if (!is_buffer && tex->surface.fmask_size) {
+ if (tex->surface.fmask_size) {
memcpy(desc + 8, sview->fmask_state, 8 * 4);
} else {
/* Disable FMASK and bind sampler state in [12:15]. */
memcpy(desc + 8, null_texture_descriptor, 4 * 4);
if (sstate)
- si_set_sampler_state_desc(sstate, sview, is_buffer ? NULL : tex, desc + 12);
+ si_set_sampler_state_desc(sstate, sview, tex, desc + 12);
}
}
More information about the mesa-commit
mailing list