Mesa (master): virgl: factor out format host bits check

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 20 07:18:47 UTC 2019


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

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Fri Apr 12 09:52:31 2019 +0200

virgl: factor out format host bits check

This will make it a single location when we want to replace a format.

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh at chromium.org>

---

 src/gallium/drivers/virgl/virgl_screen.c | 33 ++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index 7d09ecc1bd8..e8fbdac6544 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -593,6 +593,18 @@ virgl_is_vertex_format_supported(struct pipe_screen *screen,
    return TRUE;
 }
 
+static boolean
+virgl_format_check_bitmask(enum pipe_format format,
+                           uint32_t bitmask[16])
+{
+   int big = format / 32;
+   int small = format % 32;
+   if ((bitmask[big] & (1 << small)))
+      return TRUE;
+
+   return FALSE;
+}
+
 /**
  * Query format support for creating a texture, drawing surface, etc.
  * \param format  the format to test
@@ -680,12 +692,9 @@ virgl_is_format_supported( struct pipe_screen *screen,
           format_desc->block.height != 1)
          return FALSE;
 
-      {
-         int big = format / 32;
-         int small = format % 32;
-         if (!(vscreen->caps.caps.v1.render.bitmask[big] & (1 << small)))
-            return FALSE;
-      }
+      if (!virgl_format_check_bitmask(format,
+                                      vscreen->caps.caps.v1.render.bitmask))
+         return FALSE;
    }
 
    if (bind & PIPE_BIND_DEPTH_STENCIL) {
@@ -728,16 +737,8 @@ virgl_is_format_supported( struct pipe_screen *screen,
       return FALSE;
 
  out_lookup:
-   {
-      int big = format / 32;
-      int small = format % 32;
-      if (!(vscreen->caps.caps.v1.sampler.bitmask[big] & (1 << small)))
-         return FALSE;
-   }
-   /*
-    * Everything else should be supported by u_format.
-    */
-   return TRUE;
+   return virgl_format_check_bitmask(format,
+                                     vscreen->caps.caps.v1.sampler.bitmask);
 }
 
 static void virgl_flush_frontbuffer(struct pipe_screen *screen,




More information about the mesa-commit mailing list