blorp_mcs_partial_resolve(batch, &surf, format,
base_layer, layer_count);
break;
- case ISL_AUX_OP_FULL_RESOLVE:
case ISL_AUX_OP_AMBIGUATE:
+ blorp_mcs_ambiguate(batch, &surf, base_layer, layer_count);
+ break;
+ case ISL_AUX_OP_FULL_RESOLVE:
default:
unreachable("Unsupported MCS operation");
}
* with the MCS referring to an invalid plane because not all bits of
* the MCS value are actually used. Even though we've never seen issues
* in the wild, it's best to play it safe and initialize the MCS. We
- * can use a fast-clear for MCS because we only ever touch from render
- * and texture (no image load store).
+ * could use a fast-clear for MCS because we only ever touch from render
+ * and texture (no image load store). However, due to WA 14013111325,
+ * we choose to ambiguate MCS as well.
*/
if (image->vk.samples == 1) {
for (uint32_t l = 0; l < level_count; l++) {
image->planes[plane].primary_surface.isl.format,
ISL_SWIZZLE_IDENTITY,
aspect, base_layer, layer_count,
- ISL_AUX_OP_FAST_CLEAR, NULL, false);
+ ISL_AUX_OP_AMBIGUATE, NULL, false);
}
return;
}