diff options
author | Brian Paul <[email protected]> | 2011-10-05 21:14:37 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-10-05 21:14:37 -0600 |
commit | cf2439e2463ce925e3e256a25a505cf0586963f0 (patch) | |
tree | bc9f6e46b839a5844999b54adc192e6105601676 /src/mesa/state_tracker | |
parent | aff65241c8bf6206c6dfcbe774b87991f965d46f (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.c | 12 |
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; } |