Mesa (master): i965/miptree: Loosen the format check in miptree_match_image

Jason Ekstrand jekstrand at kemper.freedesktop.org
Thu Feb 22 02:18:22 UTC 2018


Module: Mesa
Branch: master
Commit: 344b57b10b85c9e466367d83dcfc5b578e73efca
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=344b57b10b85c9e466367d83dcfc5b578e73efca

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Mon Oct 23 15:06:11 2017 -0700

i965/miptree: Loosen the format check in miptree_match_image

This function is used to determine when we need to re-allocate a
miptree.  Since we do nothing different in miptree allocation for
sRGB vs. linear, loosening this should be safe and may lead to less
copying and reallocating in some odd cases.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Chad Versace <chadversary at chromium.org>

---

 src/mesa/drivers/dri/i965/intel_mipmap_tree.c  | 6 ++++--
 src/mesa/drivers/dri/i965/intel_tex.c          | 2 +-
 src/mesa/drivers/dri/i965/intel_tex_obj.h      | 4 ++--
 src/mesa/drivers/dri/i965/intel_tex_validate.c | 2 +-
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 6d35c9d392..819c36b213 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1308,7 +1308,8 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
    if (mt->etc_format != MESA_FORMAT_NONE)
       mt_format = mt->etc_format;
 
-   if (image->TexFormat != mt_format)
+   if (_mesa_get_srgb_format_linear(image->TexFormat) !=
+       _mesa_get_srgb_format_linear(mt_format))
       return false;
 
    intel_get_image_dims(image, &width, &height, &depth);
@@ -1547,7 +1548,8 @@ intel_miptree_copy_slice(struct brw_context *brw,
    assert(src_layer < get_num_phys_layers(&src_mt->surf,
                                           src_level - src_mt->first_level));
 
-   assert(src_mt->format == dst_mt->format);
+   assert(_mesa_get_srgb_format_linear(src_mt->format) ==
+          _mesa_get_srgb_format_linear(dst_mt->format));
 
    if (dst_mt->compressed) {
       unsigned int i, j;
diff --git a/src/mesa/drivers/dri/i965/intel_tex.c b/src/mesa/drivers/dri/i965/intel_tex.c
index 65a1cb37d4..0650b6e629 100644
--- a/src/mesa/drivers/dri/i965/intel_tex.c
+++ b/src/mesa/drivers/dri/i965/intel_tex.c
@@ -176,7 +176,7 @@ intel_alloc_texture_storage(struct gl_context *ctx,
    intel_texobj->needs_validate = false;
    intel_texobj->validated_first_level = 0;
    intel_texobj->validated_last_level = levels - 1;
-   intel_texobj->_Format = intel_texobj->mt->format;
+   intel_texobj->_Format = first_image->TexFormat;
 
    return true;
 }
diff --git a/src/mesa/drivers/dri/i965/intel_tex_obj.h b/src/mesa/drivers/dri/i965/intel_tex_obj.h
index 27c18b7c3c..526f5ceb47 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_obj.h
+++ b/src/mesa/drivers/dri/i965/intel_tex_obj.h
@@ -57,8 +57,8 @@ struct intel_texture_object
    bool needs_validate;
 
    /* Mesa format for the validated texture object. For non-views this
-    * will always be the same as mt->format. For views, it may differ
-    * since the mt is shared across views with differing formats.
+    * will always be the same as texObj->Image[0][0].TexFormat. For views, it
+    * may differ since the mt is shared across views with differing formats.
     */
    mesa_format _Format;
 
diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c b/src/mesa/drivers/dri/i965/intel_tex_validate.c
index e68d0cbb8a..eaa60ba0ce 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_validate.c
@@ -165,7 +165,7 @@ intel_finalize_mipmap_tree(struct brw_context *brw,
 
    intelObj->validated_first_level = validate_first_level;
    intelObj->validated_last_level = validate_last_level;
-   intelObj->_Format = intelObj->mt->format;
+   intelObj->_Format = firstImage->base.Base.TexFormat,
    intelObj->needs_validate = false;
 }
 




More information about the mesa-commit mailing list