i965: Add helper for detecting lossless compression

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Ben Widawsky <benjamin.widawsky@intel.com>
This commit is contained in:
Topi Pohjolainen 2016-02-11 10:42:13 +02:00
parent 36b7c0dad9
commit 4b801116d3
2 changed files with 30 additions and 0 deletions

View file

@ -266,6 +266,32 @@ intel_miptree_supports_non_msrt_fast_clear(struct brw_context *brw,
return true;
}
/* On Gen9 support for color buffer compression was extended to single
* sampled surfaces. This is a helper considering both auxiliary buffer
* type and number of samples telling if the given miptree represents
* the new single sampled case - also called lossless compression.
*/
bool
intel_miptree_is_lossless_compressed(const struct brw_context *brw,
const struct intel_mipmap_tree *mt)
{
/* Only available from Gen9 onwards. */
if (brw->gen < 9)
return false;
/* Compression always requires auxiliary buffer. */
if (!mt->mcs_mt)
return false;
/* Single sample compression is represented re-using msaa compression
* layout type: "Compressed Multisampled Surfaces".
*/
if (mt->msaa_layout != INTEL_MSAA_LAYOUT_CMS)
return false;
/* And finally distinguish between msaa and single sample case. */
return mt->num_samples <= 1;
}
/**
* Determine depth format corresponding to a depth+stencil format,

View file

@ -666,6 +666,10 @@ void
intel_get_non_msrt_mcs_alignment(struct intel_mipmap_tree *mt,
unsigned *width_px, unsigned *height);
bool
intel_miptree_is_lossless_compressed(const struct brw_context *brw,
const struct intel_mipmap_tree *mt);
bool
intel_miptree_alloc_non_msrt_mcs(struct brw_context *brw,
struct intel_mipmap_tree *mt);