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,
|
struct si_sampler_view *sview, struct si_texture *tex,
|
||||||
uint32_t *desc)
|
uint32_t *desc)
|
||||||
{
|
{
|
||||||
if (sview && sview->is_integer)
|
if (tex && tex->upgraded_depth && sview && !sview->is_stencil_sampler)
|
||||||
memcpy(desc, sstate->integer_val, 4 * 4);
|
|
||||||
else if (tex && tex->upgraded_depth && (!sview || !sview->is_stencil_sampler))
|
|
||||||
memcpy(desc, sstate->upgraded_depth_val, 4 * 4);
|
memcpy(desc, sstate->upgraded_depth_val, 4 * 4);
|
||||||
else
|
else
|
||||||
memcpy(desc, sstate->val, 4 * 4);
|
memcpy(desc, sstate->val, 4 * 4);
|
||||||
|
|
|
@ -679,7 +679,6 @@ struct si_sampler_view {
|
||||||
ubyte base_level;
|
ubyte base_level;
|
||||||
ubyte block_width;
|
ubyte block_width;
|
||||||
bool is_stencil_sampler;
|
bool is_stencil_sampler;
|
||||||
bool is_integer;
|
|
||||||
bool dcc_incompatible;
|
bool dcc_incompatible;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -690,7 +689,6 @@ struct si_sampler_state {
|
||||||
unsigned magic;
|
unsigned magic;
|
||||||
#endif
|
#endif
|
||||||
uint32_t val[4];
|
uint32_t val[4];
|
||||||
uint32_t integer_val[4];
|
|
||||||
uint32_t upgraded_depth_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,
|
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);
|
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_info = &surflevel[base_level];
|
||||||
view->base_level = base_level;
|
view->base_level = base_level;
|
||||||
view->block_width = util_format_get_blockwidth(pipe_format);
|
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_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_FILTER(si_tex_mipfilter(state->min_mip_filter)) |
|
||||||
S_008F38_MIP_POINT_PRECLAMP(0));
|
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) {
|
if (sscreen->info.chip_class >= GFX10) {
|
||||||
rstate->val[2] |= S_008F38_ANISO_OVERRIDE_GFX10(1);
|
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);
|
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. */
|
/* Create sampler resource for upgraded depth textures. */
|
||||||
memcpy(rstate->upgraded_depth_val, rstate->val, sizeof(rstate->val));
|
memcpy(rstate->upgraded_depth_val, rstate->val, sizeof(rstate->val));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue