aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon.h
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2014-06-03 18:13:21 -0400
committerDave Airlie <airlied@redhat.com>2014-06-03 21:59:44 -0400
commitfa7f517cb26eb1a1a1f0baffcced39f6c3ec3337 (patch)
tree8a678f30f92b7b0f6b1f33115fda9c9c37209b92 /drivers/gpu/drm/radeon/radeon.h
parentb15eb4ea1533b82762932d32cb220ddf75a09b3d (diff)
drm/radeon: rework page flip handling v4
Instead of trying to flip inside the vblank period when the buffer is idle, offload blocking for idle to a kernel thread and program the flip directly into the hardware. v2: add error handling, fix EBUSY handling v3: add proper exclusive_lock handling v4: update crtc->primary->fb when the flip actually happens Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon.h')
-rw-r--r--drivers/gpu/drm/radeon/radeon.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 2eaa3300099e..dd4da88b3ab1 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -676,14 +676,16 @@ void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell);
676 * IRQS. 676 * IRQS.
677 */ 677 */
678 678
679struct radeon_unpin_work { 679struct radeon_flip_work {
680 struct work_struct work; 680 struct work_struct flip_work;
681 struct radeon_device *rdev; 681 struct work_struct unpin_work;
682 int crtc_id; 682 struct radeon_device *rdev;
683 struct radeon_fence *fence; 683 int crtc_id;
684 struct drm_framebuffer *fb;
684 struct drm_pending_vblank_event *event; 685 struct drm_pending_vblank_event *event;
685 struct radeon_bo *old_rbo; 686 struct radeon_bo *old_rbo;
686 u64 new_crtc_base; 687 struct radeon_bo *new_rbo;
688 struct radeon_fence *fence;
687}; 689};
688 690
689struct r500_irq_stat_regs { 691struct r500_irq_stat_regs {