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

Marek Olšák maraeo at gmail.com
Mon Jun 18 23:33:08 UTC 2018


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



More information about the mesa-dev mailing list