We dont need to call r300EmitAOS if we arent going to draw anything(r300_get_num_vert...
[mesa.git] / src / mesa / drivers / dri / unichrome / via_fb.c
index 73a06cb0bad4e6fc9b56834ff33e63e1e4a224f1..b590e833b690401d5bb042697aa7a8ca9bce9c03 100644 (file)
 #include <sys/ioctl.h>
 
 GLboolean
-via_alloc_back_buffer(viaContextPtr vmesa)
+via_alloc_draw_buffer(viaContextPtr vmesa, viaBuffer *buf)
 {
-    drm_via_mem_t fb;
-    unsigned char *pFB;
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
-#endif
-    fb.context = vmesa->hHWContext;
-    fb.size = vmesa->back.size;
-    fb.type = VIDEO;
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "context = %d, size =%d, type = %d\n", fb.context, fb.size, fb.type);
-#endif
-    if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &fb))
-        return GL_FALSE;
-    
-    pFB = vmesa->driScreen->pFB;
-    
-    vmesa->back.offset = fb.offset;
-    vmesa->back.map = (char *)(fb.offset + (GLuint)pFB);
-    vmesa->back.index = fb.index;
-#ifdef DEBUG    
-    if (VIA_DEBUG) {
-       fprintf(stderr, "back offset = %08x\n", vmesa->back.offset);
-       fprintf(stderr, "back index = %d\n", vmesa->back.index);
-    }
-
-    if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);
-#endif    
-    return GL_TRUE;
-}
+   drm_via_mem_t mem;
+   mem.context = vmesa->hHWContext;
+   mem.size = buf->size;
+   mem.type = VIDEO;
 
-GLboolean
-via_alloc_front_buffer(viaContextPtr vmesa)
-{
-    drm_via_mem_t fb;
-    unsigned char *pFB;
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
-#endif
-    fb.context = vmesa->hHWContext;
-    fb.size = vmesa->back.size;
-    fb.type = VIDEO;
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "context = %d, size =%d, type = %d\n", fb.context, fb.size, fb.type);
-#endif
-    if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &fb))
-        return GL_FALSE;
+   if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &mem)) 
+      return GL_FALSE;
     
-    pFB = vmesa->driScreen->pFB;
     
-    vmesa->front.offset = fb.offset;
-    vmesa->front.map = (char *)(fb.offset + (GLuint)pFB);
-    vmesa->front.index = fb.index;
-#ifdef DEBUG    
-    if (VIA_DEBUG) {
-       fprintf(stderr, "front offset = %08x\n", vmesa->front.offset);
-       fprintf(stderr, "front index = %d\n", vmesa->front.index);
-    }
-
-
-    if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);
-#endif    
-    return GL_TRUE;
+   buf->offset = mem.offset;
+   buf->map = (char *)vmesa->driScreen->pFB + mem.offset;
+   buf->index = mem.index;
+   return GL_TRUE;
 }
 
 void
-via_free_back_buffer(viaContextPtr vmesa)
+via_free_draw_buffer(viaContextPtr vmesa, viaBuffer *buf)
 {
-    drm_via_mem_t fb;
+   drm_via_mem_t mem;
 
-    if (!vmesa) return;
-    fb.context = vmesa->hHWContext;
-    fb.index = vmesa->back.index;
-    fb.type = VIDEO;
-    ioctl(vmesa->driFd, DRM_IOCTL_VIA_FREEMEM, &fb);
-    vmesa->back.map = NULL;
-}
+   if (!vmesa) return;
 
-void
-via_free_front_buffer(viaContextPtr vmesa)
-{
-    drm_via_mem_t fb;
-
-    if (!vmesa) return;
-    fb.context = vmesa->hHWContext;
-    fb.index = vmesa->front.index;
-    fb.type = VIDEO;
-    ioctl(vmesa->driFd, DRM_IOCTL_VIA_FREEMEM, &fb);
-    vmesa->front.map = NULL;
+   mem.context = vmesa->hHWContext;
+   mem.index = buf->index;
+   mem.type = VIDEO;
+   ioctl(vmesa->driFd, DRM_IOCTL_VIA_FREEMEM, &mem);
+   buf->map = NULL;
 }
 
