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 <rafael.antognolli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Rafael Antognolli
2017-04-26 16:27:13 -07:00
committed by Kenneth Graunke
parent 13ac46557a
commit e00d159f4d

View File

@@ -40,8 +40,8 @@ extern GLuint brw_translate_blend_factor( GLenum factor );
extern GLuint brw_translate_blend_equation( GLenum mode ); extern GLuint brw_translate_blend_equation( GLenum mode );
extern GLenum brw_fix_xRGB_alpha(GLenum function); extern GLenum brw_fix_xRGB_alpha(GLenum function);
static inline uint32_t static inline float
brw_get_line_width(struct brw_context *brw) brw_get_line_width_float(struct brw_context *brw)
{ {
/* From the OpenGL 4.4 spec: /* From the OpenGL 4.4 spec:
* *
@@ -52,14 +52,9 @@ brw_get_line_width(struct brw_context *brw)
float line_width = float line_width =
CLAMP(!_mesa_is_multisample_enabled(&brw->ctx) && !brw->ctx.Line.SmoothFlag CLAMP(!_mesa_is_multisample_enabled(&brw->ctx) && !brw->ctx.Line.SmoothFlag
? roundf(brw->ctx.Line.Width) : brw->ctx.Line.Width, ? roundf(brw->ctx.Line.Width) : brw->ctx.Line.Width,
0.0f, brw->ctx.Const.MaxLineWidth); 0.125f, brw->ctx.Const.MaxLineWidth);
uint32_t line_width_u3_7 = U_FIXED(line_width, 7);
/* Line width of 0 is not allowed when MSAA enabled */ if (!_mesa_is_multisample_enabled(&brw->ctx) && brw->ctx.Line.SmoothFlag && line_width < 1.5f) {
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) {
/* For 1 pixel line thickness or less, the general /* For 1 pixel line thickness or less, the general
* anti-aliasing algorithm gives up, and a garbage line is * anti-aliasing algorithm gives up, and a garbage line is
* generated. Setting a Line Width of 0.0 specifies the * 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 * bspec section 6.3.12.1 Zero-Width (Cosmetic) Line
* Rasterization. * 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 #endif