i965: Implement fast color clears using meta operations
[mesa.git] / src / mesa / drivers / dri / i965 / intel_tex_copy.c
index 97f1569330d1702853ea0373c7877eafb64f98cb..d55539a2578e3641b2f56246c77671b56ef43dee 100644 (file)
@@ -52,6 +52,7 @@ intel_copy_texsubimage(struct brw_context *brw,
                        GLint x, GLint y, GLsizei width, GLsizei height)
 {
    const GLenum internalFormat = intelImage->base.Base.InternalFormat;
+   bool ret;
 
    intel_prepare_render(brw);
 
@@ -79,17 +80,19 @@ intel_copy_texsubimage(struct brw_context *brw,
    int dst_slice = slice + intelImage->base.Base.Face +
                    intelImage->base.Base.TexObject->MinLayer;
 
+   _mesa_unlock_texture(&brw->ctx, intelImage->base.Base.TexObject);
+
    /* blit from src buffer to texture */
-   if (!intel_miptree_blit(brw,
-                           irb->mt, irb->mt_level, irb->mt_layer,
-                           x, y, irb->Base.Base.Name == 0,
-                           intelImage->mt, dst_level, dst_slice,
-                           dstx, dsty, false,
-                           width, height, GL_COPY)) {
-      return false;
-   }
+   ret = intel_miptree_blit(brw,
+                            irb->mt, irb->mt_level, irb->mt_layer,
+                            x, y, irb->Base.Base.Name == 0,
+                            intelImage->mt, dst_level, dst_slice,
+                            dstx, dsty, false,
+                            width, height, GL_COPY);
+
+   _mesa_lock_texture(&brw->ctx, intelImage->base.Base.TexObject);
 
-   return true;
+   return ret;
 }