On Mon, Apr 22, 2013 at 11:14 AM, Eric Anholt <e...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev