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@jlekstrand.net>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
Topi Pohjolainen
2017-07-18 16:25:43 +03:00
parent 514d68576d
commit abb84e3f2d
+7 -4
View File
@@ -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;