提交 71cf39b1 编写于 作者: E Eric Anholt

drm/i915: Enable VS timer dispatch.

This could resolve HW deadlocks where a unit downstream of the VS is
waiting for more input, the VS has one vertex queued up but not
dispatched because it hopes to get one more vertex for 2x4 dispatch,
and software isn't handing more vertices down because it's waiting for
rendering to complete.  The B-Spec says you should always have this
bit set.
Signed-off-by: NEric Anholt <eric@anholt.net>
上级 49677901
...@@ -4725,6 +4725,11 @@ i915_gem_init_ringbuffer(struct drm_device *dev) ...@@ -4725,6 +4725,11 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
ring->space += ring->Size; ring->space += ring->Size;
} }
if (IS_I9XX(dev) && !IS_GEN3(dev)) {
I915_WRITE(MI_MODE,
(VS_TIMER_DISPATCH) << 16 | VS_TIMER_DISPATCH);
}
return 0; return 0;
} }
......
...@@ -298,6 +298,10 @@ ...@@ -298,6 +298,10 @@
#define INSTDONE 0x02090 #define INSTDONE 0x02090
#define NOPID 0x02094 #define NOPID 0x02094
#define HWSTAM 0x02098 #define HWSTAM 0x02098
#define MI_MODE 0x0209c
# define VS_TIMER_DISPATCH (1 << 6)
#define SCPD0 0x0209c /* 915+ only */ #define SCPD0 0x0209c /* 915+ only */
#define IER 0x020a0 #define IER 0x020a0
#define IIR 0x020a4 #define IIR 0x020a4
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册