OSDN Git Service

radeonsi: emit sample locations also when nr_samples == 1
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Tue, 15 Nov 2016 14:42:18 +0000 (15:42 +0100)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 18 Nov 2016 08:48:46 +0000 (09:48 +0100)
Since the state tracker now enables MSAA in the hardware for the case
nr_samples == 1 as well, we need to set sample locations correctly for
this case.

The Polaris override is still needed for the non-MSAA case (when
nr_samples == 0).

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
src/gallium/drivers/radeonsi/si_state.c

index c64bb5b..818a393 100644 (file)
@@ -2632,7 +2632,10 @@ static void si_emit_msaa_sample_locs(struct si_context *sctx,
        /* On Polaris, the small primitive filter uses the sample locations
         * even when MSAA is off, so we need to make sure they're set to 0.
         */
-       if ((nr_samples > 1 || sctx->b.family >= CHIP_POLARIS10) &&
+       if (sctx->b.family >= CHIP_POLARIS10)
+               nr_samples = MAX2(nr_samples, 1);
+
+       if (nr_samples >= 1 &&
            (nr_samples != sctx->msaa_sample_locs.nr_samples)) {
                sctx->msaa_sample_locs.nr_samples = nr_samples;
                cayman_emit_msaa_sample_locs(cs, nr_samples);