i915: execbuf now works without i915_dma_init being called
authorJakob Bornecrantz <jakob@tungstengraphics.com>
Tue, 13 May 2008 07:24:47 +0000 (09:24 +0200)
committerJakob Bornecrantz <jakob@tungstengraphics.com>
Tue, 13 May 2008 07:26:26 +0000 (09:26 +0200)
shared-core/i915_dma.c
shared-core/i915_init.c

index 9bec85a..498620f 100644 (file)
@@ -197,7 +197,9 @@ static int i915_initialize(struct drm_device * dev,
 
 
 #ifdef I915_HAVE_BUFFER
-       dev_priv->max_validate_buffers = I915_MAX_VALIDATE_BUFFERS;
+       if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
+               dev_priv->max_validate_buffers = I915_MAX_VALIDATE_BUFFERS;
+       }
 #endif
 
        if (!dev_priv->ring.Size) {
@@ -260,8 +262,11 @@ static int i915_initialize(struct drm_device * dev,
                I915_WRITE(0x02080, dev_priv->dma_status_page);
        }
        DRM_DEBUG("Enabled hardware status page\n");
+
 #ifdef I915_HAVE_BUFFER
-       mutex_init(&dev_priv->cmdbuf_mutex);
+       if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
+               mutex_init(&dev_priv->cmdbuf_mutex);
+       }
 #endif
 
        if (init->func == I915_INIT_DMA2) {
index 22577c7..c0ca226 100644 (file)
@@ -155,10 +155,14 @@ int i915_load_modeset_init(struct drm_device *dev)
         * private backbuffer/depthbuffer usage.
         */
        dev_priv->use_mi_batchbuffer_start = 0;
+       if (IS_I965G(dev)) /* 965 doesn't support older method */
+               dev_priv->use_mi_batchbuffer_start = 1;
 
        /* Allow hardware batchbuffers unless told otherwise.
         */
        dev_priv->allow_batchbuffer = 1;
+       dev_priv->max_validate_buffers = I915_MAX_VALIDATE_BUFFERS;
+       mutex_init(&dev_priv->cmdbuf_mutex);
 
        /* Program Hardware Status Page */
        if (!IS_G33(dev)) {