From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3 4/9] drm/i915: Use enum plane_id in SKL wm code
Date: Thu, 17 Nov 2016 22:04:17 +0200 [thread overview]
Message-ID: <20161117200417.GF31595@intel.com> (raw)
In-Reply-To: <1479409933.2382.35.camel@intel.com>
On Thu, Nov 17, 2016 at 05:12:13PM -0200, Paulo Zanoni wrote:
> Em Qua, 2016-11-09 às 17:03 +0200, ville.syrjala@linux.intel.com
> escreveu:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Nuke skl_wm_plane_id() and just use the new intel_plane->id.
> >
> > v2: Convert skl_write_plane_wm() as well
> > v3: Convert skl_pipe_wm_get_hw_state() correctly
>
> In general, I really like the fact that we unified plane/id/i into just
> plane_id.
>
> In general, I dislike the fact that many new lines go past 80 columns
> now :).
>
> A few comments follow:
>
> >
> > Cc: Matt Roper <matthew.d.roper@intel.com>
> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Lyude <cpaul@redhat.com>
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_drv.h | 2 +-
> > drivers/gpu/drm/i915/intel_pm.c | 180 ++++++++++++++++-------------
> > ----------
> > 2 files changed, 76 insertions(+), 106 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_drv.h
> > b/drivers/gpu/drm/i915/intel_drv.h
> > index a3c696d8bf93..6a4cd6edafa5 100644
> > --- a/drivers/gpu/drm/i915/intel_drv.h
> > +++ b/drivers/gpu/drm/i915/intel_drv.h
> > @@ -1751,7 +1751,7 @@ void skl_write_cursor_wm(struct intel_crtc
> > *intel_crtc,
> > void skl_write_plane_wm(struct intel_crtc *intel_crtc,
> > const struct skl_plane_wm *wm,
> > const struct skl_ddb_allocation *ddb,
> > - int plane);
> > + enum plane_id plane_id);
> > uint32_t ilk_pipe_pixel_rate(const struct intel_crtc_state
> > *pipe_config);
> > bool ilk_disable_lp_wm(struct drm_device *dev);
> > int sanitize_rc6_option(struct drm_i915_private *dev_priv, int
> > enable_rc6);
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c
> > b/drivers/gpu/drm/i915/intel_pm.c
> > index 88e28c989b9c..bae7eea6de16 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -2863,28 +2863,6 @@ bool ilk_disable_lp_wm(struct drm_device *dev)
> > #define SKL_SAGV_BLOCK_TIME 30 /* µs */
> >
> > /*
> > - * Return the index of a plane in the SKL DDB and wm result
> > arrays. Primary
> > - * plane is always in slot 0, cursor is always in slot
> > I915_MAX_PLANES-1, and
> > - * other universal planes are in indices 1..n. Note that this may
> > leave unused
> > - * indices between the top "sprite" plane and the cursor.
> > - */
> > -static int
> > -skl_wm_plane_id(const struct intel_plane *plane)
> > -{
> > - switch (plane->base.type) {
> > - case DRM_PLANE_TYPE_PRIMARY:
> > - return 0;
> > - case DRM_PLANE_TYPE_CURSOR:
> > - return PLANE_CURSOR;
> > - case DRM_PLANE_TYPE_OVERLAY:
> > - return plane->plane + 1;
> > - default:
> > - MISSING_CASE(plane->base.type);
> > - return plane->plane;
> > - }
> > -}
> > -
> > -/*
> > * FIXME: We still don't have the proper code detect if we need to
> > apply the WA,
> > * so assume we'll always need it in order to avoid underruns.
> > */
> > @@ -3022,7 +3000,6 @@ bool intel_can_enable_sagv(struct
> > drm_atomic_state *state)
> > struct intel_crtc *crtc;
> > struct intel_plane *plane;
> > struct intel_crtc_state *cstate;
> > - struct skl_plane_wm *wm;
> > enum pipe pipe;
> > int level, latency;
> >
> > @@ -3049,7 +3026,8 @@ bool intel_can_enable_sagv(struct
> > drm_atomic_state *state)
> > return false;
> >
> > for_each_intel_plane_on_crtc(dev, crtc, plane) {
> > - wm = &cstate-
> > >wm.skl.optimal.planes[skl_wm_plane_id(plane)];
> > + struct skl_plane_wm *wm =
> > + &cstate->wm.skl.optimal.planes[plane->id];
> >
> > /* Skip this plane if it's not enabled */
> > if (!wm->wm[0].plane_en)
> > @@ -3148,28 +3126,28 @@ static void skl_ddb_entry_init_from_hw(struct
> > skl_ddb_entry *entry, u32 reg)
> > void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
> > struct skl_ddb_allocation *ddb /* out */)
> > {
> > - enum pipe pipe;
> > - int plane;
> > + struct intel_crtc *crtc;
> > u32 val;
> >
> > memset(ddb, 0, sizeof(*ddb));
> >
> > - for_each_pipe(dev_priv, pipe) {
> > + for_each_intel_crtc(&dev_priv->drm, crtc) {
> > enum intel_display_power_domain power_domain;
> > + enum plane_id plane_id;
> > + enum pipe pipe = crtc->pipe;
> >
> > power_domain = POWER_DOMAIN_PIPE(pipe);
> > if (!intel_display_power_get_if_enabled(dev_priv,
> > power_domain))
> > continue;
> >
> > - for_each_universal_plane(dev_priv, pipe, plane) {
> > - val = I915_READ(PLANE_BUF_CFG(pipe, plane));
> > - skl_ddb_entry_init_from_hw(&ddb-
> > >plane[pipe][plane],
> > - val);
> > - }
> > + for_each_plane_id_on_crtc(crtc, plane_id) {
> > + if (plane_id != PLANE_CURSOR)
> > + val = I915_READ(PLANE_BUF_CFG(pipe,
> > plane_id));
> > + else
> > + val = I915_READ(CUR_BUF_CFG(pipe));
> >
> > - val = I915_READ(CUR_BUF_CFG(pipe));
> > - skl_ddb_entry_init_from_hw(&ddb-
> > >plane[pipe][PLANE_CURSOR],
> > - val);
> > + skl_ddb_entry_init_from_hw(&ddb-
> > >plane[pipe][plane_id], val);
> > + }
> >
> > intel_display_power_put(dev_priv, power_domain);
> > }
> > @@ -3270,30 +3248,30 @@ skl_get_total_relative_data_rate(struct
> > intel_crtc_state *intel_cstate,
> > struct drm_crtc_state *cstate = &intel_cstate->base;
> > struct drm_atomic_state *state = cstate->state;
> > struct drm_plane *plane;
> > - const struct intel_plane *intel_plane;
> > const struct drm_plane_state *pstate;
> > - unsigned int rate, total_data_rate = 0;
> > - int id;
> > + unsigned int total_data_rate = 0;
> >
> > if (WARN_ON(!state))
> > return 0;
> >
> > /* Calculate and cache data rate for each plane */
> > drm_atomic_crtc_state_for_each_plane_state(plane, pstate,
> > cstate) {
> > - id = skl_wm_plane_id(to_intel_plane(plane));
> > - intel_plane = to_intel_plane(plane);
> > + enum plane_id plane_id = to_intel_plane(plane)->id;
> > + unsigned int rate;
> > +
> > + /* FIXME cursor shouldn't be here no? */
>
> No, because skl_plane_relative_data_rate() returns 0 for the cursor.
> Not that I like the current design, but I think the FIXME can make
> things even more confusing. I see 3 options: (i) just remove the FIXME;
> (ii) add a comment explaining why we don't check for the cursor; (iii)
> just add a check for the cursor here, maybe removing it from
> skl_plane_relative_data_rate().
Should probably made explicit here as IIRC it's explicit in the place
where this gets compared to the per-plane rate.
>
>
> >
> > /* packed/uv */
> > rate = skl_plane_relative_data_rate(intel_cstate,
> > pstate, 0);
> > - plane_data_rate[id] = rate;
> > + plane_data_rate[plane_id] = rate;
> >
> > total_data_rate += rate;
> >
> > /* y-plane */
> > rate = skl_plane_relative_data_rate(intel_cstate,
> > pstate, 1);
> > - plane_y_data_rate[id] = rate;
> > + plane_y_data_rate[plane_id] = rate;
> >
> > total_data_rate += rate;
> > }
> > @@ -3372,17 +3350,16 @@ skl_ddb_calc_min(const struct
> > intel_crtc_state *cstate, int num_active,
> > struct drm_plane *plane;
> >
> > drm_atomic_crtc_state_for_each_plane_state(plane, pstate,
> > &cstate->base) {
> > - struct intel_plane *intel_plane =
> > to_intel_plane(plane);
> > - int id = skl_wm_plane_id(intel_plane);
> > + enum plane_id plane_id = to_intel_plane(plane)->id;
> >
> > - if (id == PLANE_CURSOR)
> > + if (plane_id == PLANE_CURSOR)
> > continue;
> >
> > if (!pstate->visible)
> > continue;
> >
> > - minimum[id] = skl_ddb_min_alloc(pstate, 0);
> > - y_minimum[id] = skl_ddb_min_alloc(pstate, 1);
> > + minimum[plane_id] = skl_ddb_min_alloc(pstate, 0);
> > + y_minimum[plane_id] = skl_ddb_min_alloc(pstate, 1);
> > }
> >
> > minimum[PLANE_CURSOR] = skl_cursor_allocation(num_active);
> > @@ -3402,8 +3379,8 @@ skl_allocate_pipe_ddb(struct intel_crtc_state
> > *cstate,
> > uint16_t minimum[I915_MAX_PLANES] = {};
> > uint16_t y_minimum[I915_MAX_PLANES] = {};
> > unsigned int total_data_rate;
> > + enum plane_id plane_id;
> > int num_active;
> > - int id, i;
> > unsigned plane_data_rate[I915_MAX_PLANES] = {};
> > unsigned plane_y_data_rate[I915_MAX_PLANES] = {};
> >
> > @@ -3438,9 +3415,9 @@ skl_allocate_pipe_ddb(struct intel_crtc_state
> > *cstate,
> > * proportional to the data rate.
> > */
> >
> > - for (i = 0; i < I915_MAX_PLANES; i++) {
> > - alloc_size -= minimum[i];
> > - alloc_size -= y_minimum[i];
> > + for_each_plane_id_on_crtc(intel_crtc, plane_id) {
> > + alloc_size -= minimum[plane_id];
> > + alloc_size -= y_minimum[plane_id];
> > }
> >
> > ddb->plane[pipe][PLANE_CURSOR].start = alloc->end -
> > minimum[PLANE_CURSOR];
> > @@ -3459,28 +3436,28 @@ skl_allocate_pipe_ddb(struct intel_crtc_state
> > *cstate,
> > return 0;
> >
> > start = alloc->start;
> > - for (id = 0; id < I915_MAX_PLANES; id++) {
> > + for_each_plane_id_on_crtc(intel_crtc, plane_id) {
> > unsigned int data_rate, y_data_rate;
> > uint16_t plane_blocks, y_plane_blocks = 0;
> >
> > - if (id == PLANE_CURSOR)
> > + if (plane_id == PLANE_CURSOR)
> > continue;
> >
> > - data_rate = plane_data_rate[id];
> > + data_rate = plane_data_rate[plane_id];
> >
> > /*
> > * allocation for (packed formats) or (uv-plane part
> > of planar format):
> > * promote the expression to 64 bits to avoid
> > overflowing, the
> > * result is < available as data_rate /
> > total_data_rate < 1
> > */
> > - plane_blocks = minimum[id];
> > + plane_blocks = minimum[plane_id];
> > plane_blocks += div_u64((uint64_t)alloc_size *
> > data_rate,
> > total_data_rate);
> >
> > /* Leave disabled planes at (0,0) */
> > if (data_rate) {
> > - ddb->plane[pipe][id].start = start;
> > - ddb->plane[pipe][id].end = start +
> > plane_blocks;
> > + ddb->plane[pipe][plane_id].start = start;
> > + ddb->plane[pipe][plane_id].end = start +
> > plane_blocks;
> > }
> >
> > start += plane_blocks;
> > @@ -3488,15 +3465,15 @@ skl_allocate_pipe_ddb(struct intel_crtc_state
> > *cstate,
> > /*
> > * allocation for y_plane part of planar format:
> > */
> > - y_data_rate = plane_y_data_rate[id];
> > + y_data_rate = plane_y_data_rate[plane_id];
> >
> > - y_plane_blocks = y_minimum[id];
> > + y_plane_blocks = y_minimum[plane_id];
> > y_plane_blocks += div_u64((uint64_t)alloc_size *
> > y_data_rate,
> > total_data_rate);
> >
> > if (y_data_rate) {
> > - ddb->y_plane[pipe][id].start = start;
> > - ddb->y_plane[pipe][id].end = start +
> > y_plane_blocks;
> > + ddb->y_plane[pipe][plane_id].start = start;
> > + ddb->y_plane[pipe][plane_id].end = start +
> > y_plane_blocks;
> > }
> >
> > start += y_plane_blocks;
> > @@ -3688,11 +3665,8 @@ static int skl_compute_plane_wm(const struct
> > drm_i915_private *dev_priv,
> > return 0;
> > } else {
> > DRM_DEBUG_KMS("Requested display
> > configuration exceeds system watermark limitations\n");
> > - DRM_DEBUG_KMS("Plane %d.%d: blocks required
> > = %u/%u, lines required = %u/31\n",
> > - to_intel_crtc(cstate-
> > >base.crtc)->pipe,
> > - skl_wm_plane_id(to_intel_plane
> > (pstate->plane)),
> > - res_blocks, ddb_allocation,
> > res_lines);
> > -
> > + DRM_DEBUG_KMS("%s: blocks required = %u/%u,
> > lines required = %u/31\n",
> > + pstate->plane->name,
> > res_blocks, ddb_allocation, res_lines);
>
> Feels like this belongs to a separate patch...
I supposed I could split it out into a prep patch. Can't do it as
a fixup patch since I'd rather nuke skl_wm_plane_id() in one go.
>
> Can't we keep the "Plane" word here? Or maybe, why not do like the
> other debug prints we have and do [PLANE:%d:%s]?
The plane name already has "plane" in it. So nak on the idea of keeping
"Plane" here, but I'm fine with converting to the standard [PLANE:...]
notation.
>
> Everything else looks correct. With the comments addressed:
> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> > return -EINVAL;
> > }
> > }
> > @@ -3719,7 +3693,6 @@ skl_compute_wm_level(const struct
> > drm_i915_private *dev_priv,
> > uint16_t ddb_blocks;
> > enum pipe pipe = intel_crtc->pipe;
> > int ret;
> > - int i = skl_wm_plane_id(intel_plane);
> >
> > if (state)
> > intel_pstate =
> > @@ -3742,7 +3715,7 @@ skl_compute_wm_level(const struct
> > drm_i915_private *dev_priv,
> >
> > WARN_ON(!intel_pstate->base.fb);
> >
> > - ddb_blocks = skl_ddb_entry_size(&ddb->plane[pipe][i]);
> > + ddb_blocks = skl_ddb_entry_size(&ddb-
> > >plane[pipe][intel_plane->id]);
> >
> > ret = skl_compute_plane_wm(dev_priv,
> > cstate,
> > @@ -3805,7 +3778,7 @@ static int skl_build_pipe_wm(struct
> > intel_crtc_state *cstate,
> > for_each_intel_plane_mask(&dev_priv->drm,
> > intel_plane,
> > cstate->base.plane_mask) {
> > - wm = &pipe_wm->planes[skl_wm_plane_id(intel_plane)];
> > + wm = &pipe_wm->planes[intel_plane->id];
> >
> > for (level = 0; level <= max_level; level++) {
> > ret = skl_compute_wm_level(dev_priv, ddb,
> > cstate,
> > @@ -3849,7 +3822,7 @@ static void skl_write_wm_level(struct
> > drm_i915_private *dev_priv,
> > void skl_write_plane_wm(struct intel_crtc *intel_crtc,
> > const struct skl_plane_wm *wm,
> > const struct skl_ddb_allocation *ddb,
> > - int plane)
> > + enum plane_id plane_id)
> > {
> > struct drm_crtc *crtc = &intel_crtc->base;
> > struct drm_device *dev = crtc->dev;
> > @@ -3858,16 +3831,16 @@ void skl_write_plane_wm(struct intel_crtc
> > *intel_crtc,
> > enum pipe pipe = intel_crtc->pipe;
> >
> > for (level = 0; level <= max_level; level++) {
> > - skl_write_wm_level(dev_priv, PLANE_WM(pipe, plane,
> > level),
> > + skl_write_wm_level(dev_priv, PLANE_WM(pipe,
> > plane_id, level),
> > &wm->wm[level]);
> > }
> > - skl_write_wm_level(dev_priv, PLANE_WM_TRANS(pipe, plane),
> > + skl_write_wm_level(dev_priv, PLANE_WM_TRANS(pipe, plane_id),
> > &wm->trans_wm);
> >
> > - skl_ddb_entry_write(dev_priv, PLANE_BUF_CFG(pipe, plane),
> > - &ddb->plane[pipe][plane]);
> > - skl_ddb_entry_write(dev_priv, PLANE_NV12_BUF_CFG(pipe,
> > plane),
> > - &ddb->y_plane[pipe][plane]);
> > + skl_ddb_entry_write(dev_priv, PLANE_BUF_CFG(pipe, plane_id),
> > + &ddb->plane[pipe][plane_id]);
> > + skl_ddb_entry_write(dev_priv, PLANE_NV12_BUF_CFG(pipe,
> > plane_id),
> > + &ddb->y_plane[pipe][plane_id]);
> > }
> >
> > void skl_write_cursor_wm(struct intel_crtc *intel_crtc,
> > @@ -3981,17 +3954,16 @@ skl_ddb_add_affected_planes(struct
> > intel_crtc_state *cstate)
> > struct drm_plane_state *plane_state;
> > struct drm_plane *plane;
> > enum pipe pipe = intel_crtc->pipe;
> > - int id;
> >
> > WARN_ON(!drm_atomic_get_existing_crtc_state(state, crtc));
> >
> > drm_for_each_plane_mask(plane, dev, cstate->base.plane_mask)
> > {
> > - id = skl_wm_plane_id(to_intel_plane(plane));
> > + enum plane_id plane_id = to_intel_plane(plane)->id;
> >
> > - if (skl_ddb_entry_equal(&cur_ddb->plane[pipe][id],
> > - &new_ddb->plane[pipe][id])
> > &&
> > - skl_ddb_entry_equal(&cur_ddb->y_plane[pipe][id],
> > - &new_ddb-
> > >y_plane[pipe][id]))
> > + if (skl_ddb_entry_equal(&cur_ddb-
> > >plane[pipe][plane_id],
> > + &new_ddb-
> > >plane[pipe][plane_id]) &&
> > + skl_ddb_entry_equal(&cur_ddb-
> > >y_plane[pipe][plane_id],
> > + &new_ddb-
> > >y_plane[pipe][plane_id]))
> > continue;
> >
> > plane_state = drm_atomic_get_plane_state(state,
> > plane);
> > @@ -4103,7 +4075,6 @@ skl_print_wm_changes(const struct
> > drm_atomic_state *state)
> > const struct intel_plane *intel_plane;
> > const struct skl_ddb_allocation *old_ddb = &dev_priv-
> > >wm.skl_hw.ddb;
> > const struct skl_ddb_allocation *new_ddb = &intel_state-
> > >wm_results.ddb;
> > - int id;
> > int i;
> >
> > for_each_crtc_in_state(state, crtc, cstate, i) {
> > @@ -4111,11 +4082,11 @@ skl_print_wm_changes(const struct
> > drm_atomic_state *state)
> > enum pipe pipe = intel_crtc->pipe;
> >
> > for_each_intel_plane_on_crtc(dev, intel_crtc,
> > intel_plane) {
> > + enum plane_id plane_id = intel_plane->id;
> > const struct skl_ddb_entry *old, *new;
> >
> > - id = skl_wm_plane_id(intel_plane);
> > - old = &old_ddb->plane[pipe][id];
> > - new = &new_ddb->plane[pipe][id];
> > + old = &old_ddb->plane[pipe][plane_id];
> > + new = &new_ddb->plane[pipe][plane_id];
> >
> > if (skl_ddb_entry_equal(old, new))
> > continue;
> > @@ -4219,14 +4190,16 @@ static void skl_update_wm(struct intel_crtc
> > *intel_crtc)
> > * their watermarks updated once we update their planes.
> > */
> > if (intel_crtc->base.state->active_changed) {
> > - int plane;
> > -
> > - for_each_universal_plane(dev_priv, pipe, plane)
> > - skl_write_plane_wm(intel_crtc, &pipe_wm-
> > >planes[plane],
> > - &results->ddb, plane);
> > + enum plane_id plane_id;
> >
> > - skl_write_cursor_wm(intel_crtc, &pipe_wm-
> > >planes[PLANE_CURSOR],
> > - &results->ddb);
> > + for_each_plane_id_on_crtc(intel_crtc, plane_id) {
> > + if (plane_id != PLANE_CURSOR)
> > + skl_write_plane_wm(intel_crtc,
> > &pipe_wm->planes[plane_id],
> > + &results->ddb,
> > plane_id);
> > + else
> > + skl_write_cursor_wm(intel_crtc,
> > &pipe_wm->planes[plane_id],
> > + &results->ddb);
> > + }
> > }
> >
> > skl_copy_wm_for_pipe(hw_vals, results, pipe);
> > @@ -4323,32 +4296,29 @@ static inline void
> > skl_wm_level_from_reg_val(uint32_t val,
> > void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc,
> > struct skl_pipe_wm *out)
> > {
> > - struct drm_device *dev = crtc->dev;
> > - struct drm_i915_private *dev_priv = to_i915(dev);
> > + struct drm_i915_private *dev_priv = to_i915(crtc->dev);
> > struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> > - struct intel_plane *intel_plane;
> > - struct skl_plane_wm *wm;
> > enum pipe pipe = intel_crtc->pipe;
> > - int level, id, max_level;
> > + int level, max_level;
> > + enum plane_id plane_id;
> > uint32_t val;
> >
> > max_level = ilk_wm_max_level(dev_priv);
> >
> > - for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
> > - id = skl_wm_plane_id(intel_plane);
> > - wm = &out->planes[id];
> > + for_each_plane_id_on_crtc(intel_crtc, plane_id) {
> > + struct skl_plane_wm *wm = &out->planes[plane_id];
> >
> > for (level = 0; level <= max_level; level++) {
> > - if (id != PLANE_CURSOR)
> > - val = I915_READ(PLANE_WM(pipe, id,
> > level));
> > + if (plane_id != PLANE_CURSOR)
> > + val = I915_READ(PLANE_WM(pipe,
> > plane_id, level));
> > else
> > val = I915_READ(CUR_WM(pipe,
> > level));
> >
> > skl_wm_level_from_reg_val(val, &wm-
> > >wm[level]);
> > }
> >
> > - if (id != PLANE_CURSOR)
> > - val = I915_READ(PLANE_WM_TRANS(pipe, id));
> > + if (plane_id != PLANE_CURSOR)
> > + val = I915_READ(PLANE_WM_TRANS(pipe,
> > plane_id));
> > else
> > val = I915_READ(CUR_WM_TRANS(pipe));
> >
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-11-17 20:04 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-08 14:47 [PATCH 0/9] drm/i915: Add a per-pipe plane identifier enum ville.syrjala
2016-11-08 14:47 ` [PATCH 1/9] drm/i915: Remove some duplicated plane swapping logic ville.syrjala
2016-11-08 15:23 ` Chris Wilson
2016-11-08 15:42 ` Ville Syrjälä
2016-11-14 18:32 ` Ville Syrjälä
2016-11-08 14:47 ` [PATCH 2/9] drm/i915: Add per-pipe plane identifier ville.syrjala
2016-11-08 15:26 ` Chris Wilson
2016-11-08 15:38 ` Ville Syrjälä
2016-11-09 0:53 ` Matt Roper
2016-11-09 13:23 ` Ville Syrjälä
2016-11-17 19:09 ` Paulo Zanoni
2016-11-17 19:43 ` Ville Syrjälä
2016-11-18 14:17 ` Paulo Zanoni
2016-11-18 14:32 ` Ville Syrjälä
2016-11-18 20:40 ` Paulo Zanoni
2016-11-18 19:16 ` Matt Roper
2016-11-08 14:47 ` [PATCH 3/9] drm/i915: Add crtc->plane_ids_mask ville.syrjala
2016-11-17 19:11 ` Paulo Zanoni
2016-11-08 14:47 ` [PATCH 4/9] drm/i915: Use enum plane_id in SKL wm code ville.syrjala
2016-11-08 17:08 ` [PATCH v2 " ville.syrjala
2016-11-09 15:03 ` [PATCH v3 " ville.syrjala
2016-11-17 19:12 ` Paulo Zanoni
2016-11-17 20:04 ` Ville Syrjälä [this message]
2016-11-08 14:47 ` [PATCH 5/9] drm/i915: Use enum plane_id in SKL plane code ville.syrjala
2016-11-17 19:32 ` Paulo Zanoni
2016-11-08 14:47 ` [PATCH 6/9] drm/i915: Use enum plane_id in VLV/CHV sprite code ville.syrjala
2016-11-08 16:04 ` Chris Wilson
2016-11-08 16:56 ` Ville Syrjälä
2016-11-08 17:09 ` [PATCH v2 " ville.syrjala
2016-11-17 20:07 ` Paulo Zanoni
2016-11-17 20:19 ` Ville Syrjälä
2016-11-08 14:47 ` [PATCH 7/9] drm/i915: Use enum plane_id in VLV/CHV wm code ville.syrjala
2016-11-17 20:17 ` Paulo Zanoni
2016-11-17 20:29 ` Paulo Zanoni
2016-11-17 20:39 ` Ville Syrjälä
2016-11-08 14:47 ` [PATCH 8/9] drm/i915: Rename the local 'plane' variable to 'plane_id' in primary plane code ville.syrjala
2016-11-18 14:25 ` Paulo Zanoni
2016-11-18 14:34 ` Ville Syrjälä
2016-11-18 20:41 ` Paulo Zanoni
2016-11-18 21:39 ` Ville Syrjälä
2016-11-08 14:47 ` [PATCH 9/9] drm/i915: Don't populate plane->plane for cursors and sprites ville.syrjala
2016-11-08 15:30 ` Chris Wilson
2016-11-08 15:40 ` Ville Syrjälä
2016-11-08 15:45 ` ✗ Fi.CI.BAT: warning for drm/i915: Add a per-pipe plane identifier enum Patchwork
2016-11-08 17:45 ` ✗ Fi.CI.BAT: warning for drm/i915: Add a per-pipe plane identifier enum (rev3) Patchwork
2016-11-09 16:24 ` ✗ Fi.CI.BAT: warning for drm/i915: Add a per-pipe plane identifier enum (rev4) Patchwork
2016-11-14 18:11 ` Ville Syrjälä
2016-11-15 10:47 ` Imre Deak
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=20161117200417.GF31595@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.