Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a6c4af6 authored by Harry Wentland's avatar Harry Wentland Committed by Alex Deucher
Browse files

drm/amd/display: Roll core_gamma into dc_gamma

parent 0b0aab86
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -1500,12 +1500,10 @@ void dc_update_surfaces_and_stream(struct dc *dc,
		if (srf_updates[i].gamma &&
			srf_updates[i].gamma != surface->gamma_correction) {
			if (surface->gamma_correction != NULL)
				dc_gamma_release(&surface->
						gamma_correction);
				dc_gamma_release(&surface->gamma_correction);

			dc_gamma_retain(srf_updates[i].gamma);
			surface->gamma_correction =
						srf_updates[i].gamma;
			surface->gamma_correction = srf_updates[i].gamma;
		}

		if (srf_updates[i].in_transfer_func &&
+9 −13
Original line number Diff line number Diff line
@@ -137,37 +137,33 @@ void dc_surface_release(struct dc_surface *surface)
	}
}

void dc_gamma_retain(const struct dc_gamma *dc_gamma)
void dc_gamma_retain(struct dc_gamma *gamma)
{
	struct core_gamma *gamma = DC_GAMMA_TO_CORE(dc_gamma);

	ASSERT(gamma->ref_count > 0);
	++gamma->ref_count;
}

void dc_gamma_release(const struct dc_gamma **dc_gamma)
void dc_gamma_release(struct dc_gamma **gamma)
{
	struct core_gamma *gamma = DC_GAMMA_TO_CORE(*dc_gamma);

	ASSERT(gamma->ref_count > 0);
	--gamma->ref_count;
	ASSERT((*gamma)->ref_count > 0);
	--(*gamma)->ref_count;

	if (gamma->ref_count == 0)
		dm_free(gamma);
	if ((*gamma)->ref_count == 0)
		dm_free((*gamma));

	*dc_gamma = NULL;
	*gamma = NULL;
}

struct dc_gamma *dc_create_gamma()
{
	struct core_gamma *gamma = dm_alloc(sizeof(*gamma));
	struct dc_gamma *gamma = dm_alloc(sizeof(*gamma));

	if (gamma == NULL)
		goto alloc_fail;

	++gamma->ref_count;

	return &gamma->public;
	return gamma;

alloc_fail:
	return NULL;
+3 −3
Original line number Diff line number Diff line
@@ -326,7 +326,7 @@ struct dc_surface {
	struct dc_plane_dcc_param dcc;
	struct dc_hdr_static_metadata hdr_static_ctx;

	const struct dc_gamma *gamma_correction;
	struct dc_gamma *gamma_correction;
	struct dc_transfer_func *in_transfer_func;

	enum dc_color_space color_space;
@@ -394,8 +394,8 @@ const struct dc_surface_status *dc_surface_get_status(
void dc_surface_retain(struct dc_surface *dc_surface);
void dc_surface_release(struct dc_surface *dc_surface);

void dc_gamma_retain(const struct dc_gamma *dc_gamma);
void dc_gamma_release(const struct dc_gamma **dc_gamma);
void dc_gamma_retain(struct dc_gamma *dc_gamma);
void dc_gamma_release(struct dc_gamma **dc_gamma);
struct dc_gamma *dc_create_gamma(void);

void dc_transfer_func_retain(struct dc_transfer_func *dc_tf);
+7 −0
Original line number Diff line number Diff line
@@ -415,6 +415,13 @@ struct dc_gamma {
	uint16_t red[INPUT_LUT_ENTRIES];
	uint16_t green[INPUT_LUT_ENTRIES];
	uint16_t blue[INPUT_LUT_ENTRIES];

	/* private to DC core */
	struct dc_context *ctx;

	/* private to dc_surface.c */
	int ref_count;

};

/* Used by both ipp amd opp functions*/
+0 −11
Original line number Diff line number Diff line
@@ -40,17 +40,6 @@ struct core_stream;

#define MAX_CLOCK_SOURCES 7

#define DC_GAMMA_TO_CORE(dc_gamma) \
	container_of(dc_gamma, struct core_gamma, public)

struct core_gamma {
	struct dc_gamma public;
	struct dc_context *ctx;

	/* private to dc_surface.c */
	int ref_count;
};

void enable_surface_flip_reporting(struct dc_surface *dc_surface,
		uint32_t controller_id);