[Mesa-dev] [PATCH 07/11] radeonsi: reorder and initialize more fields in si_reallocate_texture_inplace

Dylan Baker dylan at pnwbakers.com
Tue Jun 26 15:57:17 UTC 2018


Quoting Marek Olšák (2018-06-18 16:33:08)
> From: Marek Olšák <marek.olsak at amd.com>
> 
> Some fields shouldn't be initialized, like framebuffers_bound and other stats.
> It's hopefully complete now.
> 
> Cc: 18.1 <mesa-stable at lists.freedesktop.org>
> ---
>  src/gallium/drivers/radeonsi/si_texture.c | 31 ++++++++++++++++++-----
>  1 file changed, 25 insertions(+), 6 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c
> index 2103134156d..e1afe71a3c7 100644
> --- a/src/gallium/drivers/radeonsi/si_texture.c
> +++ b/src/gallium/drivers/radeonsi/si_texture.c
> @@ -552,36 +552,55 @@ static void si_reallocate_texture_inplace(struct si_context *sctx,
>         /* Replace the structure fields of rtex. */
>         rtex->buffer.b.b.bind = templ.bind;
>         pb_reference(&rtex->buffer.buf, new_tex->buffer.buf);
>         rtex->buffer.gpu_address = new_tex->buffer.gpu_address;
>         rtex->buffer.vram_usage = new_tex->buffer.vram_usage;
>         rtex->buffer.gart_usage = new_tex->buffer.gart_usage;
>         rtex->buffer.bo_size = new_tex->buffer.bo_size;
>         rtex->buffer.bo_alignment = new_tex->buffer.bo_alignment;
>         rtex->buffer.domains = new_tex->buffer.domains;
>         rtex->buffer.flags = new_tex->buffer.flags;
> -       rtex->size = new_tex->size;
> -       rtex->db_render_format = new_tex->db_render_format;
> -       rtex->db_compatible = new_tex->db_compatible;
> -       rtex->can_sample_z = new_tex->can_sample_z;
> -       rtex->can_sample_s = new_tex->can_sample_s;
> +
>         rtex->surface = new_tex->surface;
> +       rtex->size = new_tex->size;
> +       r600_texture_reference(&rtex->flushed_depth_texture,
> +                              new_tex->flushed_depth_texture);
> +
>         rtex->fmask_offset = new_tex->fmask_offset;
>         rtex->cmask = new_tex->cmask;
> +       r600_resource_reference(&rtex->cmask_buffer, new_tex->cmask_buffer);
> +       rtex->dcc_offset = new_tex->dcc_offset;
>         rtex->cb_color_info = new_tex->cb_color_info;
> +       memcpy(rtex->color_clear_value, new_tex->color_clear_value,
> +              sizeof(rtex->color_clear_value));
>         rtex->last_msaa_resolve_target_micro_mode = new_tex->last_msaa_resolve_target_micro_mode;
> +
>         rtex->htile_offset = new_tex->htile_offset;
> +       rtex->depth_clear_value = new_tex->depth_clear_value;
> +       rtex->dirty_level_mask = new_tex->dirty_level_mask;
> +       rtex->stencil_dirty_level_mask = new_tex->stencil_dirty_level_mask;
> +       rtex->db_render_format = new_tex->db_render_format;
> +       rtex->stencil_clear_value = new_tex->stencil_clear_value;
>         rtex->tc_compatible_htile = new_tex->tc_compatible_htile;
>         rtex->depth_cleared = new_tex->depth_cleared;
>         rtex->stencil_cleared = new_tex->stencil_cleared;
> +       rtex->upgraded_depth = new_tex->upgraded_depth;
> +       rtex->db_compatible = new_tex->db_compatible;
> +       rtex->can_sample_z = new_tex->can_sample_z;
> +       rtex->can_sample_s = new_tex->can_sample_s;
> +
> +       rtex->separate_dcc_dirty = new_tex->separate_dcc_dirty;
>         rtex->dcc_gather_statistics = new_tex->dcc_gather_statistics;
> -       rtex->framebuffers_bound = new_tex->framebuffers_bound;
> +       r600_resource_reference(&rtex->dcc_separate_buffer,
> +                               new_tex->dcc_separate_buffer);
> +       r600_resource_reference(&rtex->last_dcc_separate_buffer,
> +                               new_tex->last_dcc_separate_buffer);
>  
>         if (new_bind_flag == PIPE_BIND_LINEAR) {
>                 assert(!rtex->htile_offset);
>                 assert(!rtex->cmask.size);
>                 assert(!rtex->surface.fmask_size);
>                 assert(!rtex->dcc_offset);
>                 assert(!rtex->is_depth);
>         }
>  
>         r600_texture_reference(&new_tex, NULL);
> -- 
> 2.17.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Hi Marek,

This doesn't apply cleanly to 18.1. It relies on at least
1ba87f4438069964af6548f4fa05386be999f4de, which is massive and also doesn't
apply cleanly. What would you like to do?

Dylan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180626/fd6ec7ff/attachment.sig>


More information about the mesa-dev mailing list