Lines Matching refs:tex

154       surf_tmpl.u.tex.level = level;
160 surf_tmpl.u.tex.first_layer = layer;
161 surf_tmpl.u.tex.last_layer = layer;
224 surf_tmpl.u.tex.level = level;
232 surf_tmpl.u.tex.first_layer = layer;
233 surf_tmpl.u.tex.last_layer = layer;
292 static void si_decompress_depth(struct si_context *sctx, struct si_texture *tex,
303 levels_z = level_mask & tex->dirty_level_mask;
306 if (si_can_sample_zs(tex, false))
313 levels_s = level_mask & tex->stencil_dirty_level_mask;
316 if (si_can_sample_zs(tex, true))
333 (tex->flushed_depth_texture || si_init_flushed_depth_texture(&sctx->b, &tex->buffer.b.b))) {
334 struct si_texture *dst = tex->flushed_depth_texture;
338 assert(tex->flushed_depth_texture);
352 fully_copied_levels = si_blit_dbcb_copy(sctx, tex, dst, copy_planes, levels, first_layer,
353 last_layer, 0, u_max_sample(&tex->buffer.b.b));
356 tex->dirty_level_mask &= ~fully_copied_levels;
358 tex->stencil_dirty_level_mask &= ~fully_copied_levels;
362 bool has_htile = si_htile_enabled(tex, first_level, inplace_planes);
363 bool tc_compat_htile = vi_tc_compat_htile_enabled(tex, first_level, inplace_planes);
368 si_blit_decompress_zs_in_place(sctx, tex, levels_z, levels_s, first_layer, last_layer);
377 tex->dirty_level_mask &= ~levels_z;
379 tex->stencil_dirty_level_mask &= ~levels_s;
391 tex->buffer.b.b.last_level == 0 &&
392 tex->surface.flags & RADEON_SURF_TC_COMPATIBLE_HTILE &&
393 (inplace_planes & PIPE_MASK_Z || !tex->htile_stencil_disabled))
394 tex->enable_tc_compatible_htile_next_clear = true;
399 si_make_DB_shader_coherent(sctx, tex->buffer.b.b.nr_samples, inplace_planes & PIPE_MASK_S,
405 if (copy_planes && tex->buffer.b.b.nr_samples > 1)
406 si_make_CB_shader_coherent(sctx, tex->buffer.b.b.nr_samples, false, true /* no DCC */);
419 struct si_texture *tex;
427 tex = (struct si_texture *)view->texture;
428 assert(tex->db_compatible);
430 si_decompress_depth(sctx, tex, sview->is_stencil_sampler ? PIPE_MASK_S : PIPE_MASK_Z,
431 view->u.tex.first_level, view->u.tex.last_level, 0,
432 util_max_layer(&tex->buffer.b.b, view->u.tex.first_level));
434 if (tex->need_flush_after_depth_decompression) {
436 tex->need_flush_after_depth_decompression = false;
443 static void si_blit_decompress_color(struct si_context *sctx, struct si_texture *tex,
453 level_mask &= tex->dirty_level_mask;
469 assert(vi_dcc_enabled(tex, first_level));
473 if (!vi_dcc_enabled(tex, i))
476 } else if (tex->surface.fmask_size) {
489 max_layer = util_max_layer(&tex->buffer.b.b, level);
495 surf_tmpl.format = tex->buffer.b.b.format;
496 surf_tmpl.u.tex.level = level;
497 surf_tmpl.u.tex.first_layer = layer;
498 surf_tmpl.u.tex.last_layer = layer;
499 cbsurf = sctx->b.create_surface(&sctx->b, &tex->buffer.b.b, &surf_tmpl);
522 if (sctx->screen->allow_dcc_msaa_clear_to_reg_for_bpp[util_logbase2(tex->surface.bpe)] &&
524 vi_dcc_enabled(tex, level)) {
536 tex->dirty_level_mask &= ~(1 << level);
541 si_make_CB_shader_coherent(sctx, tex->buffer.b.b.nr_samples, vi_dcc_enabled(tex, first_level),
542 tex->surface.u.gfx9.color.dcc.pipe_aligned);
545 if (need_fmask_expand && tex->surface.fmask_offset && !tex->fmask_is_identity) {
547 si_compute_expand_fmask(&sctx->b, &tex->buffer.b.b);
548 tex->fmask_is_identity = true;
552 static void si_decompress_color_texture(struct si_context *sctx, struct si_texture *tex,
557 if (!tex->cmask_buffer && !tex->surface.fmask_size &&
558 !vi_dcc_enabled(tex, first_level))
561 si_blit_decompress_color(sctx, tex, first_level, last_level, 0,
562 util_max_layer(&tex->buffer.b.b, first_level), false,
574 struct si_texture *tex;
581 tex = (struct si_texture *)view->texture;
583 si_decompress_color_texture(sctx, tex, view->u.tex.first_level, view->u.tex.last_level,
595 struct si_texture *tex;
602 tex = (struct si_texture *)view->resource;
604 si_decompress_color_texture(sctx, tex, view->u.tex.level, view->u.tex.level,
609 static void si_check_render_feedback_texture(struct si_context *sctx, struct si_texture *tex,
615 if (!vi_dcc_enabled(tex, first_level))
626 if (tex == (struct si_texture *)surf->base.texture && surf->base.u.tex.level >= first_level &&
627 surf->base.u.tex.level <= last_level && surf->base.u.tex.first_layer <= last_layer &&
628 surf->base.u.tex.last_layer >= first_layer) {
635 si_texture_disable_dcc(sctx, tex);
645 struct si_texture *tex;
653 tex = (struct si_texture *)view->texture;
655 si_check_render_feedback_texture(sctx, tex, view->u.tex.first_level, view->u.tex.last_level,
656 view->u.tex.first_layer, view->u.tex.last_layer);
667 struct si_texture *tex;
675 tex = (struct si_texture *)view->resource;
677 si_check_render_feedback_texture(sctx, tex, view->u.tex.level, view->u.tex.level,
678 view->u.tex.first_layer, view->u.tex.last_layer);
686 struct si_texture *tex;
692 tex = (struct si_texture *)view->texture;
694 si_check_render_feedback_texture(sctx, tex, view->u.tex.first_level, view->u.tex.last_level,
695 view->u.tex.first_layer, view->u.tex.last_layer);
703 struct si_texture *tex;
709 tex = (struct si_texture *)view->resource;
711 si_check_render_feedback_texture(sctx, tex, view->u.tex.level, view->u.tex.level,
712 view->u.tex.first_layer, view->u.tex.last_layer);
749 struct si_texture *tex = (struct si_texture *)view->texture;
751 si_decompress_color_texture(sctx, tex, view->u.tex.first_level, view->u.tex.last_level,
759 struct si_texture *tex = (struct si_texture *)view->texture;
761 si_decompress_depth(sctx, tex, sview->is_stencil_sampler ? PIPE_MASK_S : PIPE_MASK_Z,
762 view->u.tex.first_level, view->u.tex.last_level, 0,
763 util_max_layer(&tex->buffer.b.b, view->u.tex.first_level));
772 struct si_texture *tex = (struct si_texture *)view->resource;
774 si_decompress_color_texture(sctx, tex, view->u.tex.level, view->u.tex.level,
829 cb0->u.tex.first_layer, cb0->u.tex.last_layer, false);
845 void si_decompress_subresource(struct pipe_context *ctx, struct pipe_resource *tex, unsigned planes,
850 struct si_texture *stex = (struct si_texture *)tex;
862 if (sctx->framebuffer.state.zsbuf && sctx->framebuffer.state.zsbuf->u.tex.level == level &&
863 sctx->framebuffer.state.zsbuf->texture == tex)
875 sctx->framebuffer.state.cbufs[i]->u.tex.level == level &&
876 sctx->framebuffer.state.cbufs[i]->texture == tex) {
1249 static bool si_generate_mipmap(struct pipe_context *ctx, struct pipe_resource *tex,
1254 struct si_texture *stex = (struct si_texture *)tex;
1256 if (!util_blitter_is_copy_supported(sctx->blitter, tex, tex))
1261 vi_disable_dcc_if_incompatible_format(sctx, tex, base_level, format);
1262 si_decompress_subresource(ctx, tex, PIPE_MASK_RGBAZS, base_level, first_layer, last_layer,
1272 util_blitter_generate_mipmap(sctx->blitter, tex, format, base_level, last_level, first_layer,
1283 struct si_texture *tex = (struct si_texture *)res;
1288 if (!tex->is_depth && (tex->cmask_buffer || vi_dcc_enabled(tex, 0))) {
1289 si_blit_decompress_color(sctx, tex, 0, res->last_level, 0, util_max_layer(res, 0),
1292 if (tex->surface.display_dcc_offset && tex->displayable_dcc_dirty) {
1293 si_retile_dcc(sctx, tex);
1294 tex->displayable_dcc_dirty = false;
1308 void si_decompress_dcc(struct si_context *sctx, struct si_texture *tex)
1310 assert(!tex->is_depth);
1315 if (!tex->surface.meta_offset || !sctx->has_graphics)
1318 si_blit_decompress_color(sctx, tex, 0, tex->buffer.b.b.last_level, 0,
1319 util_max_layer(&tex->buffer.b.b, 0), true, false);