summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Antognolli <[email protected]>2017-04-26 16:27:13 -0700
committerKenneth Graunke <[email protected]>2017-05-03 18:57:51 -0700
commite00d159f4d3da318d887e6057bab7c6b418e0080 (patch)
tree9703418752e905afe9f0ad478b3b391779aaa702
parent13ac46557ab14006679e104d956c6fb5858fa87f (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]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_util.h25
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