diff options
author | Rafael Antognolli <[email protected]> | 2017-04-26 16:27:13 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2017-05-03 18:57:51 -0700 |
commit | e00d159f4d3da318d887e6057bab7c6b418e0080 (patch) | |
tree | 9703418752e905afe9f0ad478b3b391779aaa702 /src/mesa | |
parent | 13ac46557ab14006679e104d956c6fb5858fa87f (diff) |
i965: Add brw_get_line_width_float.
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 <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_util.h | 25 |
1 files 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 3e9a6ee48d2..7395d345a57 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 |