Lines Matching refs:crtc

57 static unsigned int get_crtc_fence_y_offset(struct intel_crtc *crtc)  in get_crtc_fence_y_offset()  argument
59 return crtc->base.y - crtc->adjusted_y; in get_crtc_fence_y_offset()
85 static void i8xx_fbc_enable(struct intel_crtc *crtc) in i8xx_fbc_enable() argument
87 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in i8xx_fbc_enable()
88 struct drm_framebuffer *fb = crtc->base.primary->fb; in i8xx_fbc_enable()
116 fbc_ctl2 |= FBC_CTL_PLANE(crtc->plane); in i8xx_fbc_enable()
118 I915_WRITE(FBC_FENCE_OFF, get_crtc_fence_y_offset(crtc)); in i8xx_fbc_enable()
132 cfb_pitch, crtc->base.y, plane_name(crtc->plane)); in i8xx_fbc_enable()
140 static void g4x_fbc_enable(struct intel_crtc *crtc) in g4x_fbc_enable() argument
142 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in g4x_fbc_enable()
143 struct drm_framebuffer *fb = crtc->base.primary->fb; in g4x_fbc_enable()
149 dpfc_ctl = DPFC_CTL_PLANE(crtc->plane) | DPFC_SR_EN; in g4x_fbc_enable()
156 I915_WRITE(DPFC_FENCE_YOFF, get_crtc_fence_y_offset(crtc)); in g4x_fbc_enable()
161 DRM_DEBUG_KMS("enabled fbc on plane %c\n", plane_name(crtc->plane)); in g4x_fbc_enable()
191 static void ilk_fbc_enable(struct intel_crtc *crtc) in ilk_fbc_enable() argument
193 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in ilk_fbc_enable()
194 struct drm_framebuffer *fb = crtc->base.primary->fb; in ilk_fbc_enable()
202 dpfc_ctl = DPFC_CTL_PLANE(crtc->plane); in ilk_fbc_enable()
222 y_offset = get_crtc_fence_y_offset(crtc); in ilk_fbc_enable()
236 DRM_DEBUG_KMS("enabled fbc on plane %c\n", plane_name(crtc->plane)); in ilk_fbc_enable()
260 static void gen7_fbc_enable(struct intel_crtc *crtc) in gen7_fbc_enable() argument
262 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in gen7_fbc_enable()
263 struct drm_framebuffer *fb = crtc->base.primary->fb; in gen7_fbc_enable()
272 dpfc_ctl |= IVB_DPFC_CTL_PLANE(crtc->plane); in gen7_fbc_enable()
302 I915_WRITE(CHICKEN_PIPESL_1(crtc->pipe), in gen7_fbc_enable()
303 I915_READ(CHICKEN_PIPESL_1(crtc->pipe)) | in gen7_fbc_enable()
311 I915_WRITE(DPFC_CPU_FENCE_OFFSET, get_crtc_fence_y_offset(crtc)); in gen7_fbc_enable()
315 DRM_DEBUG_KMS("enabled fbc on plane %c\n", plane_name(crtc->plane)); in gen7_fbc_enable()
331 static void intel_fbc_enable(struct intel_crtc *crtc, in intel_fbc_enable() argument
334 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in intel_fbc_enable()
336 dev_priv->fbc.enable_fbc(crtc); in intel_fbc_enable()
338 dev_priv->fbc.crtc = crtc; in intel_fbc_enable()
340 dev_priv->fbc.y = crtc->base.y; in intel_fbc_enable()
348 struct drm_i915_private *dev_priv = work->crtc->base.dev->dev_private; in intel_fbc_work_fn()
349 struct drm_framebuffer *crtc_fb = work->crtc->base.primary->fb; in intel_fbc_work_fn()
357 intel_fbc_enable(work->crtc, work->fb); in intel_fbc_work_fn()
391 static void intel_fbc_schedule_enable(struct intel_crtc *crtc) in intel_fbc_schedule_enable() argument
394 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in intel_fbc_schedule_enable()
403 intel_fbc_enable(crtc, crtc->base.primary->fb); in intel_fbc_schedule_enable()
407 work->crtc = crtc; in intel_fbc_schedule_enable()
408 work->fb = crtc->base.primary->fb; in intel_fbc_schedule_enable()
436 dev_priv->fbc.crtc = NULL; in __intel_fbc_disable()
461 void intel_fbc_disable_crtc(struct intel_crtc *crtc) in intel_fbc_disable_crtc() argument
463 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in intel_fbc_disable_crtc()
469 if (dev_priv->fbc.crtc == crtc) in intel_fbc_disable_crtc()
527 struct drm_crtc *crtc = NULL, *tmp_crtc; in intel_fbc_find_crtc() local
539 crtc = tmp_crtc; in intel_fbc_find_crtc()
545 if (!crtc || crtc->primary->fb == NULL) in intel_fbc_find_crtc()
548 return crtc; in intel_fbc_find_crtc()
555 struct drm_crtc *crtc; in multiple_pipes_ok() local
561 crtc = dev_priv->pipe_to_crtc_mapping[pipe]; in multiple_pipes_ok()
563 if (intel_crtc_active(crtc) && in multiple_pipes_ok()
564 to_intel_plane_state(crtc->primary->state)->visible) in multiple_pipes_ok()
706 static void intel_fbc_get_plane_source_size(struct intel_crtc *crtc, in intel_fbc_get_plane_source_size() argument
710 to_intel_plane_state(crtc->base.primary->state); in intel_fbc_get_plane_source_size()
727 static int intel_fbc_calculate_cfb_size(struct intel_crtc *crtc) in intel_fbc_calculate_cfb_size() argument
729 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in intel_fbc_calculate_cfb_size()
730 struct drm_framebuffer *fb = crtc->base.primary->fb; in intel_fbc_calculate_cfb_size()
733 intel_fbc_get_plane_source_size(crtc, NULL, &lines); in intel_fbc_calculate_cfb_size()
740 static int intel_fbc_setup_cfb(struct intel_crtc *crtc) in intel_fbc_setup_cfb() argument
742 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in intel_fbc_setup_cfb()
743 struct drm_framebuffer *fb = crtc->base.primary->fb; in intel_fbc_setup_cfb()
746 size = intel_fbc_calculate_cfb_size(crtc); in intel_fbc_setup_cfb()
808 static bool intel_fbc_hw_tracking_covers_screen(struct intel_crtc *crtc) in intel_fbc_hw_tracking_covers_screen() argument
810 struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; in intel_fbc_hw_tracking_covers_screen()
824 intel_fbc_get_plane_source_size(crtc, &effective_w, &effective_h); in intel_fbc_hw_tracking_covers_screen()
825 effective_w += crtc->adjusted_x; in intel_fbc_hw_tracking_covers_screen()
826 effective_h += crtc->adjusted_y; in intel_fbc_hw_tracking_covers_screen()
852 struct drm_crtc *crtc = NULL; in __intel_fbc_update() local
883 crtc = intel_fbc_find_crtc(dev_priv); in __intel_fbc_update()
884 if (!crtc) { in __intel_fbc_update()
894 intel_crtc = to_intel_crtc(crtc); in __intel_fbc_update()
895 fb = crtc->primary->fb; in __intel_fbc_update()
925 crtc->primary->state->rotation != BIT(DRM_ROTATE_0)) { in __intel_fbc_update()
964 if (dev_priv->fbc.crtc == intel_crtc && in __intel_fbc_update()
966 dev_priv->fbc.y == crtc->y) in __intel_fbc_update()
1041 fbc_bits = INTEL_FRONTBUFFER_PRIMARY(dev_priv->fbc.crtc->pipe); in intel_fbc_invalidate()
1044 dev_priv->fbc.fbc_work->crtc->pipe); in intel_fbc_invalidate()