Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp1778091pxb; Fri, 18 Feb 2022 15:29:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJx5/0Hpa9bcLkR6MmKyH3LT3H0offCZ0TZB1ljfsjCPbCA7AJmXj0OGvGYCBgVKHnVyreD3 X-Received: by 2002:a17:90b:4b92:b0:1b7:aca7:b2f3 with SMTP id lr18-20020a17090b4b9200b001b7aca7b2f3mr15033573pjb.169.1645226959973; Fri, 18 Feb 2022 15:29:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645226959; cv=none; d=google.com; s=arc-20160816; b=gH4tDSEnfIhdiMSKgb5ZgdKHdZ67YUZMUZr6TujYQNavPmO0lmDFfdrC3iuBc9GEOM urv1Jj8SMOagsRbUI1E3qCSwWPuDMovpNcKU/c9aPErabqyahYB7kvqKLHAkR7Aas94g aQoY6/q9GKrB41cvxcECwOzSltzzmPzh5oKFiXFGyGWBB8OcQUYOPlBeaKEM4KFsvAgo ldsg4+RMAxV13l/F9YHI0SPiROew8GnC8fBPmcs1ZwWA3kiYVyEkwqa55/YzAZSv9r3r HoUFzGRtPgGpdThyDu5o+8RUNPYcylcg+UVgufIkq7Kl5pn18zQgchhEhf1dXgKPzG34 /pEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=+/WSsmi40gdBLQGwlCJoTxpH6qkC2WHPubjqFNGJJQE=; b=xDGiDbMCIRWUeNp95HtyxWCqHcKaaT+nO4x9No1HNDSpnV5IO3DN95j6KDdygw9koe juHiLMnNcKY6t/Miuogz2mG1OIrqpxqfNQgcoAwP8LprBq403BN/wkU/amrQicim2LKd jdcZl1NPJQWiBvLvRyLaI4YRqwjHAeA/QPMHOs1kaQzTw7aR/2GaGTAjaT7V3PVUPg3v 5C7fLU5FdHf0bHXiLQTbQ9bhbDpVjfATEijBMXCtmOpfl+twec/QQQom1E30b1xSwQnS 5iE6W7sZQnD4lnta3JSuMJamOIdlcKZ9ZDHuW9Z2KEd4howeZBmPT6XEQyyFu/IXrzKl Itiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=lume7kaZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q16si3420942pfg.298.2022.02.18.15.28.51; Fri, 18 Feb 2022 15:29:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=lume7kaZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239873AbiBRVaF (ORCPT + 99 others); Fri, 18 Feb 2022 16:30:05 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:42758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235638AbiBRVaE (ORCPT ); Fri, 18 Feb 2022 16:30:04 -0500 Received: from alexa-out-sd-02.qualcomm.com (alexa-out-sd-02.qualcomm.com [199.106.114.39]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7C651162; Fri, 18 Feb 2022 13:29:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1645219786; x=1676755786; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=+/WSsmi40gdBLQGwlCJoTxpH6qkC2WHPubjqFNGJJQE=; b=lume7kaZAetSpJgTKrv07T3XnzBiDDexJ8oCPK7k0ddYTSwvVAJj3T72 IORjy2WxZwzPiNXDH2CMZQttqfoDK3/zlQ+hkYbskC33T0FAcLgUGyUiq k6jg2Ehm+5deYc1gEnQfZtj/dix5SK2IPPM8XW2vseovphgNmwC7lFDeO E=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-02.qualcomm.com with ESMTP; 18 Feb 2022 13:29:46 -0800 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg02-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Feb 2022 13:29:46 -0800 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Fri, 18 Feb 2022 13:29:45 -0800 Received: from [10.111.174.92] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Fri, 18 Feb 2022 13:29:43 -0800 Message-ID: <5b27912e-3e49-675e-86f5-ac6be8dc21c5@quicinc.com> Date: Fri, 18 Feb 2022 13:29:41 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [Freedreno] [REPOST PATCH v4 08/13] drm/msm/disp/dpu1: Don't use DSC with mode_3d Content-Language: en-US To: Dmitry Baryshkov , Vinod Koul CC: Jonathan Marek , David Airlie , , , "Abhinav Kumar" , Bjorn Andersson , Rob Clark , , Daniel Vetter , References: <20220210103423.271016-1-vkoul@kernel.org> <20220210103423.271016-9-vkoul@kernel.org> <67006cc4-3385-fe03-bb4d-58623729a8a8@quicinc.com> <4b89f5fe-0752-3c6a-3fb0-192f1f2e7b9e@quicinc.com> <9f1e2df6-4f28-1d91-7654-ff2d9339dfd9@linaro.org> From: Abhinav Kumar In-Reply-To: <9f1e2df6-4f28-1d91-7654-ff2d9339dfd9@linaro.org> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2/18/2022 1:21 PM, Dmitry Baryshkov wrote: > On 18/02/2022 23:46, Abhinav Kumar wrote: >> >> >> On 2/16/2022 11:12 PM, Dmitry Baryshkov wrote: >>> On 17/02/2022 09:33, Abhinav Kumar wrote: >>>> >>>> >>>> On 2/16/2022 10:10 PM, Vinod Koul wrote: >>>>> On 16-02-22, 19:11, Abhinav Kumar wrote: >>>>>> >>>>>> >>>>>> On 2/10/2022 2:34 AM, Vinod Koul wrote: >>>>>>> We cannot enable mode_3d when we are using the DSC. So pass >>>>>>> configuration to detect DSC is enabled and not enable mode_3d >>>>>>> when we are using DSC >>>>>>> >>>>>>> We add a helper dpu_encoder_helper_get_dsc() to detect dsc >>>>>>> enabled and pass this to .setup_intf_cfg() >>>>>>> >>>>>>> Signed-off-by: Vinod Koul >>>>>> >>>>>> We should not use 3D mux only when we use DSC merge topology. >>>>>> I agree that today we use only 2-2-1 topology for DSC which means >>>>>> its using >>>>>> DSC merge. >>>>>> >>>>>> But generalizing that 3D mux should not be used for DSC is not right. >>>>>> >>>>>> You can detect DSC merge by checking if there are two encoders and >>>>>> one >>>>>> interface in the topology and if so, you can disable 3D mux. >>>>> >>>>> Right now with DSC we disable that as suggested by Dmitry last time. >>>>> Whenever we introduce merge we should revisit this, for now this >>>>> should >>>>> suffice >>>>> >>>> >>>> Sorry I didnt follow. >>>> >>>> The topology which you are supporting today IS DSC merge 2-2-1. I >>>> didnt get what you mean by "whenever we introduce". >>>> >>>> I didnt follow Dmitry's comment either. >>>> >>>> "anybody adding support for SDE_RM_TOPOLOGY_DUALPIPE_3DMERGE_DSC >>>> handle this." >>>> >>>> 3D mux shouldnt be used when DSC merge is used. >>>> >>>> The topology Dmitry is referring to will not use DSC merge but you >>>> are using it here and thats why you had to make this patch in the >>>> first place. So I am not sure why would someone who uses 3D merge >>>> topology worry about DSC merge. Your patch is the one which deals >>>> with the topology in question. >>>> >>>> What I am suggesting is a small but necessary improvement to this >>>> patch. >>> >>> It seems that we can replace this patch by changing >>> dpu_encoder_helper_get_3d_blend_mode() to contain the following >>> condition (instead of the one present there). Does the following seem >>> correct to you: >>> >>> static inline enum dpu_3d_blend_mode >>> dpu_encoder_helper_get_3d_blend_mode( >>>                  struct dpu_encoder_phys *phys_enc) >>> { >>>          struct dpu_crtc_state *dpu_cstate; >>> >>>          if (!phys_enc || phys_enc->enable_state == DPU_ENC_DISABLING) >>>                  return BLEND_3D_NONE; >>> >>>          dpu_cstate = to_dpu_crtc_state(phys_enc->parent->crtc->state); >>> >>> +    /* Use merge_3d unless DSCMERGE topology is used */ >>>          if (phys_enc->split_role == ENC_ROLE_SOLO && >>> +           hweight(dpu_encoder_helper_get_dsc(phys_enc)) != 1 && > > Yes, the correct should be: > hweight(...) == 2 > >>>              dpu_cstate->num_mixers == CRTC_DUAL_MIXERS) >>>                  return BLEND_3D_H_ROW_INT; >>> >>>          return BLEND_3D_NONE; >>> } >> >> This will not be enough. To detect whether DSC merge is enabled you >> need to query the topology. The above condition only checks if DSC is >> enabled not DSC merge. >> >> So the above function can be modified to use a helper like below >> instead of the hweight. >> >> bool dpu_encoder_get_dsc_merge_info(struct dpu_encoder_virt *dpu_enc) >> { >>      struct msm_display_topology topology = {0}; >> >>      topology = dpu_encoder_get_topology(...); >> >>      if (topology.num_dsc > topology.num_intf) > > num_intf is 1 or 2. If it's one, the split_role is SOLO > hweight would return a num of bits in the DSC mask. It's 0, 1 or 2. > So, if the split_role is SOLO and hweight is 2, we get exactly your > condition. > num_intf is 1 in this case as only single interface is used. But even 4 dsc encoders going to 2 interfaces its DSC merge. So assuming num_intf as 1 always is not right. Thats why I suggested a generalized confition like above. > Does that sound correct? > >>          return true; >>      else >>          return false; >> } >> >> if (!dpu_encoder_get_dsc_merge_info() && other conditions listed above) >>      return BLEND_3D_H_ROW_INT; >> else >>      BLEND_3D_NONE; >>> >>> >>>> >>>> All that you have to do is in query whether DSC merge is used from >>>> the topology. You can do it in multiple ways: >>>> >>>> 1) Either query this from the encoder >>>> 2) Store a bool "dsc_merge" in the intf_cfg >>>> >>> >>> > >