intel/isl: Add a drm_modifier_get_default_aux_state helper
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 12 Sep 2017 22:20:26 +0000 (15:20 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 18 Sep 2017 19:14:24 +0000 (12:14 -0700)
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
src/intel/isl/isl.h
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index ca4556ffcff9663d76cd3f7e881822ec859c3f99..df275f85c49add757a27d77c059655a0236827ac 100644 (file)
@@ -1558,6 +1558,26 @@ isl_drm_modifier_has_aux(uint64_t modifier)
    return isl_drm_modifier_get_info(modifier)->aux_usage != ISL_AUX_USAGE_NONE;
 }
 
+/** Returns the default isl_aux_state for the given modifier.
+ *
+ * All modified images are required to be kept out of the AUX_INVALID state
+ * but they may or may not actually be compressed and may or may not have
+ * clear color.  This function returns the worst case aux_state that we need
+ * to assume when getting a surface from another process or API.
+ */
+static inline enum isl_aux_state
+isl_drm_modifier_get_default_aux_state(uint64_t modifier)
+{
+   const struct isl_drm_modifier_info *mod_info =
+      isl_drm_modifier_get_info(modifier);
+
+   if (!mod_info || mod_info->aux_usage == ISL_AUX_USAGE_NONE)
+      return ISL_AUX_STATE_AUX_INVALID;
+
+   return mod_info->supports_clear_color ? ISL_AUX_STATE_COMPRESSED_CLEAR :
+                                           ISL_AUX_STATE_COMPRESSED_NO_CLEAR;
+}
+
 struct isl_extent2d ATTRIBUTE_CONST
 isl_get_interleaved_msaa_px_size_sa(uint32_t samples);
 
index 253d3a13f9d2b2b8ca2d669c6e66e2db74dc9450..5b7cde82f65afdbfd7e5bf48f2327dc7a90a1f78 100644 (file)
@@ -1075,8 +1075,7 @@ intel_miptree_create_for_dri_image(struct brw_context *brw,
        * a worst case of compression.
        */
       enum isl_aux_state initial_state =
-         mod_info->supports_clear_color ? ISL_AUX_STATE_COMPRESSED_CLEAR :
-                                          ISL_AUX_STATE_COMPRESSED_NO_CLEAR;
+         isl_drm_modifier_get_default_aux_state(image->modifier);
 
       if (!create_ccs_buf_for_image(brw, image, mt, initial_state)) {
          intel_miptree_release(&mt);