Mesa (master): i965: Use ffs() for sample counting in gen7_surface_msaa_bits().

Kenneth Graunke kwg at kemper.freedesktop.org
Wed Feb 19 23:41:05 UTC 2014


Module: Mesa
Branch: master
Commit: 6eeae17c02267c57ba3f9f2ace6252fb50dbc9ec
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6eeae17c02267c57ba3f9f2ace6252fb50dbc9ec

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Feb 10 11:06:03 2014 -0800

i965: Use ffs() for sample counting in gen7_surface_msaa_bits().

The enumerations are just log2(num_samples) shifted by 3, which we can
easily compute via ffs().

This also makes it reusable for Broadwell, which has 2x MSAA.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Eric Anholt <eric at anholt.net>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/mesa/drivers/dri/i965/gen7_wm_surface_state.c |   10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
index 12d0fa9..154a0fd 100644
--- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
@@ -82,12 +82,10 @@ gen7_surface_msaa_bits(unsigned num_samples, enum intel_msaa_layout layout)
 {
    uint32_t ss4 = 0;
 
-   if (num_samples > 4)
-      ss4 |= GEN7_SURFACE_MULTISAMPLECOUNT_8;
-   else if (num_samples > 1)
-      ss4 |= GEN7_SURFACE_MULTISAMPLECOUNT_4;
-   else
-      ss4 |= GEN7_SURFACE_MULTISAMPLECOUNT_1;
+   assert(num_samples <= 8);
+
+   /* The SURFACE_MULTISAMPLECOUNT_X enums are simply log2(num_samples) << 3. */
+   ss4 |= (ffs(MAX2(num_samples, 1)) - 1) << 3;
 
    if (layout == INTEL_MSAA_LAYOUT_IMS)
       ss4 |= GEN7_SURFACE_MSFMT_DEPTH_STENCIL;




More information about the mesa-commit mailing list