diff options
author | Topi Pohjolainen <[email protected]> | 2017-07-18 16:25:43 +0300 |
---|---|---|
committer | Topi Pohjolainen <[email protected]> | 2017-07-22 00:14:16 +0300 |
commit | abb84e3f2da47d69b5211d838b10b155f590acc0 (patch) | |
tree | e465b2ece29f680f0b5ab29c582ef1b139111c34 | |
parent | 514d68576dd9ecc4a73eda0079e05eb471a795b6 (diff) |
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 <[email protected]>
Signed-off-by: Topi Pohjolainen <[email protected]>
-rw-r--r-- | src/intel/isl/isl_format.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/intel/isl/isl_format.c b/src/intel/isl/isl_format.c index a9f9c6be73a..435b0d003a6 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; |