[Mesa-dev] [PATCH 03/17] swrast: Factor out texture slice counting.
Patrick Baggett
baggett.patrick at gmail.com
Mon Apr 22 10:11:28 PDT 2013
On Mon, Apr 22, 2013 at 11:14 AM, Eric Anholt <eric at anholt.net> wrote:
> This function going to get used a lot more in upcoming patches.
> ---
> src/mesa/swrast/s_texture.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c
> index 51048be..36a90dd 100644
> --- a/src/mesa/swrast/s_texture.c
> +++ b/src/mesa/swrast/s_texture.c
> @@ -58,6 +58,14 @@ _swrast_delete_texture_image(struct gl_context *ctx,
> _mesa_delete_texture_image(ctx, texImage);
> }
>
> +static unsigned int
> +texture_slices(struct gl_texture_image *texImage)
> +{
> + if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY)
> + return texImage->Height;
> + else
> + return texImage->Depth;
> +}
>
>
I think you can const-qualify 'texImage'.
> /**
> * Called via ctx->Driver.AllocTextureImageBuffer()
> @@ -83,11 +91,11 @@ _swrast_alloc_texture_image_buffer(struct gl_context
> *ctx,
> * We allocate the array for 1D/2D textures too in order to avoid
> special-
> * case code in the texstore routines.
> */
> - swImg->ImageOffsets = malloc(texImage->Depth * sizeof(GLuint));
> + swImg->ImageOffsets = malloc(texture_slices(texImage) *
> sizeof(GLuint));
> if (!swImg->ImageOffsets)
> return GL_FALSE;
>
> - for (i = 0; i < texImage->Depth; i++) {
> + for (i = 0; i < texture_slices(texImage); i++) {
> swImg->ImageOffsets[i] = i * texImage->Width * texImage->Height;
> }
>
> @@ -209,20 +217,20 @@ _swrast_map_teximage(struct gl_context *ctx,
>
> map = swImage->Buffer;
>
> + assert(slice < texture_slices(texImage));
> +
> if (texImage->TexObject->Target == GL_TEXTURE_3D ||
> texImage->TexObject->Target == GL_TEXTURE_2D_ARRAY) {
> GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat,
> texImage->Width,
> texImage->Height,
> 1);
> - assert(slice < texImage->Depth);
> map += slice * sliceSize;
> } else if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY) {
> GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat,
> texImage->Width,
> 1,
> 1);
> - assert(slice < texImage->Height);
> map += slice * sliceSize;
> }
>
> --
> 1.7.10.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130422/db7b3335/attachment.html>
More information about the mesa-dev
mailing list