public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 07/16] drm/i915/gen9: Allow skl_allocate_pipe_ddb() to operate on in-flight state
Date: Mon, 18 Apr 2016 14:56:49 +0200	[thread overview]
Message-ID: <5714D991.50902@linux.intel.com> (raw)
In-Reply-To: <20160414015808.GS22764@intel.com>

Op 14-04-16 om 03:58 schreef Matt Roper:
> On Tue, Apr 05, 2016 at 11:35:31AM +0200, Maarten Lankhorst wrote:
>> Op 01-04-16 om 03:46 schreef Matt Roper:
>>> We eventually want to calculate watermark values at atomic 'check' time
>>> instead of atomic 'commit' time so that any requested configurations
>>> that result in impossible watermark requirements are properly rejected.
>>> The first step along this path is to allocate the DDB at atomic 'check'
>>> time.  As we perform this transition, allow the main allocation function
>>> to operate successfully on either an in-flight state or an
>>> already-commited state.  Once we complete the transition in a future
>>> patch, we'll come back and remove the unnecessary logic for the
>>> already-committed case.
>>>
>>> Note one other minor change here...when working with the
>>> already-committed state, we pull the active CRTC's from
>>> hweight(dev_priv->active_crtcs) instead of
>>> dev_priv->wm.config.num_pipes_active.  The values should be equivalent,
>>> but dev_priv->wm.config is pretty much unused at this point and it would
>>> be nice to eventually remove it entirely.
>>> ---
> ...
>>> @@ -3078,13 +3109,26 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
>>>  	total_data_rate = skl_get_total_relative_data_rate(cstate);
>>>  
>>>  	start = alloc->start;
>>> -	for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
>>> +	for_each_intel_plane_mask(dev, intel_plane, cstate->base.plane_mask) {
>>>  		struct drm_plane *plane = &intel_plane->base;
>>> -		struct drm_plane_state *pstate = intel_plane->base.state;
>>> +		struct drm_plane_state *pstate;
>>>  		unsigned int data_rate, y_data_rate;
>>>  		uint16_t plane_blocks, y_plane_blocks = 0;
>>>  		int id = skl_wm_plane_id(intel_plane);
>>>  
>>> +		/*
>>> +		 * TODO: Remove support for already-committed state once we
>>> +		 * only allocate DDB on in-flight states.
>>> +		 */
>>> +		if (cstate->base.state) {
>>> +			pstate = drm_atomic_get_plane_state(cstate->base.state,
>>> +							    plane);
>>>
>> Yuck again? :( No way around this by storing data rates for example?
> Is there a reason to try to avoid grabbing the plane state here?  If we
> get here, then we already have the CRTC lock, so we're not preventing
> any potential for parallel updates of this plane (at least not on Intel
> hardware where planes are tied to the CRTC).
If you don't have to, you don't want to grab the plane state. It's probably fine to do so temporarily, but a solution
like for ILK would be better eventually. :)
>> Oh well, at least set cstate->base.planes_changed please.
> I'm not sure I follow this one.  We're using pstate in a read-only
> manner so nothing we're doing here should necessitate programming planes
> as far as I can see.
Just being part of the state is enough. intel_prepare_plane_fb will be called on those planes,
so with my async unpin patch series you need to set the flag or you may not have async unpins, resulting in errors much later on when the fb is freed.

~Maarten
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-04-18 12:56 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-01  1:46 [PATCH 00/16] Pre-calculate SKL-style atomic watermarks Matt Roper
2016-04-01  1:46 ` [PATCH 01/16] drm/i915: Reorganize WM structs/unions in CRTC state Matt Roper
2016-04-01  1:46 ` [PATCH 02/16] drm/i915: Make skl_plane_relative_data_rate use passed " Matt Roper
2016-04-01  1:46 ` [PATCH 03/16] drm/i915: Rename s/skl_compute_pipe_wm/skl_build_pipe_wm/ Matt Roper
2016-04-01  1:46 ` [PATCH 04/16] drm/i915/skl+: Use plane size for relative data rate calculation Matt Roper
2016-04-06 15:09   ` Imre Deak
2016-04-06 18:05     ` Matt Roper
2016-04-01  1:46 ` [PATCH 05/16] drm/i915/gen9: Allow calculation of data rate for in-flight state Matt Roper
2016-04-01  1:46 ` [PATCH 06/16] drm/i915: Ensure intel_state->active_crtcs is always set Matt Roper
2016-04-05  9:29   ` Maarten Lankhorst
2016-04-01  1:46 ` [PATCH 07/16] drm/i915/gen9: Allow skl_allocate_pipe_ddb() to operate on in-flight state Matt Roper
2016-04-05  9:35   ` Maarten Lankhorst
2016-04-14  1:58     ` Matt Roper
2016-04-18 12:56       ` Maarten Lankhorst [this message]
2016-04-01  1:46 ` [PATCH 08/16] drm/i915/gen9: Compute DDB allocation at atomic check time Matt Roper
2016-04-05  9:45   ` Maarten Lankhorst
2016-04-01  1:46 ` [PATCH 09/16] drm/i915/gen9: Drop re-allocation of DDB at atomic commit Matt Roper
2016-04-01  1:46 ` [PATCH 10/16] drm/i915/gen9: Calculate plane WM's from state Matt Roper
2016-04-01  1:46 ` [PATCH 11/16] drm/i915/gen9: Allow watermark calculation on in-flight atomic state Matt Roper
2016-04-05  9:52   ` Maarten Lankhorst
2016-04-01  1:46 ` [PATCH 12/16] drm/i915/gen9: Use a bitmask to track dirty pipe watermarks Matt Roper
2016-04-01  1:46 ` [PATCH 13/16] drm/i915/gen9: Propagate watermark calculation failures up the call chain Matt Roper
2016-04-01  1:46 ` [PATCH 14/16] drm/i915/gen9: Calculate watermarks during atomic 'check' Matt Roper
2016-04-05 13:01   ` Patrik Jakobsson
2016-04-01  1:46 ` [PATCH 15/16] drm/i915/gen9: Reject display updates that exceed wm limitations Matt Roper
2016-04-01  1:46 ` [PATCH 16/16] drm/i915: Remove wm_config from dev_priv/intel_atomic_state Matt Roper
2016-04-05 10:14   ` Maarten Lankhorst
2016-04-01  9:36 ` ✗ Fi.CI.BAT: warning for Pre-calculate SKL-style atomic watermarks Patchwork

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=5714D991.50902@linux.intel.com \
    --to=maarten.lankhorst@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=matthew.d.roper@intel.com \
    /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