summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-10-23 15:06:11 -0700
committerJason Ekstrand <[email protected]>2018-02-21 18:18:16 -0800
commit344b57b10b85c9e466367d83dcfc5b578e73efca (patch)
treedd9e08ff6482f8509c19692335fb1d91c8f2babd
parent5b1b710e6f5321bed06b8c28524d8360412545f7 (diff)
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 <[email protected]> Reviewed-by: Chad Versace <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/intel_mipmap_tree.c6
-rw-r--r--src/mesa/drivers/dri/i965/intel_tex.c2
-rw-r--r--src/mesa/drivers/dri/i965/intel_tex_obj.h4
-rw-r--r--src/mesa/drivers/dri/i965/intel_tex_validate.c2
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 6d35c9d3928..819c36b2135 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 65a1cb37d45..0650b6e629c 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 27c18b7c3ce..526f5ceb478 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 e68d0cbb8a2..eaa60ba0ce5 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;
}