summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2011-10-05 21:14:37 -0600
committerBrian Paul <[email protected]>2011-10-05 21:14:37 -0600
commitcf2439e2463ce925e3e256a25a505cf0586963f0 (patch)
treebc9f6e46b839a5844999b54adc192e6105601676 /src/mesa/state_tracker
parentaff65241c8bf6206c6dfcbe774b87991f965d46f (diff)
st/mesa: don't use gl_texture_image::RowStride
It's always the same as the texture width.
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index de3b972cfd4..1b93c9d0614 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -1685,16 +1685,18 @@ copy_image_data_to_texture(struct st_context *st,
pipe_resource_reference(&stImage->pt, NULL);
}
else if (stImage->TexData) {
+ /* Copy from malloc'd memory */
+ /* XXX this should be re-examined/tested with a compressed format */
+ GLuint blockSize = util_format_get_blocksize(stObj->pt->format);
+ GLuint srcRowStride = stImage->base.Width * blockSize;
+ GLuint srcSliceStride = stImage->base.Height * srcRowStride;
st_texture_image_data(st,
stObj->pt,
stImage->base.Face,
dstLevel,
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));
+ srcRowStride,
+ srcSliceStride);
_mesa_align_free(stImage->TexData);
stImage->TexData = NULL;
}