i965/miptree: Use intel_miptree_copy for maps
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 6 Dec 2016 20:03:28 +0000 (12:03 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 13 Dec 2016 23:48:34 +0000 (15:48 -0800)
What we're really doing is copying a texture not blitting it in the sense
of glBlitFramebuffers.  Also, the intel_miptree_copy function is capable of
properly handling compressed textures which intel_miptree_blit is not.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97473
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index c4afab9..11ad31d 100644 (file)
@@ -2598,12 +2598,10 @@ intel_miptree_map_blit(struct brw_context *brw,
     * temporary buffer back out.
     */
    if (!(map->mode & GL_MAP_INVALIDATE_RANGE_BIT)) {
-      if (!intel_miptree_blit(brw,
-                              mt, level, slice,
-                              map->x, map->y, false,
-                              map->linear_mt, 0, 0,
-                              0, 0, false,
-                              map->w, map->h, GL_COPY)) {
+      if (!intel_miptree_copy(brw,
+                              mt, level, slice, map->x, map->y,
+                              map->linear_mt, 0, 0, 0, 0,
+                              map->w, map->h)) {
          fprintf(stderr, "Failed to blit\n");
          goto fail;
       }
@@ -2636,12 +2634,10 @@ intel_miptree_unmap_blit(struct brw_context *brw,
    intel_miptree_unmap_raw(map->linear_mt);
 
    if (map->mode & GL_MAP_WRITE_BIT) {
-      bool ok = intel_miptree_blit(brw,
-                                   map->linear_mt, 0, 0,
-                                   0, 0, false,
-                                   mt, level, slice,
-                                   map->x, map->y, false,
-                                   map->w, map->h, GL_COPY);
+      bool ok = intel_miptree_copy(brw,
+                                   map->linear_mt, 0, 0, 0, 0,
+                                   mt, level, slice, map->x, map->y,
+                                   map->w, map->h);
       WARN_ONCE(!ok, "Failed to blit from linear temporary mapping");
    }