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@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
#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
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;
/* 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();
}