mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 15:38:09 +02:00
swrast: Clean up and explain the mapping process.
v2: Move slice height calculation to a helper function (recommeded by Brian). Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1) Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
741e540055
commit
f709c31c67
2 changed files with 17 additions and 10 deletions
|
|
@ -380,6 +380,9 @@ _swrast_map_textures(struct gl_context *ctx);
|
|||
extern void
|
||||
_swrast_unmap_textures(struct gl_context *ctx);
|
||||
|
||||
extern unsigned int
|
||||
_swrast_teximage_slice_height(struct gl_texture_image *texImage);
|
||||
|
||||
extern void
|
||||
_swrast_map_texture(struct gl_context *ctx, struct gl_texture_object *texObj);
|
||||
|
||||
|
|
|
|||
|
|
@ -68,6 +68,18 @@ texture_slices(struct gl_texture_image *texImage)
|
|||
return texImage->Depth;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
_swrast_teximage_slice_height(struct gl_texture_image *texImage)
|
||||
{
|
||||
/* For 1D array textures, the slices are all 1 pixel high, and Height is
|
||||
* the number of slices.
|
||||
*/
|
||||
if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY)
|
||||
return 1;
|
||||
else
|
||||
return texImage->Height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.AllocTextureImageBuffer()
|
||||
*/
|
||||
|
|
@ -219,18 +231,10 @@ _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) {
|
||||
if (slice != 0) {
|
||||
GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat,
|
||||
texImage->Width,
|
||||
texImage->Height,
|
||||
1);
|
||||
map += slice * sliceSize;
|
||||
} else if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY) {
|
||||
GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat,
|
||||
texImage->Width,
|
||||
1,
|
||||
_swrast_teximage_slice_height(texImage),
|
||||
1);
|
||||
map += slice * sliceSize;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue