From: Marek Olšák <marek.ol...@amd.com>

Some fields shouldn't be initialized, like framebuffers_bound and other stats.
It's hopefully complete now.

Cc: 18.1 <mesa-sta...@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to