mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 22:50:08 +01:00
gallium/radeon: add and use r600_texture_reference
Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Vedran Miletić <vedran@miletic.net> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
6da92df538
commit
36cf5a57c2
5 changed files with 13 additions and 10 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 ||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue