[Mesa-dev] [PATCH v03 21/38] i965: Add brw_get_line_width_float.

Rafael Antognolli rafael.antognolli at intel.com
Tue May 2 01:43:09 UTC 2017


That helper function returns the line width as a float, and is then used
by brw_get_line_width to return the fixed point width.

Signed-off-by: Rafael Antognolli <rafael.antognolli at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
---
 src/mesa/drivers/dri/i965/brw_util.h | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_util.h b/src/mesa/drivers/dri/i965/brw_util.h
index 3e9a6ee..7395d34 100644
--- a/src/mesa/drivers/dri/i965/brw_util.h
+++ b/src/mesa/drivers/dri/i965/brw_util.h
@@ -40,8 +40,8 @@ extern GLuint brw_translate_blend_factor( GLenum factor );
 extern GLuint brw_translate_blend_equation( GLenum mode );
 extern GLenum brw_fix_xRGB_alpha(GLenum function);
 
-static inline uint32_t
-brw_get_line_width(struct brw_context *brw)
+static inline float
+brw_get_line_width_float(struct brw_context *brw)
 {
    /* From the OpenGL 4.4 spec:
     *
@@ -52,14 +52,9 @@ brw_get_line_width(struct brw_context *brw)
    float line_width =
       CLAMP(!_mesa_is_multisample_enabled(&brw->ctx) && !brw->ctx.Line.SmoothFlag
             ? roundf(brw->ctx.Line.Width) : brw->ctx.Line.Width,
-            0.0f, brw->ctx.Const.MaxLineWidth);
-   uint32_t line_width_u3_7 = U_FIXED(line_width, 7);
+            0.125f, brw->ctx.Const.MaxLineWidth);
 
-   /* Line width of 0 is not allowed when MSAA enabled */
-   if (_mesa_is_multisample_enabled(&brw->ctx)) {
-      if (line_width_u3_7 == 0)
-         line_width_u3_7 = 1;
-   } else if (brw->ctx.Line.SmoothFlag && line_width < 1.5f) {
+   if (!_mesa_is_multisample_enabled(&brw->ctx) && brw->ctx.Line.SmoothFlag && line_width < 1.5f) {
       /* For 1 pixel line thickness or less, the general
        * anti-aliasing algorithm gives up, and a garbage line is
        * generated.  Setting a Line Width of 0.0 specifies the
@@ -71,10 +66,18 @@ brw_get_line_width(struct brw_context *brw)
        * bspec section 6.3.12.1 Zero-Width (Cosmetic) Line
        * Rasterization.
        */
-      line_width_u3_7 = 0;
+      line_width = 0.0f;
    }
 
-   return line_width_u3_7;
+   return line_width;
+}
+
+static inline uint32_t
+brw_get_line_width(struct brw_context *brw)
+{
+   float line_width = brw_get_line_width_float(brw);
+
+   return U_FIXED(line_width, 7);
 }
 
 #endif
-- 
git-series 0.9.1


More information about the mesa-dev mailing list