Mesa (master): i965/msaa: Enable 4x MSAA on Gen7.

Paul Berry stereotype441 at kemper.freedesktop.org
Fri May 25 15:45:34 UTC 2012


Module: Mesa
Branch: master
Commit: ab014adaed14a9ca213447dc913d0dce7906be56
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab014adaed14a9ca213447dc913d0dce7906be56

Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed May  9 15:51:11 2012 -0700

i965/msaa: Enable 4x MSAA on Gen7.

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 at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/gen6_multisample_state.c |   12 ++++--------
 src/mesa/drivers/dri/intel/intel_fbo.c             |    6 +++++-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen6_multisample_state.c b/src/mesa/drivers/dri/i965/gen6_multisample_state.c
index e01ead1..3cf94f6 100644
--- a/src/mesa/drivers/dri/i965/gen6_multisample_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_multisample_state.c
@@ -36,10 +36,8 @@ gen6_emit_3dstate_multisample(struct brw_context *brw,
 {
    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);
@@ -62,10 +60,8 @@ gen6_emit_3dstate_sample_mask(struct brw_context *brw,
 {
    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));
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index bbd5f66..a801bb7 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -202,7 +202,11 @@ quantize_num_samples(struct intel_context *intel, unsigned num_samples)
       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 */




More information about the mesa-commit mailing list