[Mesa-dev] [PATCH 3/3] i965: Program 2x MSAA sample positions.
Kenneth Graunke
kenneth at whitecape.org
Sun Feb 9 16:56:20 PST 2014
There are only two sensible placements for 2x MSAA samples - and one is
the mirror image of the other. I chose (0.25, 0.25) and (0.75, 0.75).
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
src/mesa/drivers/dri/i965/brw_multisample_state.h | 11 +++++++++++
src/mesa/drivers/dri/i965/gen6_multisample_state.c | 3 +++
src/mesa/drivers/dri/i965/gen8_multisample_state.c | 6 ++----
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_multisample_state.h b/src/mesa/drivers/dri/i965/brw_multisample_state.h
index 2e02500..26633e7 100644
--- a/src/mesa/drivers/dri/i965/brw_multisample_state.h
+++ b/src/mesa/drivers/dri/i965/brw_multisample_state.h
@@ -24,6 +24,17 @@
#include <stdint.h>
/**
+ * 1x MSAA has a single sample at the center: (0.5, 0.5) -> (0x8, 0x8).
+ *
+ * 2x MSAA sample positions are (0.25, 0.25) and (0.75, 0.75):
+ * 4 c
+ * 4 0
+ * c 1
+ */
+static const uint32_t
+brw_multisample_positions_1x_2x = 0x0088cc44;
+
+/**
* Sample positions:
* 2 6 a e
* 2 0
diff --git a/src/mesa/drivers/dri/i965/gen6_multisample_state.c b/src/mesa/drivers/dri/i965/gen6_multisample_state.c
index cdc9ef8..5d65453 100644
--- a/src/mesa/drivers/dri/i965/gen6_multisample_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_multisample_state.c
@@ -38,6 +38,9 @@ gen6_get_sample_position(struct gl_context *ctx,
case 1:
result[0] = result[1] = 0.5f;
return;
+ case 2:
+ bits = brw_multisample_positions_1x_2x >> (8 * index);
+ break;
case 4:
bits = brw_multisample_positions_4x >> (8 * index);
break;
diff --git a/src/mesa/drivers/dri/i965/gen8_multisample_state.c b/src/mesa/drivers/dri/i965/gen8_multisample_state.c
index e137efe..64c7208 100644
--- a/src/mesa/drivers/dri/i965/gen8_multisample_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_multisample_state.c
@@ -87,10 +87,8 @@ gen8_emit_3dstate_sample_pattern(struct brw_context *brw)
/* 4x MSAA */
OUT_BATCH(brw_multisample_positions_4x);
- /* 2x and 1x MSAA patterns
- * XXX: need to program 2x.
- */
- OUT_BATCH(0x00880000);
+ /* 1x and 2x MSAA */
+ OUT_BATCH(brw_multisample_positions_1x_2x);
ADVANCE_BATCH();
}
--
1.8.5.2
More information about the mesa-dev
mailing list