-GLboolean
-via_alloc_depth_buffer(viaContextPtr vmesa)
-{
-    drm_via_mem_t fb;
-    unsigned char *pFB;
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);    
-#endif 
-    fb.context = vmesa->hHWContext;
-    fb.size = vmesa->depth.size;
-    fb.type = VIDEO;
-
-    if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &fb)) {
-       return GL_FALSE;
-    }
-
-    pFB = vmesa->driScreen->pFB;
-    
-    vmesa->depth.offset = fb.offset;
-    vmesa->depth.map = (char *)(fb.offset + (GLuint)pFB);
-    vmesa->depth.index = fb.index;
-#ifdef DEBUG    
-    if (VIA_DEBUG) {
-       fprintf(stderr, "depth offset = %08x\n", vmesa->depth.offset);
-       fprintf(stderr, "depth index = %d\n", vmesa->depth.index);    
-    }  
-
-    if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);    
-#endif
-    return GL_TRUE;
-}
-
-void
-via_free_depth_buffer(viaContextPtr vmesa)
-{
-    drm_via_mem_t fb;
-       
-    if (!vmesa) return;
-    fb.context = vmesa->hHWContext;
-    fb.index = vmesa->depth.index;
-    fb.type = VIDEO;
-    ioctl(vmesa->driFd, DRM_IOCTL_VIA_FREEMEM, &fb);
-    vmesa->depth.map = NULL;
-}
 
 GLboolean
 via_alloc_dma_buffer(viaContextPtr vmesa)
 {
-  drmVIADMAInit init;
+   drm_via_dma_init_t init;
 
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
-#endif
-    vmesa->dma = (GLuint *) malloc(VIA_DMA_BUFSIZ);
+   if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
+   vmesa->dma = (GLubyte *) malloc(VIA_DMA_BUFSIZ);
     
-    /*
-     * Check whether AGP DMA has been initialized.
-     */
-
-    init.func = VIA_DMA_INITIALIZED;
-    vmesa->useAgp = 
-      ( 0 == drmCommandWrite(vmesa->driFd, DRM_VIA_DMA_INIT, 
+   /*
+    * Check whether AGP DMA has been initialized.
+    */
+   init.func = VIA_DMA_INITIALIZED;
+   vmesa->useAgp = 
+     ( 0 == drmCommandWrite(vmesa->driFd, DRM_VIA_DMA_INIT, 
                             &init, sizeof(init)));
-    if (vmesa->useAgp) 
-        printf("unichrome_dri.so: Using AGP.\n");
-    else
-        printf("unichrome_dri.so: Using PCI.\n");
+   if (VIA_DEBUG) {
+      if (vmesa->useAgp) 
+         fprintf(stderr, "unichrome_dri.so: Using AGP.\n");
+      else
+         fprintf(stderr, "unichrome_dri.so: Using PCI.\n");
+   
+      fprintf(stderr, "%s - out\n", __FUNCTION__);
+   }
       
-#ifdef DEBUG    
-    if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);
-#endif
-    return ((vmesa->dma) ? GL_TRUE : GL_FALSE);
+   return ((vmesa->dma) ? GL_TRUE : GL_FALSE);
 }
 
 void
@@ -209,18 +102,14 @@ GLboolean
 via_alloc_texture(viaContextPtr vmesa, viaTextureObjectPtr t)
 {
     drm_via_mem_t fb;
-#ifdef DEBUG    
     if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
-#endif
     fb.context = vmesa->hHWContext;
     fb.size = t->texMem.size;
     fb.type = VIDEO;
-#ifdef DEBUG    
     if (VIA_DEBUG) {
        fprintf(stderr, "texture size = %d\n", fb.size);
        fprintf(stderr, "texture type = %d\n", fb.type);
     }
-#endif
     if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &fb)) {
        fprintf(stderr, "via_alloc_texture fail\n");
         return GL_FALSE;
@@ -228,14 +117,10 @@ via_alloc_texture(viaContextPtr vmesa, viaTextureObjectPtr t)
     
     t->texMem.offset = fb.offset;
     t->texMem.index = fb.index;
-#ifdef DEBUG    
     if (VIA_DEBUG) fprintf(stderr, "texture index = %d\n", (GLuint)fb.index);
-#endif
     
     t->bufAddr = (unsigned char *)(fb.offset + (GLuint)vmesa->driScreen->pFB);
-#ifdef DEBUG    
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);    
-#endif
     return GL_TRUE;
 }
 /*=* John Sheng [2003.5.31]  agp tex *=*/
@@ -243,18 +128,14 @@ GLboolean
 via_alloc_texture_agp(viaContextPtr vmesa, viaTextureObjectPtr t)
 {
     drm_via_mem_t fb;
-#ifdef DEBUG    
     if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
-#endif
     fb.context = vmesa->hHWContext;
     fb.size = t->texMem.size;
     fb.type = AGP;
-#ifdef DEBUG    
     if (VIA_DEBUG) {
        fprintf(stderr, "texture_agp size = %d\n", fb.size);
        fprintf(stderr, "texture type = %d\n", fb.type);
     }
-#endif
     if (ioctl(vmesa->driFd, DRM_IOCTL_VIA_ALLOCMEM, &fb)) {
        fprintf(stderr, "via_alloc_texture_agp fail\n");
         return GL_FALSE;
@@ -262,16 +143,12 @@ via_alloc_texture_agp(viaContextPtr vmesa, viaTextureObjectPtr t)
     
     t->texMem.offset = fb.offset;
     t->texMem.index = fb.index;
-#ifdef DEBUG    
     if (VIA_DEBUG) fprintf(stderr, "texture agp index = %d\n", (GLuint)fb.index);
-#endif
     
     t->bufAddr = (unsigned char *)((GLuint)vmesa->viaScreen->agpLinearStart + fb.offset);      
     /*=* John Sheng [2003.5.31]  agp tex *=*/
     t->inAGP = GL_TRUE;
-#ifdef DEBUG    
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);    
-#endif
     return GL_TRUE;
 }
 
@@ -279,14 +156,12 @@ void
 via_free_texture(viaContextPtr vmesa, viaTextureObjectPtr t)
 {
     drm_via_mem_t fb;
-#ifdef DEBUG           
     if (VIA_DEBUG) {
        fprintf(stderr, "via_free_texture: index = %d\n",
             t->texMem.index);
        fprintf(stderr, "via_free_texture: size = %d\n",
             t->texMem.size);
     }
-#endif
     if (!vmesa) {
        fprintf(stderr, "!mesa\n");
        return;