freedreno/a6xx: UBWC support
[mesa.git] / src / gallium / drivers / freedreno / a6xx / fd6_texture.c
index 0d6bec72b14ffe6a346a3ef0e934e309b5b41ea6..6f61f4ed3da091c91b34d9ef8b849048a51068ca 100644 (file)
@@ -288,6 +288,13 @@ fd6_sampler_view_create(struct pipe_context *pctx, struct pipe_resource *prsc,
                                        util_format_get_nblocksx(
                                                        format, rsc->slices[lvl].pitch) * rsc->cpp);
                so->offset = fd_resource_offset(rsc, lvl, cso->u.tex.first_layer);
+
+               so->ubwc_enabled = rsc->ubwc_size && u_minify(prsc->width0, lvl) >= 16;
+       }
+
+       if (so->ubwc_enabled) {
+               so->texconst9 |= A6XX_TEX_CONST_9_FLAG_BUFFER_PITCH(rsc->ubwc_size);
+               so->texconst10 |= A6XX_TEX_CONST_10_FLAG_BUFFER_ARRAY_PITCH(rsc->ubwc_pitch);
        }
 
        so->texconst2 |= A6XX_TEX_CONST_2_TYPE(fd6_tex_type(cso->target));