diff options
author | Kenneth Graunke <[email protected]> | 2014-02-09 16:41:30 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2014-02-10 08:18:29 -0800 |
commit | a21552a96b8cfafa933cab2fd49a389317a1b44e (patch) | |
tree | 5b78773684bfb99a71fd9f79b33da1a5a24588d2 | |
parent | f4bc0ac83eee968b7a0f18fa8e1ecdc1ba2ddf9e (diff) |
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 <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Reviewed-by: Chris Forbes <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_multisample_state.h | 11 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_multisample_state.c | 3 | ||||
-rw-r--r-- | 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 2e0250004da..26633e72983 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 cdc9ef8f075..5d65453a675 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 e137efe0d30..64c720807d2 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(); } |