Lines Matching full:plane

25  * DOC: atomic plane helpers
27 * The functions here are used by the atomic plane helper functions to
28 * implement legacy plane updates (i.e., drm_plane->update_plane() and
29 * drm_plane->disable_plane()). This allows plane updates to use the
30 * atomic state infrastructure and perform plane updates as separate
46 struct intel_plane *plane) in intel_plane_state_reset() argument
50 __drm_atomic_helper_plane_state_reset(&plane_state->uapi, &plane->base); in intel_plane_state_reset()
58 struct intel_plane *plane; in intel_plane_alloc() local
60 plane = kzalloc(sizeof(*plane), GFP_KERNEL); in intel_plane_alloc()
61 if (!plane) in intel_plane_alloc()
66 kfree(plane); in intel_plane_alloc()
70 intel_plane_state_reset(plane_state, plane); in intel_plane_alloc()
72 plane->base.state = &plane_state->uapi; in intel_plane_alloc()
74 return plane; in intel_plane_alloc()
77 void intel_plane_free(struct intel_plane *plane) in intel_plane_free() argument
79 intel_plane_destroy_state(&plane->base, plane->base.state); in intel_plane_free()
80 kfree(plane); in intel_plane_free()
84 * intel_plane_duplicate_state - duplicate plane state
85 * @plane: drm plane
87 * Allocates and returns a copy of the plane state (both common and
88 * Intel-specific) for the specified plane.
90 * Returns: The newly allocated plane state, or NULL on failure.
93 intel_plane_duplicate_state(struct drm_plane *plane) in intel_plane_duplicate_state() argument
97 intel_state = to_intel_plane_state(plane->state); in intel_plane_duplicate_state()
103 __drm_atomic_helper_plane_duplicate_state(plane, &intel_state->uapi); in intel_plane_duplicate_state()
116 * intel_plane_destroy_state - destroy plane state
117 * @plane: drm plane
120 * Destroys the plane state (both common and Intel-specific) for the
121 * specified plane.
124 intel_plane_destroy_state(struct drm_plane *plane, in intel_plane_destroy_state() argument
128 drm_WARN_ON(plane->dev, plane_state->vma); in intel_plane_destroy_state()
182 struct intel_plane *plane, in intel_plane_calc_min_cdclk() argument
185 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in intel_plane_calc_min_cdclk()
187 intel_atomic_get_new_plane_state(state, plane); in intel_plane_calc_min_cdclk()
193 if (!plane_state->uapi.visible || !plane->min_cdclk) in intel_plane_calc_min_cdclk()
199 new_crtc_state->min_cdclk[plane->id] = in intel_plane_calc_min_cdclk()
200 plane->min_cdclk(new_crtc_state, plane_state); in intel_plane_calc_min_cdclk()
204 * the min cdclk for the plane doesn't increase. in intel_plane_calc_min_cdclk()
206 * Ie. we only ever increase the cdclk due to plane in intel_plane_calc_min_cdclk()
210 if (new_crtc_state->min_cdclk[plane->id] <= in intel_plane_calc_min_cdclk()
211 old_crtc_state->min_cdclk[plane->id]) in intel_plane_calc_min_cdclk()
222 * Ie. we only ever increase the cdclk due to plane in intel_plane_calc_min_cdclk()
226 if (new_crtc_state->min_cdclk[plane->id] <= in intel_plane_calc_min_cdclk()
231 "[PLANE:%d:%s] min cdclk (%d kHz) > [CRTC:%d:%s] min cdclk (%d kHz)\n", in intel_plane_calc_min_cdclk()
232 plane->base.base.id, plane->base.name, in intel_plane_calc_min_cdclk()
233 new_crtc_state->min_cdclk[plane->id], in intel_plane_calc_min_cdclk()
270 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in intel_plane_set_invisible() local
272 crtc_state->active_planes &= ~BIT(plane->id); in intel_plane_set_invisible()
273 crtc_state->nv12_planes &= ~BIT(plane->id); in intel_plane_set_invisible()
274 crtc_state->c8_planes &= ~BIT(plane->id); in intel_plane_set_invisible()
275 crtc_state->data_rate[plane->id] = 0; in intel_plane_set_invisible()
276 crtc_state->min_cdclk[plane->id] = 0; in intel_plane_set_invisible()
286 struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane); in intel_plane_atomic_check_with_state() local
295 ret = plane->check_plane(new_crtc_state, new_plane_state); in intel_plane_atomic_check_with_state()
301 new_crtc_state->active_planes |= BIT(plane->id); in intel_plane_atomic_check_with_state()
305 new_crtc_state->nv12_planes |= BIT(plane->id); in intel_plane_atomic_check_with_state()
309 new_crtc_state->c8_planes |= BIT(plane->id); in intel_plane_atomic_check_with_state()
312 new_crtc_state->update_planes |= BIT(plane->id); in intel_plane_atomic_check_with_state()
314 new_crtc_state->data_rate[plane->id] = in intel_plane_atomic_check_with_state()
335 struct intel_plane *plane) in intel_plane_atomic_check() argument
338 intel_atomic_get_new_plane_state(state, plane); in intel_plane_atomic_check()
340 intel_atomic_get_old_plane_state(state, plane); in intel_plane_atomic_check()
370 struct intel_plane *plane; in skl_next_plane_to_commit() local
376 for_each_new_intel_plane_in_state(state, plane, plane_state, i) { in skl_next_plane_to_commit()
377 enum plane_id plane_id = plane->id; in skl_next_plane_to_commit()
379 if (crtc->pipe != plane->pipe || in skl_next_plane_to_commit()
395 return plane; in skl_next_plane_to_commit()
404 void intel_update_plane(struct intel_plane *plane, in intel_update_plane() argument
410 trace_intel_update_plane(&plane->base, crtc); in intel_update_plane()
411 plane->update_plane(plane, crtc_state, plane_state); in intel_update_plane()
414 void intel_disable_plane(struct intel_plane *plane, in intel_disable_plane() argument
419 trace_intel_disable_plane(&plane->base, crtc); in intel_disable_plane()
420 plane->disable_plane(plane, crtc_state); in intel_disable_plane()
433 struct intel_plane *plane; in skl_update_planes_on_crtc() local
440 while ((plane = skl_next_plane_to_commit(state, crtc, in skl_update_planes_on_crtc()
444 intel_atomic_get_new_plane_state(state, plane); in skl_update_planes_on_crtc()
448 intel_update_plane(plane, new_crtc_state, new_plane_state); in skl_update_planes_on_crtc()
450 intel_disable_plane(plane, new_crtc_state); in skl_update_planes_on_crtc()
462 struct intel_plane *plane; in i9xx_update_planes_on_crtc() local
465 for_each_new_intel_plane_in_state(state, plane, new_plane_state, i) { in i9xx_update_planes_on_crtc()
466 if (crtc->pipe != plane->pipe || in i9xx_update_planes_on_crtc()
467 !(update_mask & BIT(plane->id))) in i9xx_update_planes_on_crtc()
471 intel_update_plane(plane, new_crtc_state, new_plane_state); in i9xx_update_planes_on_crtc()
473 intel_disable_plane(plane, new_crtc_state); in i9xx_update_planes_on_crtc()