From 36cf5a57c2b53b50778482f7341b7afcdc434daf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 21 Jun 2016 21:17:44 +0200 Subject: [PATCH] gallium/radeon: add and use r600_texture_reference MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Alex Deucher Reviewed-by: Vedran Miletić Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/r600/r600_uvd.c | 2 +- src/gallium/drivers/radeon/r600_pipe_common.c | 3 +-- src/gallium/drivers/radeon/r600_pipe_common.h | 6 ++++++ src/gallium/drivers/radeon/r600_texture.c | 10 ++++------ src/gallium/drivers/radeonsi/si_uvd.c | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/r600/r600_uvd.c b/src/gallium/drivers/r600/r600_uvd.c index 628ba2a4fe1..f1b1ca8113c 100644 --- a/src/gallium/drivers/r600/r600_uvd.c +++ b/src/gallium/drivers/r600/r600_uvd.c @@ -131,7 +131,7 @@ struct pipe_video_buffer *r600_video_buffer_create(struct pipe_context *pipe, error: for (i = 0; i < VL_NUM_COMPONENTS; ++i) - pipe_resource_reference((struct pipe_resource **)&resources[i], NULL); + r600_texture_reference(&resources[i], NULL); return NULL; } diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index 1a892ab91e3..6b701b6cdd4 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -483,8 +483,7 @@ void r600_common_context_cleanup(struct r600_common_context *rctx) rctx->b.destroy_query(&rctx->b, rctx->dcc_stats[i].ps_stats[j]); - pipe_resource_reference((struct pipe_resource**) - &rctx->dcc_stats[i].tex, NULL); + r600_texture_reference(&rctx->dcc_stats[i].tex, NULL); } if (rctx->gfx.cs) diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h index 5fee6582165..203d863f267 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.h +++ b/src/gallium/drivers/radeon/r600_pipe_common.h @@ -794,6 +794,12 @@ r600_resource_reference(struct r600_resource **ptr, struct r600_resource *res) (struct pipe_resource *)res); } +static inline void +r600_texture_reference(struct r600_texture **ptr, struct r600_texture *res) +{ + pipe_resource_reference((struct pipe_resource **)ptr, &res->resource.b.b); +} + static inline bool r600_get_strmout_en(struct r600_common_context *rctx) { return rctx->streamout.streamout_enabled || diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index 13ade4417b1..d7ff2f77c33 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -479,7 +479,7 @@ static void r600_degrade_tile_mode_to_linear(struct r600_common_context *rctx, assert(!rtex->dcc_offset); assert(!rtex->is_depth); - pipe_resource_reference((struct pipe_resource**)&new_tex, NULL); + r600_texture_reference(&new_tex, NULL); r600_dirty_all_framebuffer_states(rctx->screen); p_atomic_inc(&rctx->screen->dirty_tex_descriptor_counter); @@ -561,7 +561,7 @@ static void r600_texture_destroy(struct pipe_screen *screen, struct r600_resource *resource = &rtex->resource; if (rtex->flushed_depth_texture) - pipe_resource_reference((struct pipe_resource **)&rtex->flushed_depth_texture, NULL); + r600_texture_reference(&rtex->flushed_depth_texture, NULL); r600_resource_reference(&rtex->htile_buffer, NULL); if (rtex->cmask_buffer != &rtex->resource) { @@ -1759,14 +1759,12 @@ static unsigned vi_get_context_dcc_stats_index(struct r600_common_context *rctx, rctx->dcc_stats[oldest_slot].ps_stats[i] = NULL; } - pipe_resource_reference((struct pipe_resource**) - &rctx->dcc_stats[oldest_slot].tex, NULL); + r600_texture_reference(&rctx->dcc_stats[oldest_slot].tex, NULL); empty_slot = oldest_slot; } /* Add the texture to the new slot. */ - pipe_resource_reference((struct pipe_resource**)&rctx->dcc_stats[empty_slot].tex, - &tex->resource.b.b); + r600_texture_reference(&rctx->dcc_stats[empty_slot].tex, tex); rctx->dcc_stats[empty_slot].last_use_timestamp = os_time_get(); return empty_slot; } diff --git a/src/gallium/drivers/radeonsi/si_uvd.c b/src/gallium/drivers/radeonsi/si_uvd.c index 8c3e5fd865d..0d5bc378b2b 100644 --- a/src/gallium/drivers/radeonsi/si_uvd.c +++ b/src/gallium/drivers/radeonsi/si_uvd.c @@ -113,7 +113,7 @@ struct pipe_video_buffer *si_video_buffer_create(struct pipe_context *pipe, error: for (i = 0; i < VL_NUM_COMPONENTS; ++i) - pipe_resource_reference((struct pipe_resource **)&resources[i], NULL); + r600_texture_reference(&resources[i], NULL); return NULL; } -- 2.30.2