Basic 4x MSAA support now works on Gen7. This patch enables it.
As with Gen6, MSAA support is still fairly preliminary. In
particular, the following are not yet supported:
- 8x oversampling (Gen7 has hardware support for this, but we do not
yet expose it).
- Fully general blits between MSAA and non-MSAA buffers.
- Formats other than RGBA8, DEPTH24, and STENCIL8.
- Centrold interpolation.
- Coverage parameters (glSampleCoverage, GL_SAMPLE_ALPHA_TO_COVERAGE,
GL_SAMPLE_ALPHA_TO_ONE, GL_SAMPLE_COVERAGE, GL_SAMPLE_COVERAGE_VALUE,
GL_SAMPLE_COVERAGE_INVERT).
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
{
struct intel_context *intel = &brw->intel;
- /* TODO: MSAA only implemented on Gen6 */
- if (intel->gen != 6) {
- assert(num_samples == 0);
- }
+ /* TODO: 8x MSAA not implemented */
+ assert(num_samples <= 4);
int len = intel->gen >= 7 ? 4 : 3;
BEGIN_BATCH(len);
{
struct intel_context *intel = &brw->intel;
- /* TODO: MSAA only implemented on Gen6 */
- if (intel->gen != 6) {
- assert(num_samples == 0);
- }
+ /* TODO: 8x MSAA not implemented */
+ assert(num_samples <= 4);
BEGIN_BATCH(2);
OUT_BATCH(_3DSTATE_SAMPLE_MASK << 16 | (2 - 2));
else
return 0;
case 7:
- /* TODO: MSAA only implemented on Gen6 */
+ /* TODO: Gen7 supports only 4x multisampling at the moment. */
+ if (num_samples > 0)
+ return 4;
+ else
+ return 0;
return 0;
default:
/* MSAA unsupported */