r600g: use better sample positions for 8x MSAA
authorMarek Olšák <maraeo@gmail.com>
Sat, 27 Oct 2012 14:31:19 +0000 (16:31 +0200)
committerMarek Olšák <maraeo@gmail.com>
Tue, 30 Oct 2012 23:55:23 +0000 (00:55 +0100)
Taken from the intel driver. The sample positions are actually a solution
to the 8 queens puzzle.  It gives more accurate and smoother AA.

src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600_state.c

index 17b7e9d2c72fdcda2f88114b86afeb6a0b90fede..ab9a7a5860353c37d07a5b29f85a5826097be52e 100644 (file)
@@ -1723,16 +1723,16 @@ static void evergreen_emit_msaa_state(struct r600_context *rctx, int nr_samples)
        static unsigned max_dist_4x = 6;
        /* 8xMSAA */
        static uint32_t sample_locs_8x[] = {
-               FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
-               FILL_SREG( 6,  0, 0,  0, -5, 3,  4,  4),
-               FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
-               FILL_SREG( 6,  0, 0,  0, -5, 3,  4,  4),
-               FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
-               FILL_SREG( 6,  0, 0,  0, -5, 3,  4,  4),
-               FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
-               FILL_SREG( 6,  0, 0,  0, -5, 3,  4,  4),
+               FILL_SREG(-1,  1,  1,  5,  3, -5,  5,  3),
+               FILL_SREG(-7, -1, -3, -7,  7, -3, -5,  7),
+               FILL_SREG(-1,  1,  1,  5,  3, -5,  5,  3),
+               FILL_SREG(-7, -1, -3, -7,  7, -3, -5,  7),
+               FILL_SREG(-1,  1,  1,  5,  3, -5,  5,  3),
+               FILL_SREG(-7, -1, -3, -7,  7, -3, -5,  7),
+               FILL_SREG(-1,  1,  1,  5,  3, -5,  5,  3),
+               FILL_SREG(-7, -1, -3, -7,  7, -3, -5,  7),
        };
-       static unsigned max_dist_8x = 8;
+       static unsigned max_dist_8x = 7;
 
        struct radeon_winsys_cs *cs = rctx->cs;
        unsigned max_dist = 0;
index 1a8d55e8d3664ab488c82b1d007d072377d556e2..607a89e30aa5352b0bf1125af428b9494b3d2585 100644 (file)
@@ -1587,10 +1587,10 @@ static void r600_emit_msaa_state(struct r600_context *rctx, int nr_samples)
        };
        static unsigned max_dist_4x = 6;
        static uint32_t sample_locs_8x[] = {
-               FILL_SREG(-2, -5, 3, -4, -1, 5, -6, -2),
-               FILL_SREG( 6,  0, 0,  0, -5, 3,  4,  4),
+               FILL_SREG(-1,  1,  1,  5,  3, -5,  5,  3),
+               FILL_SREG(-7, -1, -3, -7,  7, -3, -5,  7),
        };
-       static unsigned max_dist_8x = 8;
+       static unsigned max_dist_8x = 7;
 
        struct radeon_winsys_cs *cs = rctx->cs;
        unsigned max_dist = 0;