radeon: Fix flushing before writing a teximage's BO when !t->bo.
authorEric Anholt <eric@anholt.net>
Thu, 4 Aug 2011 01:29:36 +0000 (18:29 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 24 Aug 2011 17:43:20 +0000 (10:43 -0700)
Before, if we ended up here without a BO for our image, but did choose
a miptree that had active rendering in the command buffer, our
teximage data would jump ahead of the rendering using the old texture
contents.

This showed up as breakage in gen-teximage and friends in the
following commit.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/radeon/radeon_texture.c

index ce0df32bfe43b69757f01ddc877f66f3ca051d56..ad7e4c146a44fdfe3ba30cb669d4556abf92b8c8 100644 (file)
@@ -787,18 +787,6 @@ static void radeon_teximage(
        radeon_print(RADEON_TEXTURE, RADEON_NORMAL,
                        "%s %dd: texObj %p, texImage %p, face %d, level %d\n",
                        __func__, dims, texObj, texImage, face, level);
-       {
-               struct radeon_bo *bo;
-               bo = !image->mt ? image->bo : image->mt->bo;
-               if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {
-                       radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
-                               "%s Calling teximage for texture that is "
-                               "queued for GPU processing.\n",
-                               __func__);
-                       radeon_firevertices(rmesa);
-               }
-       }
-
 
        t->validated = GL_FALSE;
 
@@ -820,6 +808,18 @@ static void radeon_teximage(
                }
        }
 
+       {
+               struct radeon_bo *bo;
+               bo = !image->mt ? image->bo : image->mt->bo;
+               if (bo && radeon_bo_is_referenced_by_cs(bo, rmesa->cmdbuf.cs)) {
+                       radeon_print(RADEON_TEXTURE, RADEON_VERBOSE,
+                               "%s Calling teximage for texture that is "
+                               "queued for GPU processing.\n",
+                               __func__);
+                       radeon_firevertices(rmesa);
+               }
+       }
+
        /* Upload texture image; note that the spec allows pixels to be NULL */
        if (compressed) {
                pixels = _mesa_validate_pbo_compressed_teximage(