Since the MapTextureImage changes on Intel, nwn had corruption in the scrollbar at the load game menu, and corrupted ground textures in the starting zone.
The issue was this code now seeing dstRowStride aligned to hardware requirements instead of a temporary buffer that gets uploaded to hardware later. The existing code was just trying to memcpy srcRowStride * height / bh, while the glCompressedTexSubImage2D() storage code nearby did the correct walking by blockheight rows at a time. Just reuse the subimage upload instead of duplicating that logic. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41451 --- (a piglit test is in progress for this, but not finished yet because I really want to cover all the compressed formats at once) src/mesa/main/texstore.c | 32 ++++++-------------------------- 1 files changed, 6 insertions(+), 26 deletions(-) diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 0079590..424e258 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -5015,9 +5015,6 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx, struct gl_texture_object *texObj, struct gl_texture_image *texImage) { - GLubyte *dstMap; - GLint dstRowStride; - /* This is pretty simple, basically just do a memcpy without worrying * about the usual image unpacking or image transfer operations. */ @@ -5034,29 +5031,12 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx, return; } - data = _mesa_validate_pbo_compressed_teximage(ctx, imageSize, data, - &ctx->Unpack, - "glCompressedTexImage2D"); - if (!data) - return; - - - /* Map dest texture buffer (write to whole region) */ - ctx->Driver.MapTextureImage(ctx, texImage, 0, - 0, 0, width, height, - GL_MAP_WRITE_BIT, - &dstMap, &dstRowStride); - if (dstMap) { - /* copy the data */ - memcpy(dstMap, data, imageSize); - - ctx->Driver.UnmapTextureImage(ctx, texImage, 0); - } - else { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D"); - } - - _mesa_unmap_teximage_pbo(ctx, &ctx->Unpack); + _mesa_store_compressed_texsubimage2d(ctx, target, level, + 0, 0, + width, height, + texImage->TexFormat, + imageSize, data, + texObj, texImage); } -- 1.7.7.3 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
