On I965, use correct 3DSTATE_DRAWING_RECTANGLE command in vblank

The batchbuffer submission paths were fixed to use the 965-specific command,
but the vblank tasklet was not. When the older version is sent, the 965 will
lock up.
main
Keith Packard 2008-04-20 01:55:57 -07:00
parent 1ad1bd5bd9
commit 21dbba5a22
1 changed files with 22 additions and 9 deletions

View File

@ -279,16 +279,29 @@ static void i915_vblank_tasklet(struct drm_device *dev)
} }
if (init_drawrect) { if (init_drawrect) {
int width = sarea_priv->width;
int height = sarea_priv->height;
if (IS_I965G(dev)) {
BEGIN_LP_RING(4);
OUT_RING(GFX_OP_DRAWRECT_INFO_I965);
OUT_RING(0);
OUT_RING(((width - 1) & 0xffff) | ((height - 1) << 16));
OUT_RING(0);
ADVANCE_LP_RING();
} else {
BEGIN_LP_RING(6); BEGIN_LP_RING(6);
OUT_RING(GFX_OP_DRAWRECT_INFO); OUT_RING(GFX_OP_DRAWRECT_INFO);
OUT_RING(0); OUT_RING(0);
OUT_RING(0); OUT_RING(0);
OUT_RING(sarea_priv->width | sarea_priv->height << 16); OUT_RING(((width - 1) & 0xffff) | ((height - 1) << 16));
OUT_RING(sarea_priv->width | sarea_priv->height << 16); OUT_RING(0);
OUT_RING(0); OUT_RING(0);
ADVANCE_LP_RING(); ADVANCE_LP_RING();
}
sarea_priv->ctxOwner = DRM_KERNEL_CONTEXT; sarea_priv->ctxOwner = DRM_KERNEL_CONTEXT;