AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Harry Wentland <harry.wentland-5C7GfCeVMHo@public.gmane.org>
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Anthony Koo <Anthony.Koo-5C7GfCeVMHo@public.gmane.org>
Subject: [PATCH 31/32] drm/amd/display: Have DC manage its own allocation of gamma
Date: Tue, 3 Apr 2018 21:27:46 -0400	[thread overview]
Message-ID: <20180404012747.5651-32-harry.wentland@amd.com> (raw)
In-Reply-To: <20180404012747.5651-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>

From: Anthony Koo <Anthony.Koo@amd.com>

Creating plane will also allocate gamma and input TF
Creating stream will also allocate outputTF

Fix issue with gamma not applied
OS may call SetGamma before surface committed, so need to store
in target and apply later.

Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c         | 6 ++----
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c           | 6 ++++--
 drivers/gpu/drm/amd/display/dc/core/dc_surface.c          | 8 +++++++-
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 5 ++---
 4 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 9af4c07c2ce3..a3ca21be978d 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -2242,7 +2242,6 @@ fill_stream_properties_from_drm_display_mode(struct dc_stream_state *stream,
 					     const struct drm_connector *connector)
 {
 	struct dc_crtc_timing *timing_out = &stream->timing;
-	struct dc_transfer_func *tf = dc_create_transfer_func();
 
 	memset(timing_out, 0, sizeof(struct dc_crtc_timing));
 
@@ -2286,9 +2285,8 @@ fill_stream_properties_from_drm_display_mode(struct dc_stream_state *stream,
 
 	stream->output_color_space = get_output_color_space(timing_out);
 
-	tf->type = TF_TYPE_PREDEFINED;
-	tf->tf = TRANSFER_FUNCTION_SRGB;
-	stream->out_transfer_func = tf;
+	stream->out_transfer_func->type = TF_TYPE_PREDEFINED;
+	stream->out_transfer_func->tf = TRANSFER_FUNCTION_SRGB;
 }
 
 static void fill_audio_info(struct audio_info *audio_info,
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index ce0747ed0f00..3b2ddbd8c054 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -101,14 +101,16 @@ static void construct(struct dc_stream_state *stream,
 	stream->status.link = stream->sink->link;
 
 	update_stream_signal(stream);
+
+	stream->out_transfer_func = dc_create_transfer_func();
+	stream->out_transfer_func->type = TF_TYPE_BYPASS;
 }
 
 static void destruct(struct dc_stream_state *stream)
 {
 	dc_sink_release(stream->sink);
 	if (stream->out_transfer_func != NULL) {
-		dc_transfer_func_release(
-				stream->out_transfer_func);
+		dc_transfer_func_release(stream->out_transfer_func);
 		stream->out_transfer_func = NULL;
 	}
 }
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
index ade5b8ee9c3c..959387705965 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
@@ -38,6 +38,12 @@
 static void construct(struct dc_context *ctx, struct dc_plane_state *plane_state)
 {
 	plane_state->ctx = ctx;
+
+	plane_state->gamma_correction = dc_create_gamma();
+	plane_state->gamma_correction->is_identity = true;
+
+	plane_state->in_transfer_func = dc_create_transfer_func();
+	plane_state->in_transfer_func->type = TF_TYPE_BYPASS;
 }
 
 static void destruct(struct dc_plane_state *plane_state)
@@ -175,7 +181,7 @@ void dc_transfer_func_release(struct dc_transfer_func *tf)
 	kref_put(&tf->refcount, dc_transfer_func_free);
 }
 
-struct dc_transfer_func *dc_create_transfer_func(void)
+struct dc_transfer_func *dc_create_transfer_func()
 {
 	struct dc_transfer_func *tf = kzalloc(sizeof(*tf), GFP_KERNEL);
 
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
index dfa6ad5078b2..1f59b27e611a 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
@@ -971,9 +971,8 @@ static bool dcn10_set_input_transfer_func(struct pipe_ctx *pipe_ctx,
 		tf = plane_state->in_transfer_func;
 
 	if (plane_state->gamma_correction &&
-		plane_state->gamma_correction->is_identity)
-		dpp_base->funcs->dpp_set_degamma(dpp_base, IPP_DEGAMMA_MODE_BYPASS);
-	else if (plane_state->gamma_correction && dce_use_lut(plane_state->format))
+		!plane_state->gamma_correction->is_identity
+			&& dce_use_lut(plane_state->format))
 		dpp_base->funcs->dpp_program_input_lut(dpp_base, plane_state->gamma_correction);
 
 	if (tf == NULL)
-- 
2.15.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2018-04-04  1:27 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-04  1:27 [PATCH 00/32] DC Patches Apr 3, 2018 Harry Wentland
     [not found] ` <20180404012747.5651-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>
2018-04-04  1:27   ` [PATCH 01/32] drm/amd/display: Only register backlight device if embedded panel connected Harry Wentland
2018-04-04  1:27   ` [PATCH 02/32] drm/amd/display: Don't register backlight on connector_destroy Harry Wentland
2018-04-04  1:27   ` [PATCH 03/32] drm/amd/display: Program v_total_min/max after v_total_cntl Harry Wentland
2018-04-04  1:27   ` [PATCH 04/32] drm/amd/display: Set ignore_msa_timing_param Harry Wentland
2018-04-04  1:27   ` [PATCH 05/32] drm/amd/display: Non-HDMI DP active dongle should not support YUV pixel format Harry Wentland
2018-04-04  1:27   ` [PATCH 06/32] drm/amd/display: Fix potential access beyond end of array in CM Harry Wentland
2018-04-04  1:27   ` [PATCH 07/32] drm/amd/display: Add Dynamic debug prints Harry Wentland
2018-04-04  1:27   ` [PATCH 08/32] drm/amd/display: Add vmax/min_sel prints to dcn10_log_hw_state Harry Wentland
2018-04-04  1:27   ` [PATCH 09/32] drm/amd/display: Implement dm_get_timestamp Harry Wentland
2018-04-04  1:27   ` [PATCH 10/32] drm/amd/display: add delay between panel pwr off to on Harry Wentland
2018-04-04  1:27   ` [PATCH 11/32] drm/amd/display: Set all update flags when we have full update Harry Wentland
2018-04-04  1:27   ` [PATCH 12/32] drm/amd/display: Refactor FreeSync module Harry Wentland
2018-04-04  1:27   ` [PATCH 13/32] drm/amd/display: Refactor stream encoder for HW review Harry Wentland
2018-04-04  1:27   ` [PATCH 14/32] drm/amd/display: remove unused enum Harry Wentland
2018-04-04  1:27   ` [PATCH 15/32] drm/amd/display: fix link bw calculation for 422 and 420 encoding Harry Wentland
2018-04-04  1:27   ` [PATCH 16/32] drm/amd/display: Fill calcs date from stream src/dst if available Harry Wentland
2018-04-04  1:27   ` [PATCH 17/32] drm/amd/display: Change disable backlight ramp change threshold from 0 to maximum value Harry Wentland
2018-04-04  1:27   ` [PATCH 18/32] drm/amd/display: Update scaler v_active data if interlaced Harry Wentland
2018-04-04  1:27   ` [PATCH 19/32] drm/amd/display: Make DCN stream encoder shareable Harry Wentland
2018-04-04  1:27   ` [PATCH 20/32] drm/amd/display: csc updates require FULL update Harry Wentland
2018-04-04  1:27   ` [PATCH 21/32] drm/amd/display: Fix FBC text console corruption Harry Wentland
2018-04-04  1:27   ` [PATCH 22/32] drm/amd/display: dal 3.1.41 Harry Wentland
2018-04-04  1:27   ` [PATCH 23/32] drm/amd/display: Updated HDR Static Metadata to directly take info packet raw Harry Wentland
2018-04-04  1:27   ` [PATCH 24/32] drm/amd/display: Get rid of unused input_tf Harry Wentland
2018-04-04  1:27   ` [PATCH 25/32] drm/amd/display: Remove unused fields Harry Wentland
2018-04-04  1:27   ` [PATCH 26/32] drm/amd/display: Do not use os types Harry Wentland
2018-04-04  1:27   ` [PATCH 27/32] drm/amd/display: csc_transform to dc_csc_transform Harry Wentland
2018-04-04  1:27   ` [PATCH 28/32] drm/amd/display: Refactor color module Harry Wentland
2018-04-04  1:27   ` [PATCH 29/32] drm/amd/display: move color_transfer_func to color mod Harry Wentland
2018-04-04  1:27   ` [PATCH 30/32] drm/amd/display: Fix structure initialization of hdmi_info_packet Harry Wentland
2018-04-04  1:27   ` Harry Wentland [this message]
2018-04-04  1:27   ` [PATCH 32/32] drm/amd/display: Fix dim display on DCE11 Harry Wentland
     [not found]     ` <20180404012747.5651-33-harry.wentland-5C7GfCeVMHo@public.gmane.org>
2018-04-04  7:18       ` Michel Dänzer
2018-04-04 15:17       ` Deucher, Alexander
     [not found]         ` <BN6PR12MB18095513D4EAE9751423B742F7A40-/b2+HYfkarSEx6ez0IUAagdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-04-06 20:18           ` Leo Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180404012747.5651-32-harry.wentland@amd.com \
    --to=harry.wentland-5c7gfcevmho@public.gmane.org \
    --cc=Anthony.Koo-5C7GfCeVMHo@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox