radeon: only init surface manage on r600
authorDave Airlie <airlied@redhat.com>
Tue, 7 Feb 2012 14:19:28 +0000 (14:19 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 7 Feb 2012 14:20:09 +0000 (14:20 +0000)
r300 fails to init the manager and then fails to init.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c

index dbec259d7f3f898abffbeadc1cbb4ccd186208e0..0c83c68afa99f4892970072279caa239a4ffea56 100644 (file)
@@ -302,7 +302,9 @@ static void radeon_winsys_destroy(struct radeon_winsys *rws)
 
     ws->cman->destroy(ws->cman);
     ws->kman->destroy(ws->kman);
-    radeon_surface_manager_free(ws->surf_man);
+    if (ws->gen == R600) {
+        radeon_surface_manager_free(ws->surf_man);
+    }
     FREE(rws);
 }
 
@@ -377,9 +379,11 @@ struct radeon_winsys *radeon_drm_winsys_create(int fd)
         goto fail;
 
     /* FIXME check for libdrm version ?? */
-    ws->surf_man = radeon_surface_manager_new(fd);
-    if (!ws->surf_man)
-        goto fail;
+    if (ws->gen == R600) {
+        ws->surf_man = radeon_surface_manager_new(fd);
+        if (!ws->surf_man)
+            goto fail;
+    }
 
     /* Set functions. */
     ws->base.destroy = radeon_winsys_destroy;