* [PATCH 0/3] drm/i915: Reduce fence usage for scanout
@ 2014-01-28 12:51 ville.syrjala
2014-01-28 12:51 ` [PATCH 1/3] drm/i915: Don't waste fences on sprite buffers ville.syrjala
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: ville.syrjala @ 2014-01-28 12:51 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
After staring at the scanout vs. fences situation a bit, I decided
to reduce our scanout fence usage a bit.
Ville Syrjälä (3):
drm/i915: Don't waste fences on sprite buffers
drm/i915: Fix fence leaks if fbdev setup fails
drm/i915: Don't waste fences for scanout when not needed
drivers/gpu/drm/i915/intel_display.c | 117 ++++++++++++++++++++++++-----------
drivers/gpu/drm/i915/intel_drv.h | 10 ++-
drivers/gpu/drm/i915/intel_fbdev.c | 6 +-
drivers/gpu/drm/i915/intel_sprite.c | 2 +-
4 files changed, 91 insertions(+), 44 deletions(-)
--
1.8.3.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/3] drm/i915: Don't waste fences on sprite buffers 2014-01-28 12:51 [PATCH 0/3] drm/i915: Reduce fence usage for scanout ville.syrjala @ 2014-01-28 12:51 ` ville.syrjala 2014-01-28 12:51 ` [PATCH 2/3] drm/i915: Fix fence leaks if fbdev setup fails ville.syrjala ` (2 subsequent siblings) 3 siblings, 0 replies; 7+ messages in thread From: ville.syrjala @ 2014-01-28 12:51 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> Sprites never need fences for scanout, so let's not waste them where not needed. Renamed stuff a bit so that we have a nice set of functions for pinning scanout buffers. intel_pin_fb_obj() and intel_unpin_fb_obj() are now the versions that don't add fences, are intel_pin_fenced_fb_obj() and intel_unpin_fenced_fb_obj() are the versions that do. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.c | 98 ++++++++++++++++++++++++------------ drivers/gpu/drm/i915/intel_drv.h | 10 ++-- drivers/gpu/drm/i915/intel_fbdev.c | 2 +- drivers/gpu/drm/i915/intel_sprite.c | 2 +- 4 files changed, 75 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 122f871..fd48c2e 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1929,27 +1929,22 @@ static bool need_vtd_wa(struct drm_device *dev) return false; } -int -intel_pin_and_fence_fb_obj(struct drm_device *dev, - struct drm_i915_gem_object *obj, - struct intel_ring_buffer *pipelined) +static int intel_fb_obj_alignment(struct drm_device *dev, + struct drm_i915_gem_object *obj, + u32 *alignment) { - struct drm_i915_private *dev_priv = dev->dev_private; - u32 alignment; - int ret; - switch (obj->tiling_mode) { case I915_TILING_NONE: if (IS_BROADWATER(dev) || IS_CRESTLINE(dev)) - alignment = 128 * 1024; + *alignment = 128 * 1024; else if (INTEL_INFO(dev)->gen >= 4) - alignment = 4 * 1024; + *alignment = 4 * 1024; else - alignment = 64 * 1024; + *alignment = 64 * 1024; break; case I915_TILING_X: /* pin() will align the object as required by fence */ - alignment = 0; + *alignment = 0; break; case I915_TILING_Y: WARN(1, "Y tiled bo slipped through, driver bug!\n"); @@ -1963,8 +1958,23 @@ intel_pin_and_fence_fb_obj(struct drm_device *dev, * we should always have valid PTE following the scanout preventing * the VT-d warning. */ - if (need_vtd_wa(dev) && alignment < 256 * 1024) - alignment = 256 * 1024; + if (need_vtd_wa(dev) && *alignment < 256 * 1024) + *alignment = 256 * 1024; + + return 0; +} + +int intel_pin_fenced_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 alignment; + int ret; + + ret = intel_fb_obj_alignment(dev, obj, &alignment); + if (ret) + return ret; dev_priv->mm.interruptible = false; ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); @@ -1992,12 +2002,36 @@ err_interruptible: return ret; } -void intel_unpin_fb_obj(struct drm_i915_gem_object *obj) +void intel_unpin_fenced_fb_obj(struct drm_i915_gem_object *obj) { i915_gem_object_unpin_fence(obj); i915_gem_object_unpin_from_display_plane(obj); } +int intel_pin_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 alignment; + int ret; + + ret = intel_fb_obj_alignment(dev, obj, &alignment); + if (ret) + return ret; + + dev_priv->mm.interruptible = false; + ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); + + dev_priv->mm.interruptible = true; + return ret; +} + +void intel_unpin_fb_obj(struct drm_i915_gem_object *obj) +{ + i915_gem_object_unpin_from_display_plane(obj); +} + /* Computes the linear offset to the base tile and adjusts x, y. bytes per pixel * is assumed to be a power-of-two. */ unsigned long intel_gen4_compute_page_offset(int *x, int *y, @@ -2350,9 +2384,9 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, } mutex_lock(&dev->struct_mutex); - ret = intel_pin_and_fence_fb_obj(dev, - to_intel_framebuffer(fb)->obj, - NULL); + ret = intel_pin_fenced_fb_obj(dev, + to_intel_framebuffer(fb)->obj, + NULL); if (ret != 0) { mutex_unlock(&dev->struct_mutex); DRM_ERROR("pin & fence failed\n"); @@ -2392,7 +2426,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, ret = dev_priv->display.update_plane(crtc, fb, x, y); if (ret) { - intel_unpin_fb_obj(to_intel_framebuffer(fb)->obj); + intel_unpin_fenced_fb_obj(to_intel_framebuffer(fb)->obj); mutex_unlock(&dev->struct_mutex); DRM_ERROR("failed to update base address\n"); return ret; @@ -2406,7 +2440,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, if (old_fb) { if (intel_crtc->active && old_fb != fb) intel_wait_for_vblank(dev, intel_crtc->pipe); - intel_unpin_fb_obj(to_intel_framebuffer(old_fb)->obj); + intel_unpin_fenced_fb_obj(to_intel_framebuffer(old_fb)->obj); } intel_update_fbc(dev); @@ -4364,7 +4398,7 @@ static void intel_crtc_disable(struct drm_crtc *crtc) if (crtc->fb) { mutex_lock(&dev->struct_mutex); - intel_unpin_fb_obj(to_intel_framebuffer(crtc->fb)->obj); + intel_unpin_fenced_fb_obj(to_intel_framebuffer(crtc->fb)->obj); mutex_unlock(&dev->struct_mutex); crtc->fb = NULL; } @@ -8277,7 +8311,7 @@ static void intel_unpin_work_fn(struct work_struct *__work) struct drm_device *dev = work->crtc->dev; mutex_lock(&dev->struct_mutex); - intel_unpin_fb_obj(work->old_fb_obj); + intel_unpin_fenced_fb_obj(work->old_fb_obj); drm_gem_object_unreference(&work->pending_flip_obj->base); drm_gem_object_unreference(&work->old_fb_obj->base); @@ -8386,7 +8420,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev, struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; int ret; - ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + ret = intel_pin_fenced_fb_obj(dev, obj, ring); if (ret) goto err; @@ -8414,7 +8448,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev, return 0; err_unpin: - intel_unpin_fb_obj(obj); + intel_unpin_fenced_fb_obj(obj); err: return ret; } @@ -8431,7 +8465,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev, struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; int ret; - ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + ret = intel_pin_fenced_fb_obj(dev, obj, ring); if (ret) goto err; @@ -8456,7 +8490,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev, return 0; err_unpin: - intel_unpin_fb_obj(obj); + intel_unpin_fenced_fb_obj(obj); err: return ret; } @@ -8473,7 +8507,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev, struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; int ret; - ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + ret = intel_pin_fenced_fb_obj(dev, obj, ring); if (ret) goto err; @@ -8505,7 +8539,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev, return 0; err_unpin: - intel_unpin_fb_obj(obj); + intel_unpin_fenced_fb_obj(obj); err: return ret; } @@ -8522,7 +8556,7 @@ static int intel_gen6_queue_flip(struct drm_device *dev, uint32_t pf, pipesrc; int ret; - ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + ret = intel_pin_fenced_fb_obj(dev, obj, ring); if (ret) goto err; @@ -8550,7 +8584,7 @@ static int intel_gen6_queue_flip(struct drm_device *dev, return 0; err_unpin: - intel_unpin_fb_obj(obj); + intel_unpin_fenced_fb_obj(obj); err: return ret; } @@ -8571,7 +8605,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, if (IS_VALLEYVIEW(dev) || ring == NULL || ring->id != RCS) ring = &dev_priv->ring[BCS]; - ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + ret = intel_pin_fenced_fb_obj(dev, obj, ring); if (ret) goto err; @@ -8630,7 +8664,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, return 0; err_unpin: - intel_unpin_fb_obj(obj); + intel_unpin_fenced_fb_obj(obj); err: return ret; } diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 44067bc..913fdeb 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -677,9 +677,13 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector, struct intel_load_detect_pipe *old); void intel_release_load_detect_pipe(struct drm_connector *connector, struct intel_load_detect_pipe *old); -int intel_pin_and_fence_fb_obj(struct drm_device *dev, - struct drm_i915_gem_object *obj, - struct intel_ring_buffer *pipelined); +int intel_pin_fenced_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined); +void intel_unpin_fenced_fb_obj(struct drm_i915_gem_object *obj); +int intel_pin_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined); void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); int intel_framebuffer_init(struct drm_device *dev, struct intel_framebuffer *ifb, diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index d6a8a71..ea5ca6b 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c @@ -91,7 +91,7 @@ static int intelfb_alloc(struct drm_fb_helper *helper, } /* Flush everything out, we'll be doing GTT only from now on */ - ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); + ret = intel_pin_fenced_fb_obj(dev, obj, NULL); if (ret) { DRM_ERROR("failed to pin fb: %d\n", ret); goto out_unref; diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index 336ae6c..ae316c9 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c @@ -852,7 +852,7 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, * primary plane requires 256KiB alignment with 64 PTE padding, * the sprite planes only require 128KiB alignment and 32 PTE padding. */ - ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); + ret = intel_pin_fb_obj(dev, obj, NULL); mutex_unlock(&dev->struct_mutex); -- 1.8.3.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] drm/i915: Fix fence leaks if fbdev setup fails 2014-01-28 12:51 [PATCH 0/3] drm/i915: Reduce fence usage for scanout ville.syrjala 2014-01-28 12:51 ` [PATCH 1/3] drm/i915: Don't waste fences on sprite buffers ville.syrjala @ 2014-01-28 12:51 ` ville.syrjala 2014-01-28 12:51 ` [PATCH 3/3] drm/i915: Don't waste fences for scanout when not needed ville.syrjala 2014-01-28 13:12 ` [PATCH 0/3] drm/i915: Reduce fence usage for scanout Chris Wilson 3 siblings, 0 replies; 7+ messages in thread From: ville.syrjala @ 2014-01-28 12:51 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> We pin and fence the object using intel_pin_fenced_fb_obj() but just went ahead and unpinned it directly from the gtt. Make the destruction symmetric by using intel_unpin_fenced_fb_obj(). Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_fbdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index ea5ca6b..51b41c5 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c @@ -104,7 +104,7 @@ static int intelfb_alloc(struct drm_fb_helper *helper, return 0; out_unpin: - i915_gem_object_ggtt_unpin(obj); + intel_unpin_fenced_fb_obj(obj); out_unref: drm_gem_object_unreference(&obj->base); out: @@ -208,7 +208,7 @@ static int intelfb_create(struct drm_fb_helper *helper, return 0; out_unpin: - i915_gem_object_ggtt_unpin(obj); + intel_unpin_fenced_fb_obj(obj); drm_gem_object_unreference(&obj->base); out_unlock: mutex_unlock(&dev->struct_mutex); -- 1.8.3.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] drm/i915: Don't waste fences for scanout when not needed 2014-01-28 12:51 [PATCH 0/3] drm/i915: Reduce fence usage for scanout ville.syrjala 2014-01-28 12:51 ` [PATCH 1/3] drm/i915: Don't waste fences on sprite buffers ville.syrjala 2014-01-28 12:51 ` [PATCH 2/3] drm/i915: Fix fence leaks if fbdev setup fails ville.syrjala @ 2014-01-28 12:51 ` ville.syrjala 2014-01-28 13:12 ` [PATCH 0/3] drm/i915: Reduce fence usage for scanout Chris Wilson 3 siblings, 0 replies; 7+ messages in thread From: ville.syrjala @ 2014-01-28 12:51 UTC (permalink / raw) To: intel-gfx From: Ville Syrjälä <ville.syrjala@linux.intel.com> Gen2 and gen3 require fences for tiled scanout, but gen4+ only require a fence for FBC GTT modification tracking. Install a fence for scanout only when it might actually be required. This could potentially be optimized even further, but this seems like a fair comporomise for now. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index fd48c2e..71dd041 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1972,6 +1972,13 @@ int intel_pin_fenced_fb_obj(struct drm_device *dev, u32 alignment; int ret; + /* + * Pre-i965 always needs a fence for tiled scanout, whereas + * 965+ only requires a fence if using framebuffer compression. + */ + if (INTEL_INFO(dev)->gen >= 4 && !HAS_FBC(dev)) + return intel_pin_fb_obj(dev, obj, pipelined); + ret = intel_fb_obj_alignment(dev, obj, &alignment); if (ret) return ret; @@ -1981,11 +1988,6 @@ int intel_pin_fenced_fb_obj(struct drm_device *dev, if (ret) goto err_interruptible; - /* Install a fence for tiled scan-out. Pre-i965 always needs a - * fence, whereas 965+ only requires a fence if using - * framebuffer compression. For simplicity, we always install - * a fence as the cost is not that onerous. - */ ret = i915_gem_object_get_fence(obj); if (ret) goto err_unpin; @@ -2004,6 +2006,13 @@ err_interruptible: void intel_unpin_fenced_fb_obj(struct drm_i915_gem_object *obj) { + struct drm_device *dev = obj->base.dev; + + if (INTEL_INFO(dev)->gen >= 4 && !HAS_FBC(dev)) { + intel_unpin_fb_obj(obj); + return; + } + i915_gem_object_unpin_fence(obj); i915_gem_object_unpin_from_display_plane(obj); } -- 1.8.3.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] drm/i915: Reduce fence usage for scanout 2014-01-28 12:51 [PATCH 0/3] drm/i915: Reduce fence usage for scanout ville.syrjala ` (2 preceding siblings ...) 2014-01-28 12:51 ` [PATCH 3/3] drm/i915: Don't waste fences for scanout when not needed ville.syrjala @ 2014-01-28 13:12 ` Chris Wilson 2014-01-28 13:51 ` Ville Syrjälä 3 siblings, 1 reply; 7+ messages in thread From: Chris Wilson @ 2014-01-28 13:12 UTC (permalink / raw) To: ville.syrjala; +Cc: intel-gfx On Tue, Jan 28, 2014 at 02:51:53PM +0200, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > After staring at the scanout vs. fences situation a bit, I decided > to reduce our scanout fence usage a bit. I feel that is a glorious overreaction to a bug in another piece of code, but now that you've done it, I can not complain. ;-) > Ville Syrjälä (3): > drm/i915: Don't waste fences on sprite buffers I suspect this is a little too generic and that there will be some freaky old piece of hardware that requires a fence. However, for the gen that currently use sprites, it should just work I think. So which i-g-t hits tiled sprites? > drm/i915: Fix fence leaks if fbdev setup fails If fbdev ever uses a tiled fb, I think we are in greater trouble. So other than the leak is only a theorectical one, the patch looks sane. > drm/i915: Don't waste fences for scanout when not needed But it's gen2/3 that is short of fences (and we've a... I feel this is a micro-optimisation, but now that it is done... -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] drm/i915: Reduce fence usage for scanout 2014-01-28 13:12 ` [PATCH 0/3] drm/i915: Reduce fence usage for scanout Chris Wilson @ 2014-01-28 13:51 ` Ville Syrjälä 2014-01-28 19:39 ` Daniel Vetter 0 siblings, 1 reply; 7+ messages in thread From: Ville Syrjälä @ 2014-01-28 13:51 UTC (permalink / raw) To: Chris Wilson, intel-gfx On Tue, Jan 28, 2014 at 01:12:44PM +0000, Chris Wilson wrote: > On Tue, Jan 28, 2014 at 02:51:53PM +0200, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > After staring at the scanout vs. fences situation a bit, I decided > > to reduce our scanout fence usage a bit. > > I feel that is a glorious overreaction to a bug in another piece of > code, but now that you've done it, I can not complain. ;-) > > > Ville Syrjälä (3): > > drm/i915: Don't waste fences on sprite buffers > > I suspect this is a little too generic and that there will be some > freaky old piece of hardware that requires a fence. I don't see a problem making such changes if and when needed. But if you prefer I could adjust the code a bit to have one pin function for primary planes (will check gen+FBC) and another for sprite/overlay planes (will only check gen). I suppose the current sprite code should work OKish for sprite B/C on gen2/3, but for the video overlay the code would need more changes. The hardware is more capable than the current code, and I'd hate not taking full advantage of it. > > However, for the gen that currently use sprites, it should just work I > think. So which i-g-t hits tiled sprites? There are none. I've been waiting for someone to write some sprite i-g-ts. I do have my glplane thingy however which uses tiled buffers via gbm, and it works equally well w/ and w/o fences. > > > drm/i915: Fix fence leaks if fbdev setup fails > > If fbdev ever uses a tiled fb, I think we are in greater trouble. So > other than the leak is only a theorectical one, the patch looks sane. Hmm. Already forgot about that. Might be nice to make it tiled and enable FBC for it :) > > drm/i915: Don't waste fences for scanout when not needed > > But it's gen2/3 that is short of fences (and we've a... I feel this is a > micro-optimisation, but now that it is done... Yeah well, this will only "help" gen4 desktop parts and VLV since everything else has FBC AFAIK. -- Ville Syrjälä Intel OTC ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] drm/i915: Reduce fence usage for scanout 2014-01-28 13:51 ` Ville Syrjälä @ 2014-01-28 19:39 ` Daniel Vetter 0 siblings, 0 replies; 7+ messages in thread From: Daniel Vetter @ 2014-01-28 19:39 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx On Tue, Jan 28, 2014 at 03:51:06PM +0200, Ville Syrjälä wrote: > On Tue, Jan 28, 2014 at 01:12:44PM +0000, Chris Wilson wrote: > > On Tue, Jan 28, 2014 at 02:51:53PM +0200, ville.syrjala@linux.intel.com wrote: > > > drm/i915: Don't waste fences for scanout when not needed > > > > But it's gen2/3 that is short of fences (and we've a... I feel this is a > > micro-optimisation, but now that it is done... > > Yeah well, this will only "help" gen4 desktop parts and VLV since > everything else has FBC AFAIK. tbh I was afraid a bit that this will reduce testing coverage for that rather nifty fence accounting bug in ppgtt. But it looks like we'll still be ok. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-01-28 19:39 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-28 12:51 [PATCH 0/3] drm/i915: Reduce fence usage for scanout ville.syrjala 2014-01-28 12:51 ` [PATCH 1/3] drm/i915: Don't waste fences on sprite buffers ville.syrjala 2014-01-28 12:51 ` [PATCH 2/3] drm/i915: Fix fence leaks if fbdev setup fails ville.syrjala 2014-01-28 12:51 ` [PATCH 3/3] drm/i915: Don't waste fences for scanout when not needed ville.syrjala 2014-01-28 13:12 ` [PATCH 0/3] drm/i915: Reduce fence usage for scanout Chris Wilson 2014-01-28 13:51 ` Ville Syrjälä 2014-01-28 19:39 ` Daniel Vetter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox