mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 23:18:20 +02:00
st/mesa: completely stop using gl_texture_image::Data
Instead, use the new st_texture_image::TexData field to hold texture images that don't fit the parent object's mipmap buffer.
This commit is contained in:
parent
85f5aa1565
commit
aff65241c8
2 changed files with 19 additions and 14 deletions
|
|
@ -162,9 +162,9 @@ st_FreeTextureImageBuffer(struct gl_context * ctx, struct gl_texture_image *texI
|
|||
pipe_resource_reference(&stImage->pt, NULL);
|
||||
}
|
||||
|
||||
if (texImage->Data) {
|
||||
_mesa_align_free(texImage->Data);
|
||||
texImage->Data = NULL;
|
||||
if (stImage->TexData) {
|
||||
_mesa_align_free(stImage->TexData);
|
||||
stImage->TexData = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -482,7 +482,7 @@ st_AllocTextureImageBuffer(struct gl_context *ctx,
|
|||
assert(width > 0);
|
||||
assert(height > 0);
|
||||
assert(depth > 0);
|
||||
assert(!texImage->Data);
|
||||
assert(!stImage->TexData);
|
||||
assert(!stImage->pt); /* xxx this might be wrong */
|
||||
|
||||
/* Look if the parent texture object has space for this image */
|
||||
|
|
@ -651,10 +651,10 @@ st_TexImage(struct gl_context * ctx,
|
|||
*/
|
||||
if (stImage->pt) {
|
||||
pipe_resource_reference(&stImage->pt, NULL);
|
||||
assert(!texImage->Data);
|
||||
assert(!stImage->TexData);
|
||||
}
|
||||
else if (texImage->Data) {
|
||||
_mesa_align_free(texImage->Data);
|
||||
else if (stImage->TexData) {
|
||||
_mesa_align_free(stImage->TexData);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -756,8 +756,8 @@ st_TexImage(struct gl_context * ctx,
|
|||
width, height, depth);
|
||||
dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width);
|
||||
|
||||
texImage->Data = _mesa_align_malloc(imageSize, 16);
|
||||
dstMap = texImage->Data;
|
||||
stImage->TexData = _mesa_align_malloc(imageSize, 16);
|
||||
dstMap = stImage->TexData;
|
||||
}
|
||||
|
||||
if (!dstMap) {
|
||||
|
|
@ -1684,19 +1684,19 @@ copy_image_data_to_texture(struct st_context *st,
|
|||
|
||||
pipe_resource_reference(&stImage->pt, NULL);
|
||||
}
|
||||
else if (stImage->base.Data) {
|
||||
else if (stImage->TexData) {
|
||||
st_texture_image_data(st,
|
||||
stObj->pt,
|
||||
stImage->base.Face,
|
||||
dstLevel,
|
||||
stImage->base.Data,
|
||||
stImage->TexData,
|
||||
stImage->base.RowStride *
|
||||
util_format_get_blocksize(stObj->pt->format),
|
||||
stImage->base.RowStride *
|
||||
stImage->base.Height *
|
||||
util_format_get_blocksize(stObj->pt->format));
|
||||
_mesa_align_free(stImage->base.Data);
|
||||
stImage->base.Data = NULL;
|
||||
_mesa_align_free(stImage->TexData);
|
||||
stImage->TexData = NULL;
|
||||
}
|
||||
|
||||
pipe_resource_reference(&stImage->pt, stObj->pt);
|
||||
|
|
|
|||
|
|
@ -45,8 +45,13 @@ struct st_texture_image
|
|||
{
|
||||
struct gl_texture_image base;
|
||||
|
||||
/** Used to store texture data that doesn't fit in the patent
|
||||
* object's mipmap buffer.
|
||||
*/
|
||||
GLubyte *TexData;
|
||||
|
||||
/* If stImage->pt != NULL, image data is stored here.
|
||||
* Else if stImage->base.Data != NULL, image is stored there.
|
||||
* Else if stImage->TexData != NULL, image is stored there.
|
||||
* Else there is no image data.
|
||||
*/
|
||||
struct pipe_resource *pt;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue