Commit 81c90ec0 authored by Leo (Sunpeng) Li's avatar Leo (Sunpeng) Li Committed by Alex Deucher
Browse files

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



For less repetition and easy debugging.

Signed-off-by: default avatarLeo (Sunpeng) Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 1dc90497
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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;
+13 −6
Original line number Diff line number Diff line
@@ -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);

+1 −0
Original line number Diff line number Diff line
@@ -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);