diff options
author | Dave Airlie <airlied@redhat.com> | 2014-07-08 20:38:42 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-07-08 20:38:42 -0400 |
commit | ca5a1b9ba0fb5291b555a23b76dbe5f6c30bfd7a (patch) | |
tree | 9a012a2a610ad4e9500c8e4f0aa68ecdc23c4dba /drivers/gpu/drm/i915/intel_sprite.c | |
parent | c7dbc6c9ae5c3baa3be755a228a349374d043b5b (diff) | |
parent | 34882298b93e998d5fccde852b860e8fbe6c8f6b (diff) |
Merge tag 'drm-intel-next-2014-06-20' of git://anongit.freedesktop.org/drm-intel into drm-next
- Accurate frontbuffer tracking and frontbuffer rendering invalidate, flush and
flip events. This is prep work for proper PSR support and should also be
useful for DRRS&fbc.
- Runtime suspend hardware on system suspend to support the new SOix sleep
states, from Jesse.
- PSR updates for broadwell (Rodrigo)
- Universal plane support for cursors (Matt Roper), including core drm patches.
- Prefault gtt mappings (Chris)
- baytrail write-enable pte bit support (Akash Goel)
- mmio based flips (Sourab Gupta) instead of blitter ring flips
- interrupt handling race fixes (Oscar Mateo)
And old, not yet merged features from the previous round:
- rps/turbo support for chv (Deepak)
- some other straggling chv patches (Ville)
- proper universal plane conversion for the primary plane (Matt Roper)
- ppgtt on vlv from Jesse
- pile of cleanups, little fixes for insane corner cases and improved debug
support all over
* tag 'drm-intel-next-2014-06-20' of git://anongit.freedesktop.org/drm-intel: (99 commits)
drm/i915: Update DRIVER_DATE to 20140620
drivers/i915: Fix unnoticed failure of init_ring_common()
drm/i915: Track frontbuffer invalidation/flushing
drm/i915: Use new frontbuffer bits to increase pll clock
drm/i915: don't take runtime PM reference around freeze/thaw
drm/i915: use runtime irq suspend/resume in freeze/thaw
drm/i915: Properly track domain of the fbcon fb
drm/i915: Print obj->frontbuffer_bits in debugfs output
drm/i915: Introduce accurate frontbuffer tracking
drm/i915: Drop schedule_back from psr_exit
drm/i915: Ditch intel_edp_psr_update
drm/i915: Drop unecessary complexity from psr_inactivate
drm/i915: Remove ctx->last_ring
drm/i915/chv: Ack interrupts before handling them (CHV)
drm/i915/bdw: Ack interrupts before handling them (GEN8)
drm/i915/vlv: Ack interrupts before handling them (VLV)
drm/i915: Ack interrupts before handling them (GEN5 - GEN7)
drm/i915: Don't BUG_ON in i915_gem_obj_offset
drm/i915: Grab dev->struct_mutex in i915_gem_pageflip_info
drm/i915: Add some L3 registers to the parser whitelist
...
Conflicts:
drivers/gpu/drm/i915/i915_drv.c
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sprite.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_sprite.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index 9a17b4e92ef4..985317eb1dc9 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c | |||
@@ -819,6 +819,7 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, | |||
819 | struct drm_device *dev = plane->dev; | 819 | struct drm_device *dev = plane->dev; |
820 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 820 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
821 | struct intel_plane *intel_plane = to_intel_plane(plane); | 821 | struct intel_plane *intel_plane = to_intel_plane(plane); |
822 | enum pipe pipe = intel_crtc->pipe; | ||
822 | struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); | 823 | struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); |
823 | struct drm_i915_gem_object *obj = intel_fb->obj; | 824 | struct drm_i915_gem_object *obj = intel_fb->obj; |
824 | struct drm_i915_gem_object *old_obj = intel_plane->obj; | 825 | struct drm_i915_gem_object *old_obj = intel_plane->obj; |
@@ -1006,6 +1007,8 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, | |||
1006 | */ | 1007 | */ |
1007 | ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); | 1008 | ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); |
1008 | 1009 | ||
1010 | i915_gem_track_fb(old_obj, obj, | ||
1011 | INTEL_FRONTBUFFER_SPRITE(pipe)); | ||
1009 | mutex_unlock(&dev->struct_mutex); | 1012 | mutex_unlock(&dev->struct_mutex); |
1010 | 1013 | ||
1011 | if (ret) | 1014 | if (ret) |
@@ -1039,6 +1042,8 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, | |||
1039 | else | 1042 | else |
1040 | intel_plane->disable_plane(plane, crtc); | 1043 | intel_plane->disable_plane(plane, crtc); |
1041 | 1044 | ||
1045 | intel_frontbuffer_flip(dev, INTEL_FRONTBUFFER_SPRITE(pipe)); | ||
1046 | |||
1042 | if (!primary_was_enabled && primary_enabled) | 1047 | if (!primary_was_enabled && primary_enabled) |
1043 | intel_post_enable_primary(crtc); | 1048 | intel_post_enable_primary(crtc); |
1044 | } | 1049 | } |
@@ -1068,6 +1073,7 @@ intel_disable_plane(struct drm_plane *plane) | |||
1068 | struct drm_device *dev = plane->dev; | 1073 | struct drm_device *dev = plane->dev; |
1069 | struct intel_plane *intel_plane = to_intel_plane(plane); | 1074 | struct intel_plane *intel_plane = to_intel_plane(plane); |
1070 | struct intel_crtc *intel_crtc; | 1075 | struct intel_crtc *intel_crtc; |
1076 | enum pipe pipe; | ||
1071 | 1077 | ||
1072 | if (!plane->fb) | 1078 | if (!plane->fb) |
1073 | return 0; | 1079 | return 0; |
@@ -1076,6 +1082,7 @@ intel_disable_plane(struct drm_plane *plane) | |||
1076 | return -EINVAL; | 1082 | return -EINVAL; |
1077 | 1083 | ||
1078 | intel_crtc = to_intel_crtc(plane->crtc); | 1084 | intel_crtc = to_intel_crtc(plane->crtc); |
1085 | pipe = intel_crtc->pipe; | ||
1079 | 1086 | ||
1080 | if (intel_crtc->active) { | 1087 | if (intel_crtc->active) { |
1081 | bool primary_was_enabled = intel_crtc->primary_enabled; | 1088 | bool primary_was_enabled = intel_crtc->primary_enabled; |
@@ -1094,6 +1101,8 @@ intel_disable_plane(struct drm_plane *plane) | |||
1094 | 1101 | ||
1095 | mutex_lock(&dev->struct_mutex); | 1102 | mutex_lock(&dev->struct_mutex); |
1096 | intel_unpin_fb_obj(intel_plane->obj); | 1103 | intel_unpin_fb_obj(intel_plane->obj); |
1104 | i915_gem_track_fb(intel_plane->obj, NULL, | ||
1105 | INTEL_FRONTBUFFER_SPRITE(pipe)); | ||
1097 | mutex_unlock(&dev->struct_mutex); | 1106 | mutex_unlock(&dev->struct_mutex); |
1098 | 1107 | ||
1099 | intel_plane->obj = NULL; | 1108 | intel_plane->obj = NULL; |