Mesa (master): intel/isl/gen7: Allow msaa with 128-bit formats
Topi Pohjolainen
tpohjola at kemper.freedesktop.org
Fri Jul 21 21:14:59 UTC 2017
Module: Mesa
Branch: master
Commit: abb84e3f2da47d69b5211d838b10b155f590acc0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=abb84e3f2da47d69b5211d838b10b155f590acc0
Author: Topi Pohjolainen <topi.pohjolainen at intel.com>
Date: Tue Jul 18 16:25:43 2017 +0300
intel/isl/gen7: Allow msaa with 128-bit formats
These formats are already allowed by the i965 GL driver, and the
feature seems to work just fine.
There are tests for multisampled rendering in piglit:
tests/spec/ext_framebuffer_multisample which can be patched to
try GL_RGBA16F/32F/16I/16UI/32I/32UI in addition to GL_RGBA/8I.
IvyBridge passed all tests with all sample numbers and even
with 128-bit formats.
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/intel/isl/isl_format.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/intel/isl/isl_format.c b/src/intel/isl/isl_format.c
index a9f9c6be73..435b0d003a 100644
--- a/src/intel/isl/isl_format.c
+++ b/src/intel/isl/isl_format.c
@@ -554,16 +554,19 @@ isl_format_supports_multisampling(const struct gen_device_info *devinfo,
* - any compressed texture format (BC*)
* - any YCRCB* format
*
- * The restriction on the format's size is removed on Broadwell. Also,
- * there is an exception for HiZ which we treat as a compressed format and
- * is allowed to be multisampled on Broadwell and earlier.
+ * The restriction on the format's size is removed on Broadwell. Moreover,
+ * empirically it looks that even IvyBridge can handle multisampled surfaces
+ * with format sizes all the way to 128-bits (RGBA32F, RGBA32I, RGBA32UI).
+ *
+ * Also, there is an exception for HiZ which we treat as a compressed
+ * format and is allowed to be multisampled on Broadwell and earlier.
*/
if (format == ISL_FORMAT_HIZ) {
/* On SKL+, HiZ is always single-sampled even when the primary surface
* is multisampled. See also isl_surf_get_hiz_surf().
*/
return devinfo->gen <= 8;
- } else if (devinfo->gen < 8 && isl_format_get_layout(format)->bpb > 64) {
+ } else if (devinfo->gen < 7 && isl_format_get_layout(format)->bpb > 64) {
return false;
} else if (isl_format_is_compressed(format)) {
return false;
More information about the mesa-commit
mailing list