diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2013-11-03 00:07:13 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-11-08 12:09:42 -0500 |
commit | 075b3bbaae0d6ec99c09d2299c3632e481028542 (patch) | |
tree | 4df7425d83d6b22b4c349ba28a510b8748cf0e98 /drivers/gpu/drm | |
parent | 1c7a0623c795b35349d8f19cd8e8a19ac5783008 (diff) |
drm/i915/bdw: Update MI_FLUSH_DW
The code is more verbose than necessary for the reader's sake, hopefully
the compiler optimizes away the if.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 7070d734b84b..ef0e7b99ded7 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -1670,6 +1670,8 @@ static int gen6_bsd_ring_flush(struct intel_ring_buffer *ring, | |||
1670 | return ret; | 1670 | return ret; |
1671 | 1671 | ||
1672 | cmd = MI_FLUSH_DW; | 1672 | cmd = MI_FLUSH_DW; |
1673 | if (INTEL_INFO(ring->dev)->gen >= 8) | ||
1674 | cmd += 1; | ||
1673 | /* | 1675 | /* |
1674 | * Bspec vol 1c.5 - video engine command streamer: | 1676 | * Bspec vol 1c.5 - video engine command streamer: |
1675 | * "If ENABLED, all TLBs will be invalidated once the flush | 1677 | * "If ENABLED, all TLBs will be invalidated once the flush |
@@ -1681,8 +1683,13 @@ static int gen6_bsd_ring_flush(struct intel_ring_buffer *ring, | |||
1681 | MI_FLUSH_DW_STORE_INDEX | MI_FLUSH_DW_OP_STOREDW; | 1683 | MI_FLUSH_DW_STORE_INDEX | MI_FLUSH_DW_OP_STOREDW; |
1682 | intel_ring_emit(ring, cmd); | 1684 | intel_ring_emit(ring, cmd); |
1683 | intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); | 1685 | intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); |
1684 | intel_ring_emit(ring, 0); | 1686 | if (INTEL_INFO(ring->dev)->gen >= 8) { |
1685 | intel_ring_emit(ring, MI_NOOP); | 1687 | intel_ring_emit(ring, 0); /* upper addr */ |
1688 | intel_ring_emit(ring, 0); /* value */ | ||
1689 | } else { | ||
1690 | intel_ring_emit(ring, 0); | ||
1691 | intel_ring_emit(ring, MI_NOOP); | ||
1692 | } | ||
1686 | intel_ring_advance(ring); | 1693 | intel_ring_advance(ring); |
1687 | return 0; | 1694 | return 0; |
1688 | } | 1695 | } |
@@ -1764,6 +1771,8 @@ static int gen6_ring_flush(struct intel_ring_buffer *ring, | |||
1764 | return ret; | 1771 | return ret; |
1765 | 1772 | ||
1766 | cmd = MI_FLUSH_DW; | 1773 | cmd = MI_FLUSH_DW; |
1774 | if (INTEL_INFO(ring->dev)->gen >= 8) | ||
1775 | cmd += 1; | ||
1767 | /* | 1776 | /* |
1768 | * Bspec vol 1c.3 - blitter engine command streamer: | 1777 | * Bspec vol 1c.3 - blitter engine command streamer: |
1769 | * "If ENABLED, all TLBs will be invalidated once the flush | 1778 | * "If ENABLED, all TLBs will be invalidated once the flush |
@@ -1775,8 +1784,13 @@ static int gen6_ring_flush(struct intel_ring_buffer *ring, | |||
1775 | MI_FLUSH_DW_OP_STOREDW; | 1784 | MI_FLUSH_DW_OP_STOREDW; |
1776 | intel_ring_emit(ring, cmd); | 1785 | intel_ring_emit(ring, cmd); |
1777 | intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); | 1786 | intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); |
1778 | intel_ring_emit(ring, 0); | 1787 | if (INTEL_INFO(ring->dev)->gen >= 8) { |
1779 | intel_ring_emit(ring, MI_NOOP); | 1788 | intel_ring_emit(ring, 0); /* upper addr */ |
1789 | intel_ring_emit(ring, 0); /* value */ | ||
1790 | } else { | ||
1791 | intel_ring_emit(ring, 0); | ||
1792 | intel_ring_emit(ring, MI_NOOP); | ||
1793 | } | ||
1780 | intel_ring_advance(ring); | 1794 | intel_ring_advance(ring); |
1781 | 1795 | ||
1782 | if (IS_GEN7(dev) && flush) | 1796 | if (IS_GEN7(dev) && flush) |