drm/amd/display: Refactor dc_state creation into a function.

For less repetition and easy debugging.

Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Leo (Sunpeng) Li 2017-09-07 16:46:34 -04:00 committed by Alex Deucher
parent 1dc904974e
commit 81c90ec034
3 changed files with 15 additions and 9 deletions

View File

@ -702,13 +702,11 @@ dm_atomic_state_alloc(struct drm_device *dev)
goto fail;
/* copy existing configuration */
new_ctx = dm_alloc(sizeof(*new_ctx));
new_ctx = dc_create_state();
if (!new_ctx)
goto fail;
atomic_inc(&new_ctx->ref_count);
dc_resource_validate_ctx_copy_construct_current(dc, new_ctx);
state->context = new_ctx;

View File

@ -497,15 +497,13 @@ static bool construct(struct dc *dc,
goto fail;
}
dc->current_context = dm_alloc(sizeof(*dc->current_context));
dc->current_context = dc_create_state();
if (!dc->current_context) {
dm_error("%s: failed to create validate ctx\n", __func__);
goto fail;
}
atomic_inc(&dc->current_context->ref_count);
dc_ctx->cgs_device = init_params->cgs_device;
dc_ctx->driver_context = init_params->driver;
dc_ctx->dc = dc;
@ -1162,6 +1160,17 @@ bool dc_commit_planes_to_stream(
return true;
}
struct validate_context *dc_create_state(void)
{
struct validate_context *context = dm_alloc(sizeof(struct validate_context));
if (!context)
return NULL;
atomic_inc(&context->ref_count);
return context;
}
void dc_retain_validate_context(struct validate_context *context)
{
ASSERT(atomic_read(&context->ref_count) > 0);
@ -1442,12 +1451,10 @@ void dc_update_planes_and_stream(struct dc *dc,
new_planes[i] = srf_updates[i].surface;
/* initialize scratch memory for building context */
context = dm_alloc(sizeof(*context));
context = dc_create_state();
if (context == NULL)
goto context_alloc_fail;
atomic_inc(&context->ref_count);
dc_resource_validate_ctx_copy_construct(
core_dc->current_context, context);

View File

@ -732,6 +732,7 @@ enum surface_update_type dc_check_update_surfaces_for_stream(
const struct dc_stream_status *stream_status);
struct validate_context *dc_create_state(void);
void dc_retain_validate_context(struct validate_context *context);
void dc_release_validate_context(struct validate_context *context);