Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1837223imd; Sun, 4 Nov 2018 10:29:57 -0800 (PST) X-Google-Smtp-Source: AJdET5c68UxmorAgn/z0CLqkf93oIuo84gULB0QU5otNi/auRISwd/BxIsgUT+A4vxqoewhmyCsG X-Received: by 2002:a62:380e:: with SMTP id f14-v6mr19120880pfa.203.1541356197561; Sun, 04 Nov 2018 10:29:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541356197; cv=none; d=google.com; s=arc-20160816; b=maESdAcgfbA2J1YM5GrI0DNqLFv+Aa2jvbrPIC6ph+QN1rfh6VmbNB1M2UMarcqzj8 CZZXc+CnIHoNFBF/yNRPNg9uqokl2f8/ZcrVEI9ZVEZIDDqGdywniK+P+DLFHgBZ+Gff F6CIldNOgxQt3YH5qQZ7l1LKXHa9Xtxpkmyy2Gq5bwIKN1c3U9qC6C9Mildo+RMNsynf D3VFIlsHZGWL6m3bTBGbbVrV9aiLPmGKSG8mEJ8EicyqnS4FVf7rzveZWDUN4E6Vgy9x xUvp57UCRIMJUYiurIn/kgOnaBujltIVwORvP/HC44ZocfdES0gS+Q5PWjkimGIENpEC d2tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=5rvf1IH71w+KELsIWWH0wP0/gUNN6msEua30NoRFshw=; b=FjvyR47cUEuBJTj+94I6euyyj9AzFdMSC1IS0QFmGViWltmzDqmPTJ+ZjnOo708u9W vqq8Wp5TDFr8KsdGPGVYmxWXRWIBlwSpceubaU0XRtWeEWwcJhLmBleoZ/KZnEDhEyhI LwfD33HX/dtWUqpuaB7zemTI4asMIwMsbZyw86q+iCiL1oTBXLVRVY+3MA8+ng+7MnGG kUEOKeePktGMg6UqWiWZOJ7Ovu19mWQ/M6yO8i+zjrsMDkE5HLvhWQMHPM4irA0/ocUJ jj2dC7D7MdT5/6jBcttaBcQixvb7WorevoT73cpaBCnmEb0P7N+blnedQ8npVb+5oZ5q m9kw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=aKulzHhp; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a34-v6si32478975pld.249.2018.11.04.10.29.42; Sun, 04 Nov 2018 10:29:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=aKulzHhp; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730990AbeKDXVl (ORCPT + 99 others); Sun, 4 Nov 2018 18:21:41 -0500 Received: from mail.kernel.org ([198.145.29.99]:45058 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730261AbeKDXHW (ORCPT ); Sun, 4 Nov 2018 18:07:22 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EDFD42086C; Sun, 4 Nov 2018 13:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541339538; bh=c9cVPQRRFslEX79ZXWU590g0w+BcNTU3J/dDUhaiRKo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aKulzHhpW+YnUspEnXp62U0zuHhG38QV+7eOlfFHlClmhRLgpkwgySk7SFk0B+RkE RYJP/l+Sz6Q5j8yvkDeLlgh2ZBijYwL7ITtXAcxDgwunfwPrAZUoRQmx/ZpN/9U+WR RlE/7r+vcjYnFXxDU8X8OtrZfD6IsVuH1WFrZJNc= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: SivapiriyanKumarasamy , Alex Deucher , Sasha Levin Subject: [PATCH AUTOSEL 4.19 33/57] drm/amd/display: fix gamma not being applied Date: Sun, 4 Nov 2018 08:51:20 -0500 Message-Id: <20181104135144.88324-33-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181104135144.88324-1-sashal@kernel.org> References: <20181104135144.88324-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: SivapiriyanKumarasamy [ Upstream commit 30049754ab7c4b6148dd3cd64af7d54850604582 ] [WHY] Previously night light forced a full update by applying a transfer function update regardless of if it was changed. This logic was removed, Now gamma surface updates are only applied when there is also a plane info update, this does not work in cases such as using the night light slider. [HOW] When moving the night light slider we will perform a full update if the gamma has changed and there is a surface, even when the surface has not changed. Also get stream updates in setgamma prior to update planes and stream. Signed-off-by: SivapiriyanKumarasamy Reviewed-by: Anthony Koo Acked-by: Bhawanpreet Lakha Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/display/dc/core/dc.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index 6ae050dc3220..9045e6fa0780 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -1120,9 +1120,6 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa */ update_flags->bits.bpp_change = 1; - if (u->gamma && dce_use_lut(u->plane_info->format)) - update_flags->bits.gamma_change = 1; - if (memcmp(&u->plane_info->tiling_info, &u->surface->tiling_info, sizeof(union dc_tiling_info)) != 0) { update_flags->bits.swizzle_change = 1; @@ -1139,7 +1136,6 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa if (update_flags->bits.rotation_change || update_flags->bits.stereo_format_change || update_flags->bits.pixel_format_change - || update_flags->bits.gamma_change || update_flags->bits.bpp_change || update_flags->bits.bandwidth_change || update_flags->bits.output_tf_change) @@ -1229,13 +1225,26 @@ static enum surface_update_type det_surface_update(const struct dc *dc, if (u->coeff_reduction_factor) update_flags->bits.coeff_reduction_change = 1; + if (u->gamma) { + enum surface_pixel_format format = SURFACE_PIXEL_FORMAT_GRPH_BEGIN; + + if (u->plane_info) + format = u->plane_info->format; + else if (u->surface) + format = u->surface->format; + + if (dce_use_lut(format)) + update_flags->bits.gamma_change = 1; + } + if (update_flags->bits.in_transfer_func_change) { type = UPDATE_TYPE_MED; elevate_update_type(&overall_type, type); } if (update_flags->bits.input_csc_change - || update_flags->bits.coeff_reduction_change) { + || update_flags->bits.coeff_reduction_change + || update_flags->bits.gamma_change) { type = UPDATE_TYPE_FULL; elevate_update_type(&overall_type, type); } -- 2.17.1