Merge branch 'i915-unification' of git+ssh://people.freedesktop.org/~anholt/mesa...
[mesa.git] / src / mesa / drivers / dri / i915tex / intel_screen.c
index a1b8070f81e78486791697a6e39a38540bdae6ad..89cf3ea91393f2d86dda383ae780f236efd9e6d4 100644 (file)
@@ -123,8 +123,6 @@ intelMapScreenRegions(__DRIscreenPrivate * sPriv)
    if (0)
       _mesa_printf("TEX 0x%08x ", intelScreen->tex.handle);
    if (intelScreen->tex.size != 0) {
-      intelScreen->ttm = GL_FALSE;
-
       if (drmMap(sPriv->fd,
                 intelScreen->tex.handle,
                 intelScreen->tex.size,
@@ -132,8 +130,6 @@ intelMapScreenRegions(__DRIscreenPrivate * sPriv)
         intelUnmapScreenRegions(intelScreen);
         return GL_FALSE;
       }
-   } else {
-      intelScreen->ttm = GL_TRUE;
    }
 
    if (0)
@@ -530,12 +526,16 @@ intelInitDriver(__DRIscreenPrivate * sPriv)
       (*glx_enable_extension) (psc, "GLX_SGI_make_current_read");
    }
 
-   if (intelScreen->ttm) {
-      intelScreen->bufmgr = dri_bufmgr_ttm_init(sPriv->fd,
-                                               DRM_FENCE_TYPE_EXE,
-                                               DRM_FENCE_TYPE_EXE |
-                                               DRM_I915_FENCE_TYPE_RW);
-   } else {
+   intelScreen->bufmgr = dri_bufmgr_ttm_init(sPriv->fd,
+                                            DRM_FENCE_TYPE_EXE,
+                                            DRM_FENCE_TYPE_EXE |
+                                            DRM_I915_FENCE_TYPE_RW);
+   if (intelScreen->bufmgr == NULL) {
+      if (intelScreen->tex.size == 0) {
+        fprintf(stderr, "[%s:%u] Error initializing buffer manager.\n",
+                __func__, __LINE__);
+        return GL_FALSE;
+      }
       intelScreen->bufmgr = dri_bufmgr_fake_init(intelScreen->tex.offset,
                                                 intelScreen->tex.map,
                                                 intelScreen->tex.size,
@@ -557,7 +557,7 @@ intelDestroyScreen(__DRIscreenPrivate * sPriv)
 
    intelUnmapScreenRegions(intelScreen);
 
-   /* XXX: bufmgr teardown */
+   dri_bufmgr_destroy(intelScreen->bufmgr);
    FREE(intelScreen);
    sPriv->private = NULL;
 }
@@ -740,6 +740,10 @@ intelCreateContext(const __GLcontextModes * mesaVis,
    case PCI_CHIP_I915_GM:
    case PCI_CHIP_I945_G:
    case PCI_CHIP_I945_GM:
+   case PCI_CHIP_I945_GME:
+   case PCI_CHIP_G33_G:
+   case PCI_CHIP_Q35_G:
+   case PCI_CHIP_Q33_G:
       return i915CreateContext(mesaVis, driContextPriv, sharedContextPrivate);
 
    default:
@@ -764,7 +768,8 @@ static const struct __DriverAPIRec intelAPI = {
    .WaitForMSC = driWaitForMSC32,
    .WaitForSBC = NULL,
    .SwapBuffersMSC = NULL,
-   .CopySubBuffer = intelCopySubBuffer
+   .CopySubBuffer = intelCopySubBuffer,
+   .setTexOffset = intelSetTexOffset,
 };
 
 
@@ -879,7 +884,7 @@ __driCreateNewScreen_20050727(__DRInativeDisplay * dpy, int scrn,
    __DRIscreenPrivate *psp;
    static const __DRIversion ddx_expected = { 1, 5, 0 };
    static const __DRIversion dri_expected = { 4, 0, 0 };
-   static const __DRIversion drm_expected = { 1, 7, 0 };
+   static const __DRIversion drm_expected = { 1, 5, 0 };
 
    dri_interface = interface;
 
@@ -894,6 +899,7 @@ __driCreateNewScreen_20050727(__DRInativeDisplay * dpy, int scrn,
                                   ddx_version, dri_version, drm_version,
                                   frame_buffer, pSAREA, fd,
                                   internal_api_version, &intelAPI);
+
    if (psp != NULL) {
       I830DRIPtr dri_priv = (I830DRIPtr) psp->pDevPriv;
       *driver_modes = intelFillInModes(dri_priv->cpp * 8,