Lines Matching defs:level

420 bool vi_dcc_get_clear_info(struct si_context *sctx, struct si_texture *tex, unsigned level,
427 assert(vi_dcc_enabled(tex, level));
436 unsigned num_layers = util_num_layers(&tex->buffer.b.b, level);
439 /* Clear a specific level. */
440 dcc_offset += tex->surface.u.gfx9.meta_levels[level].offset;
441 clear_size = tex->surface.u.gfx9.meta_levels[level].size;
443 /* Clear all layers having only 1 level. */
452 /* TODO: Implement DCC fast clear for level 0 of mipmapped textures. Mipmapped
453 * DCC has to clear a rectangular area of DCC for level 0 (because the whole miptree
469 unsigned num_layers = util_num_layers(&tex->buffer.b.b, level);
472 if (!tex->surface.u.legacy.color.dcc_level[level].dcc_fast_clear_size)
482 dcc_offset += tex->surface.u.legacy.color.dcc_level[level].dcc_offset;
483 clear_size = tex->surface.u.legacy.color.dcc_level[level].dcc_fast_clear_size;
502 tex->surface.u.legacy.level[0].mode == RADEON_SURF_MODE_2D);
647 static bool si_can_fast_clear_depth(struct si_texture *zstex, unsigned level, float depth,
652 si_htile_enabled(zstex, level, PIPE_MASK_Z) &&
656 static bool si_can_fast_clear_stencil(struct si_texture *zstex, unsigned level, uint8_t stencil,
661 si_htile_enabled(zstex, level, PIPE_MASK_S) &&
688 unsigned level = fb->cbufs[i]->u.tex.level;
689 unsigned num_layers = util_num_layers(&tex->buffer.b.b, level);
728 if (vi_dcc_enabled(tex, level)) {
759 /* We can clear any level, but we only set up the clear value registers for the first
760 * level. Therefore, all other levels can be cleared only if the clear value registers
763 if (level > 0 && (eliminate_needed || !sctx->screen->info.has_dcc_constant_encode))
772 if (!vi_dcc_get_clear_info(sctx, tex, level, reset_value, &info[num_clears]))
794 if (level > 0)
824 assert(level == 0);
836 /* Clear level 0. */
840 /* Clear all layers having only 1 level. */
847 /* TODO: Implement CMASK fast clear for level 0 of mipmapped textures. Mipmapped
848 * CMASK has to clear a rectangular area of CMASK for level 0 (because the whole
863 /* GFX6-8: This only covers mipmap level 0. */
877 !(tex->dirty_level_mask & (1 << level))) {
879 tex->dirty_level_mask |= 1 << level;
904 unsigned zs_num_layers = zstex ? util_num_layers(&zstex->buffer.b.b, zsbuf->u.tex.level) : 0;
908 si_htile_enabled(zstex, zsbuf->u.tex.level, PIPE_MASK_ZS)) {
909 unsigned level = zsbuf->u.tex.level;
940 if (si_can_fast_clear_depth(zstex, level, depth, *buffers)) {
944 zstex->depth_cleared_level_mask_once |= BITFIELD_BIT(level);
945 zstex->depth_cleared_level_mask |= BITFIELD_BIT(level);
949 if (si_can_fast_clear_depth(zstex, level, depth, *buffers) &&
950 si_can_fast_clear_stencil(zstex, level, stencil, *buffers)) {
954 zstex->depth_cleared_level_mask_once |= BITFIELD_BIT(level);
955 zstex->depth_cleared_level_mask |= BITFIELD_BIT(level);
956 zstex->stencil_cleared_level_mask_once |= BITFIELD_BIT(level);
992 /* This can only clear a layered texture with 1 level or a mipmap texture
996 /* Clear a specific level. */
997 htile_offset += zstex->surface.u.gfx9.meta_levels[level].offset;
998 htile_size = zstex->surface.u.gfx9.meta_levels[level].size;
1000 /* Clear all layers having only 1 level. */
1004 /* This can only clear a layered texture with 1 level. Other cases are
1014 si_can_fast_clear_depth(zstex, level, depth, *buffers)) {
1021 zstex->depth_cleared_level_mask_once |= BITFIELD_BIT(level);
1022 zstex->depth_cleared_level_mask |= BITFIELD_BIT(level);
1027 si_can_fast_clear_depth(zstex, level, depth, *buffers) &&
1028 si_can_fast_clear_stencil(zstex, level, stencil, *buffers)) {
1035 zstex->depth_cleared_level_mask_once |= BITFIELD_BIT(level);
1036 zstex->depth_cleared_level_mask |= BITFIELD_BIT(level);
1037 zstex->stencil_cleared_level_mask_once |= BITFIELD_BIT(level);
1053 si_can_fast_clear_depth(zstex, level, depth, *buffers)) {
1061 zstex->depth_cleared_level_mask_once |= BITFIELD_BIT(level);
1062 zstex->depth_cleared_level_mask |= BITFIELD_BIT(level);
1066 si_can_fast_clear_stencil(zstex, level, stencil, *buffers)) {
1074 zstex->stencil_cleared_level_mask_once |= BITFIELD_BIT(level);
1083 zstex->depth_clear_value[level] != (float)depth) {
1084 zstex->depth_clear_value[level] = depth;
1091 zstex->stencil_clear_value[level] != stencil) {
1092 zstex->stencil_clear_value[level] = stencil;
1133 tex->dirty_level_mask &= ~(1 << fb->cbufs[i]->u.tex.level);
1139 unsigned level = zsbuf->u.tex.level;
1141 if (si_can_fast_clear_depth(zstex, level, depth, buffers)) {
1144 if (!(zstex->depth_cleared_level_mask_once & BITFIELD_BIT(level)) ||
1145 zstex->depth_clear_value[level] != depth) {
1149 if (zstex->depth_clear_value[level] != (float)depth) {
1150 if ((zstex->depth_clear_value[level] != 0) != (depth != 0)) {
1156 zstex->depth_clear_value[level] = depth;
1164 if (si_can_fast_clear_stencil(zstex, level, stencil, buffers)) {
1169 if (!(zstex->stencil_cleared_level_mask_once & BITFIELD_BIT(level)) ||
1170 zstex->stencil_clear_value[level] != stencil) {
1174 if (zstex->stencil_clear_value[level] != (uint8_t)stencil) {
1176 zstex->stencil_clear_value[level] = stencil;
1203 zstex->depth_cleared_level_mask_once |= BITFIELD_BIT(zsbuf->u.tex.level);
1204 zstex->depth_cleared_level_mask |= BITFIELD_BIT(zsbuf->u.tex.level);
1211 zstex->stencil_cleared_level_mask_once |= BITFIELD_BIT(zsbuf->u.tex.level);
1227 dst->u.tex.last_layer == util_max_layer(dst->texture, dst->u.tex.level) &&
1272 (sctx->gfx_level >= GFX10 || !vi_dcc_enabled(sdst, dst->u.tex.level))) {
1304 static void si_clear_texture(struct pipe_context *pipe, struct pipe_resource *tex, unsigned level,
1315 tmpl.u.tex.level = level;