llvmpipe: code consolidation
authorBrian Paul <brianp@vmware.com>
Tue, 20 Apr 2010 23:28:33 +0000 (17:28 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 20 Apr 2010 23:28:33 +0000 (17:28 -0600)
src/gallium/drivers/llvmpipe/lp_texture.c

index a33b3f8ec57f0bc67e58d2fcf8e8330ea5c6ef58..f2d964bb5d9ff73d25214f619688fcf108520263 100644 (file)
@@ -766,15 +766,16 @@ layout_logic(enum lp_texture_layout cur_layout,
 
 
 /**
- * Return pointer to a texture image.  No tiled/linear conversion is done.
+ * Return pointer to a 2D texture image/face/slice.
+ * No tiled/linear conversion is done.
  */
-void *
+ubyte *
 llvmpipe_get_texture_image_address(struct llvmpipe_resource *lpr,
-                                   unsigned face, unsigned level,
+                                   unsigned face_slice, unsigned level,
                                    enum lp_texture_layout layout)
 {
    struct llvmpipe_texture_image *img;
-   unsigned face_offset;
+   unsigned offset;
 
    if (layout == LP_TEX_LAYOUT_LINEAR) {
       img = &lpr->linear[level];
@@ -784,12 +785,12 @@ llvmpipe_get_texture_image_address(struct llvmpipe_resource *lpr,
       img = &lpr->tiled[level];
    }
 
-   if (face > 0)
-      face_offset = face * tex_image_face_size(lpr, level, layout);
+   if (face_slice > 0)
+      offset = face_slice * tex_image_face_size(lpr, level, layout);
    else
-      face_offset = 0;
+      offset = 0;
 
-   return (ubyte *) img->data + face_offset;
+   return (ubyte *) img->data + offset;
 }
 
 
@@ -1008,48 +1009,6 @@ llvmpipe_get_texture_image_all(struct llvmpipe_resource *lpr,
 }
 
 
-/**
- * Return pointer to start of linear data for a particular 2D texture
- * image/face/slice.
- */
-static uint8_t *
-get_linear_image_address(struct llvmpipe_resource *lpr,
-                         unsigned face_slice, unsigned level)
-{
-   struct llvmpipe_texture_image *linear_img = &lpr->linear[level];
-
-   if (face_slice > 0) {
-      unsigned linear_offset =
-         face_slice * tex_image_face_size(lpr, level, LP_TEX_LAYOUT_LINEAR);
-      return (uint8_t *) linear_img->data + linear_offset;
-   }
-   else {
-      return (uint8_t *) linear_img->data;
-   }
-}
-
-
-/**
- * Return pointer to start of tiled data for a particular 2D texture
- * image/face/slice.
- */
-static uint8_t *
-get_tiled_image_address(struct llvmpipe_resource *lpr,
-                        unsigned face_slice, unsigned level)
-{
-   struct llvmpipe_texture_image *tiled_img = &lpr->tiled[level];
-
-   if (face_slice > 0) {
-      unsigned tiled_offset =
-         face_slice * tex_image_face_size(lpr, level, LP_TEX_LAYOUT_TILED);
-      return (uint8_t *) tiled_img->data + tiled_offset;
-   }
-   else {
-      return (uint8_t *) tiled_img->data;
-   }
-}
-
-
 /**
  * Get pointer to a linear image (not the tile!) where the tile at (x,y)
  * is known to be in linear layout.
@@ -1079,10 +1038,12 @@ llvmpipe_get_texture_tile_linear(struct llvmpipe_resource *lpr,
    }
 
    /* compute address of the slice/face of the image that contains the tile */
-   tiled_image = get_tiled_image_address(lpr, face_slice, level);
-   linear_image = get_linear_image_address(lpr, face_slice, level);
-
+   tiled_image = llvmpipe_get_texture_image_address(lpr, face_slice, level,
+                                                    LP_TEX_LAYOUT_TILED);
+   linear_image = llvmpipe_get_texture_image_address(lpr, face_slice, level,
+                                                     LP_TEX_LAYOUT_LINEAR);
 
+   /* get current tile layout and determine if data conversion is needed */
    cur_layout = llvmpipe_get_texture_tile_layout(lpr, face_slice, level, tx, ty);
 
    layout_logic(cur_layout, LP_TEX_LAYOUT_LINEAR, usage,
@@ -1128,8 +1089,10 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
    }
 
    /* compute address of the slice/face of the image that contains the tile */
-   tiled_image = get_tiled_image_address(lpr, face_slice, level);
-   linear_image = get_linear_image_address(lpr, face_slice, level);
+   tiled_image = llvmpipe_get_texture_image_address(lpr, face_slice, level,
+                                                    LP_TEX_LAYOUT_TILED);
+   linear_image = llvmpipe_get_texture_image_address(lpr, face_slice, level,
+                                                     LP_TEX_LAYOUT_LINEAR);
 
    /* get current tile layout and see if we need to convert the data */
    cur_layout = llvmpipe_get_texture_tile_layout(lpr, face_slice, level, tx, ty);