diff options
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_texture.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c index a577778a9f1..ac50103a74b 100644 --- a/src/gallium/drivers/radeonsi/si_texture.c +++ b/src/gallium/drivers/radeonsi/si_texture.c @@ -574,7 +574,17 @@ static void si_reallocate_texture_inplace(struct si_context *sctx, tex->fmask_offset = new_tex->fmask_offset; tex->cmask_offset = new_tex->cmask_offset; tex->cmask_base_address_reg = new_tex->cmask_base_address_reg; - r600_resource_reference(&tex->cmask_buffer, new_tex->cmask_buffer); + + if (tex->cmask_buffer == &tex->buffer) + tex->cmask_buffer = NULL; + else + r600_resource_reference(&tex->cmask_buffer, NULL); + + if (new_tex->cmask_buffer == &new_tex->buffer) + tex->cmask_buffer = &tex->buffer; + else + r600_resource_reference(&tex->cmask_buffer, new_tex->cmask_buffer); + tex->dcc_offset = new_tex->dcc_offset; tex->cb_color_info = new_tex->cb_color_info; memcpy(tex->color_clear_value, new_tex->color_clear_value, |