mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-05 14:17:43 +00:00
drm/amd/display: Add refcount debug assert
Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> Signed-off-by: Jordan Lazare <Jordan.Lazare@amd.com> Signed-off-by: Tony Cheng <tony.cheng@amd.com> Reviewed-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> Reviewed-by: Jordan Lazare <Jordan.Lazare@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
8c737fcc24
commit
db96c69ee7
4 changed files with 21 additions and 7 deletions
|
@ -71,6 +71,7 @@ void dc_sink_retain(const struct dc_sink *dc_sink)
|
|||
{
|
||||
struct sink *sink = DC_SINK_TO_SINK(dc_sink);
|
||||
|
||||
ASSERT(sink->ref_count > 0);
|
||||
++sink->ref_count;
|
||||
}
|
||||
|
||||
|
@ -78,6 +79,7 @@ void dc_sink_release(const struct dc_sink *dc_sink)
|
|||
{
|
||||
struct sink *sink = DC_SINK_TO_SINK(dc_sink);
|
||||
|
||||
ASSERT(sink->ref_count > 0);
|
||||
--sink->ref_count;
|
||||
|
||||
if (sink->ref_count == 0) {
|
||||
|
@ -96,8 +98,7 @@ struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params)
|
|||
if (false == construct(sink, init_params))
|
||||
goto construct_fail;
|
||||
|
||||
/* TODO should we move this outside to where the assignment actually happens? */
|
||||
dc_sink_retain(&sink->protected.public);
|
||||
++sink->ref_count;
|
||||
|
||||
return &sink->protected.public;
|
||||
|
||||
|
|
|
@ -99,6 +99,8 @@ static void destruct(struct core_stream *stream)
|
|||
void dc_stream_retain(const struct dc_stream *dc_stream)
|
||||
{
|
||||
struct stream *stream = DC_STREAM_TO_STREAM(dc_stream);
|
||||
|
||||
ASSERT(stream->ref_count > 0);
|
||||
stream->ref_count++;
|
||||
}
|
||||
|
||||
|
@ -108,6 +110,7 @@ void dc_stream_release(const struct dc_stream *public)
|
|||
struct core_stream *protected = DC_STREAM_TO_CORE(public);
|
||||
|
||||
if (public != NULL) {
|
||||
ASSERT(stream->ref_count > 0);
|
||||
stream->ref_count--;
|
||||
|
||||
if (stream->ref_count == 0) {
|
||||
|
@ -134,7 +137,7 @@ struct dc_stream *dc_create_stream_for_sink(
|
|||
if (false == construct(&stream->protected, dc_sink))
|
||||
goto construct_fail;
|
||||
|
||||
dc_stream_retain(&stream->protected.public);
|
||||
stream->ref_count++;
|
||||
|
||||
return &stream->protected.public;
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ struct dc_surface *dc_create_surface(const struct dc *dc)
|
|||
if (false == construct(core_dc->ctx, surface))
|
||||
goto construct_fail;
|
||||
|
||||
dc_surface_retain(&surface->protected.public);
|
||||
++surface->ref_count;
|
||||
|
||||
return &surface->protected.public;
|
||||
|
||||
|
@ -162,6 +162,7 @@ void dc_surface_retain(const struct dc_surface *dc_surface)
|
|||
{
|
||||
struct surface *surface = DC_SURFACE_TO_SURFACE(dc_surface);
|
||||
|
||||
ASSERT(surface->ref_count > 0);
|
||||
++surface->ref_count;
|
||||
}
|
||||
|
||||
|
@ -169,6 +170,7 @@ void dc_surface_release(const struct dc_surface *dc_surface)
|
|||
{
|
||||
struct surface *surface = DC_SURFACE_TO_SURFACE(dc_surface);
|
||||
|
||||
ASSERT(surface->ref_count > 0);
|
||||
--surface->ref_count;
|
||||
|
||||
if (surface->ref_count == 0) {
|
||||
|
@ -181,12 +183,15 @@ void dc_gamma_retain(const struct dc_gamma *dc_gamma)
|
|||
{
|
||||
struct gamma *gamma = DC_GAMMA_TO_GAMMA(dc_gamma);
|
||||
|
||||
ASSERT(gamma->ref_count > 0);
|
||||
++gamma->ref_count;
|
||||
}
|
||||
|
||||
void dc_gamma_release(const struct dc_gamma *dc_gamma)
|
||||
{
|
||||
struct gamma *gamma = DC_GAMMA_TO_GAMMA(dc_gamma);
|
||||
|
||||
ASSERT(gamma->ref_count > 0);
|
||||
--gamma->ref_count;
|
||||
|
||||
if (gamma->ref_count == 0)
|
||||
|
@ -200,7 +205,7 @@ struct dc_gamma *dc_create_gamma()
|
|||
if (gamma == NULL)
|
||||
goto alloc_fail;
|
||||
|
||||
dc_gamma_retain(&gamma->protected.public);
|
||||
++gamma->ref_count;
|
||||
|
||||
return &gamma->protected.public;
|
||||
|
||||
|
@ -212,12 +217,15 @@ void dc_transfer_func_retain(const struct dc_transfer_func *dc_tf)
|
|||
{
|
||||
struct transfer_func *tf = DC_TRANSFER_FUNC_TO_TRANSFER_FUNC(dc_tf);
|
||||
|
||||
ASSERT(tf->ref_count > 0);
|
||||
++tf->ref_count;
|
||||
}
|
||||
|
||||
void dc_transfer_func_release(const struct dc_transfer_func *dc_tf)
|
||||
{
|
||||
struct transfer_func *tf = DC_TRANSFER_FUNC_TO_TRANSFER_FUNC(dc_tf);
|
||||
|
||||
ASSERT(tf->ref_count > 0);
|
||||
--tf->ref_count;
|
||||
|
||||
if (tf->ref_count == 0)
|
||||
|
@ -231,7 +239,7 @@ struct dc_transfer_func *dc_create_transfer_func()
|
|||
if (tf == NULL)
|
||||
goto alloc_fail;
|
||||
|
||||
dc_transfer_func_retain(&tf->protected.public);
|
||||
++tf->ref_count;
|
||||
|
||||
return &tf->protected.public;
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ void dc_target_retain(const struct dc_target *dc_target)
|
|||
{
|
||||
struct target *target = DC_TARGET_TO_TARGET(dc_target);
|
||||
|
||||
ASSERT(target->ref_count > 0);
|
||||
target->ref_count++;
|
||||
}
|
||||
|
||||
|
@ -81,6 +82,7 @@ void dc_target_release(const struct dc_target *dc_target)
|
|||
|
||||
ASSERT(target->ref_count > 0);
|
||||
target->ref_count--;
|
||||
|
||||
if (target->ref_count == 0) {
|
||||
destruct(protected);
|
||||
dm_free(target);
|
||||
|
@ -120,7 +122,7 @@ struct dc_target *dc_create_target_for_streams(
|
|||
|
||||
construct(&target->protected, stream->ctx, dc_streams, stream_count);
|
||||
|
||||
dc_target_retain(&target->protected.public);
|
||||
target->ref_count++;
|
||||
|
||||
return &target->protected.public;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue