diff options
Diffstat (limited to 'src/gallium/drivers')
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_texture.c | 38 | 
1 files changed, 22 insertions, 16 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c index 5da67bad1b..002669adaa 100644 --- a/src/gallium/drivers/llvmpipe/lp_texture.c +++ b/src/gallium/drivers/llvmpipe/lp_texture.c @@ -820,6 +820,24 @@ llvmpipe_set_texture_tile_layout(struct llvmpipe_resource *lpr,  /** + * Set the layout mode for all tiles in a particular image. + */ +static INLINE void +llvmpipe_set_texture_image_layout(struct llvmpipe_resource *lpr, +                                  unsigned face_slice, unsigned level, +                                  unsigned width_t, unsigned height_t, +                                  enum lp_texture_layout layout) +{ +   const unsigned start = face_slice * lpr->tiles_per_image[level]; +   unsigned i; + +   for (i = 0; i < width_t * height_t; i++) { +      lpr->layout[level][start + i] = layout; +   } +} + + +/**   * Return pointer to texture image data (either linear or tiled layout)   * for a particular cube face or 3D texture slice.   * @@ -910,15 +928,8 @@ llvmpipe_get_texture_image(struct llvmpipe_resource *lpr,        /* Just allocating tiled memory.  Don't initialize it from the         * linear data if it exists.         */ -      { -         unsigned x, y; -         for (y = 0; y < height_t; y++) { -            for (x = 0; x < width_t; x++) { -               llvmpipe_set_texture_tile_layout(lpr, face_slice, level, -                                                x, y, layout); -            } -         } -      } +      llvmpipe_set_texture_image_layout(lpr, face_slice, level, +                                        width_t, height_t, layout);        return target_data;     } @@ -961,13 +972,8 @@ llvmpipe_get_texture_image(struct llvmpipe_resource *lpr,     }     else {        /* no other data */ -      unsigned x, y; -      for (y = 0; y < height_t; y++) { -         for (x = 0; x < width_t; x++) { -            llvmpipe_set_texture_tile_layout(lpr, face_slice, level, -                                             x, y, layout); -         } -      } +      llvmpipe_set_texture_image_layout(lpr, face_slice, level, +                                        width_t, height_t, layout);     }     assert(target_data);  | 
