From a21552a96b8cfafa933cab2fd49a389317a1b44e Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Sun, 9 Feb 2014 16:41:30 -0800 Subject: [PATCH] i965: Program 2x MSAA sample positions. 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 Reviewed-by: Ian Romanick Reviewed-by: Chris Forbes --- 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 /** + * 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(); } -- 2.7.4