radeonsi: use pipe_sampler_state::border_color_is_integer to simplify stuff
We don't need the separate integer sampler state if we know the border color type. Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9577>
This commit is contained in:
parent
1f8e4ec7d1
commit
a94bd9033d
|
@ -434,9 +434,7 @@ static void si_set_sampler_state_desc(struct si_sampler_state *sstate,
|
|||
struct si_sampler_view *sview, struct si_texture *tex,
|
||||
uint32_t *desc)
|
||||
{
|
||||
if (sview && sview->is_integer)
|
||||
memcpy(desc, sstate->integer_val, 4 * 4);
|
||||
else if (tex && tex->upgraded_depth && (!sview || !sview->is_stencil_sampler))
|
||||
if (tex && tex->upgraded_depth && sview && !sview->is_stencil_sampler)
|
||||
memcpy(desc, sstate->upgraded_depth_val, 4 * 4);
|
||||
else
|
||||
memcpy(desc, sstate->val, 4 * 4);
|
||||
|
|
|
@ -679,7 +679,6 @@ struct si_sampler_view {
|
|||
ubyte base_level;
|
||||
ubyte block_width;
|
||||
bool is_stencil_sampler;
|
||||
bool is_integer;
|
||||
bool dcc_incompatible;
|
||||
};
|
||||
|
||||
|
@ -690,7 +689,6 @@ struct si_sampler_state {
|
|||
unsigned magic;
|
||||
#endif
|
||||
uint32_t val[4];
|
||||
uint32_t integer_val[4];
|
||||
uint32_t upgraded_depth_val[4];
|
||||
};
|
||||
|
||||
|
|
|
@ -4343,20 +4343,6 @@ struct pipe_sampler_view *si_create_sampler_view_custom(struct pipe_context *ctx
|
|||
sctx->screen, tex, true, state->target, pipe_format, state_swizzle, first_level, last_level,
|
||||
state->u.tex.first_layer, last_layer, width, height, depth, view->state, view->fmask_state);
|
||||
|
||||
const struct util_format_description *desc = util_format_description(pipe_format);
|
||||
view->is_integer = false;
|
||||
|
||||
for (unsigned i = 0; i < desc->nr_channels; ++i) {
|
||||
if (desc->channel[i].type == UTIL_FORMAT_TYPE_VOID)
|
||||
continue;
|
||||
|
||||
/* Whether the number format is {U,S}{SCALED,INT} */
|
||||
view->is_integer = (desc->channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED ||
|
||||
desc->channel[i].type == UTIL_FORMAT_TYPE_SIGNED) &&
|
||||
(desc->channel[i].pure_integer || !desc->channel[i].normalized);
|
||||
break;
|
||||
}
|
||||
|
||||
view->base_level_info = &surflevel[base_level];
|
||||
view->base_level = base_level;
|
||||
view->block_width = util_format_get_blockwidth(pipe_format);
|
||||
|
@ -4517,7 +4503,8 @@ static void *si_create_sampler_state(struct pipe_context *ctx,
|
|||
S_008F38_XY_MIN_FILTER(si_tex_filter(state->min_img_filter, max_aniso)) |
|
||||
S_008F38_MIP_FILTER(si_tex_mipfilter(state->min_mip_filter)) |
|
||||
S_008F38_MIP_POINT_PRECLAMP(0));
|
||||
rstate->val[3] = si_translate_border_color(sctx, state, &state->border_color, false);
|
||||
rstate->val[3] = si_translate_border_color(sctx, state, &state->border_color,
|
||||
state->border_color_is_integer);
|
||||
|
||||
if (sscreen->info.chip_class >= GFX10) {
|
||||
rstate->val[2] |= S_008F38_ANISO_OVERRIDE_GFX10(1);
|
||||
|
@ -4527,10 +4514,6 @@ static void *si_create_sampler_state(struct pipe_context *ctx,
|
|||
S_008F38_ANISO_OVERRIDE_GFX8(sctx->chip_class >= GFX8);
|
||||
}
|
||||
|
||||
/* Create sampler resource for integer textures. */
|
||||
memcpy(rstate->integer_val, rstate->val, sizeof(rstate->val));
|
||||
rstate->integer_val[3] = si_translate_border_color(sctx, state, &state->border_color, true);
|
||||
|
||||
/* Create sampler resource for upgraded depth textures. */
|
||||
memcpy(rstate->upgraded_depth_val, rstate->val, sizeof(rstate->val));
|
||||
|
||||
|
|
Loading…
Reference in New Issue