libdrm-radeon: be verbose on bo failure and cleanup cs a bit
authorJerome Glisse <glisse@freedesktop.org>
Mon, 10 Nov 2008 21:18:22 +0000 (22:18 +0100)
committerJerome Glisse <glisse@freedesktop.org>
Mon, 10 Nov 2008 21:18:22 +0000 (22:18 +0100)
libdrm/radeon/radeon_bo_gem.c
libdrm/radeon/radeon_cs_gem.c

index fc19871..8ce8291 100644 (file)
@@ -99,11 +99,15 @@ static struct radeon_bo *bo_open(struct radeon_bo_manager *bom,
                                 &args, sizeof(args));
         bo->base.handle = args.handle;
         if (r) {
+            fprintf(stderr, "Failed to allocate :\n");
+            fprintf(stderr, "   size      : %d bytes\n", size);
+            fprintf(stderr, "   alignment : %d bytes\n", alignment);
+            fprintf(stderr, "   domains   : %d\n", bo->base.domains);
             free(bo);
             return NULL;
         }
     }
-    radeon_bo_ref(bo);
+    radeon_bo_ref((struct radeon_bo*)bo);
     return (struct radeon_bo*)bo;
 }
 
@@ -137,7 +141,6 @@ static int bo_map(struct radeon_bo *bo, int write)
     struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo;
     struct drm_radeon_gem_mmap args;
     int r;
-    uint8_t *tt;
 
     if (bo_gem->map_count++ != 0) {
         return 0;
@@ -152,8 +155,10 @@ static int bo_map(struct radeon_bo *bo, int write)
                             sizeof(args));
     if (!r) {
         bo->ptr = (void *)(unsigned long)args.addr_ptr;
+    } else {
+        fprintf(stderr, "error mapping %p 0x%08X (error = %d)\n",
+                bo, bo->handle, r);
     }
-    tt = bo->ptr;
     return r;
 }
 
index 00aa908..6be1728 100644 (file)
@@ -58,8 +58,8 @@ struct cs_gem {
     struct radeon_bo            **relocs_bo;
 };
 
-static struct radeon_cs *cs_create(struct radeon_cs_manager *csm,
-                                   uint32_t ndw)
+static struct radeon_cs *cs_gem_create(struct radeon_cs_manager *csm,
+                                       uint32_t ndw)
 {
     struct cs_gem *csg;
 
@@ -104,7 +104,7 @@ static struct radeon_cs *cs_create(struct radeon_cs_manager *csm,
     return (struct radeon_cs*)csg;
 }
 
-static int cs_write_dword(struct radeon_cs *cs, uint32_t dword)
+static int cs_gem_write_dword(struct radeon_cs *cs, uint32_t dword)
 {
     struct cs_gem *csg = (struct cs_gem*)cs;
     if (cs->cdw >= cs->ndw) {
@@ -123,11 +123,11 @@ static int cs_write_dword(struct radeon_cs *cs, uint32_t dword)
     return 0;
 }
 
-static int cs_write_reloc(struct radeon_cs *cs,
-                          struct radeon_bo *bo,
-                          uint32_t soffset,
-                          uint32_t eoffset,
-                          uint32_t domains)
+static int cs_gem_write_reloc(struct radeon_cs *cs,
+                              struct radeon_bo *bo,
+                              uint32_t soffset,
+                              uint32_t eoffset,
+                              uint32_t domains)
 {
     struct cs_gem *csg = (struct cs_gem*)cs;
     struct cs_reloc_gem *reloc;
@@ -162,8 +162,8 @@ static int cs_write_reloc(struct radeon_cs *cs,
                 break;
             }
             reloc->cnt++;
-            cs_write_dword(cs, 0xc0001000);
-            cs_write_dword(cs, idx);
+            cs_gem_write_dword(cs, 0xc0001000);
+            cs_gem_write_dword(cs, idx);
             return 0;
         }
     }
@@ -208,31 +208,31 @@ static int cs_write_reloc(struct radeon_cs *cs,
     csg->chunks[1].length_dw += 4;
     radeon_bo_ref(bo);
     cs->relocs_total_size += bo->size;
-    cs_write_dword(cs, 0xc0001000);
-    cs_write_dword(cs, idx);
+    cs_gem_write_dword(cs, 0xc0001000);
+    cs_gem_write_dword(cs, idx);
     return 0;
 }
 
-static int cs_begin(struct radeon_cs *cs,
-                    uint32_t ndw,
-                    const char *file,
-                    const char *func,
-                    int line)
+static int cs_gem_begin(struct radeon_cs *cs,
+                        uint32_t ndw,
+                        const char *file,
+                        const char *func,
+                        int line)
 {
     return 0;
 }
 
-static int cs_end(struct radeon_cs *cs,
-                  const char *file,
-                  const char *func,
-                  int line)
+static int cs_gem_end(struct radeon_cs *cs,
+                      const char *file,
+                      const char *func,
+                      int line)
 
 {
     cs->section = 0;
     return 0;
 }
 
-static int cs_emit(struct radeon_cs *cs)
+static int cs_gem_emit(struct radeon_cs *cs)
 {
     struct cs_gem *csg = (struct cs_gem*)cs;
     uint64_t chunk_array[2];
@@ -249,13 +249,10 @@ static int cs_emit(struct radeon_cs *cs)
     if (r) {
         return r;
     }
-    for(i = 0; i < cs->crelocs; i++) {
-        radeon_bo_unref(csg->relocs_bo[i]);    
-    }
     return 0;
 }
 
-static int cs_destroy(struct radeon_cs *cs)
+static int cs_gem_destroy(struct radeon_cs *cs)
 {
     struct cs_gem *csg = (struct cs_gem*)cs;
 
@@ -266,7 +263,7 @@ static int cs_destroy(struct radeon_cs *cs)
     return 0;
 }
 
-static int cs_erase(struct radeon_cs *cs)
+static int cs_gem_erase(struct radeon_cs *cs)
 {
     struct cs_gem *csg = (struct cs_gem*)cs;
 
@@ -279,21 +276,21 @@ static int cs_erase(struct radeon_cs *cs)
     return 0;
 }
 
-static int cs_need_flush(struct radeon_cs *cs)
+static int cs_gem_need_flush(struct radeon_cs *cs)
 {
     return (cs->relocs_total_size > (16*1024*1024));
 }
 
-struct radeon_cs_funcs  radeon_cs_funcs = {
-    cs_create,
-    cs_write_dword,
-    cs_write_reloc,
-    cs_begin,
-    cs_end,
-    cs_emit,
-    cs_destroy,
-    cs_erase,
-    cs_need_flush
+static struct radeon_cs_funcs radeon_cs_gem_funcs = {
+    cs_gem_create,
+    cs_gem_write_dword,
+    cs_gem_write_reloc,
+    cs_gem_begin,
+    cs_gem_end,
+    cs_gem_emit,
+    cs_gem_destroy,
+    cs_gem_erase,
+    cs_gem_need_flush
 };
 
 struct radeon_cs_manager *radeon_cs_manager_gem(int fd)
@@ -305,7 +302,7 @@ struct radeon_cs_manager *radeon_cs_manager_gem(int fd)
     if (csm == NULL) {
         return NULL;
     }
-    csm->funcs = &radeon_cs_funcs;
+    csm->funcs = &radeon_cs_gem_funcs;
     csm->fd = fd;
     return csm;
 }