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:

committed by
Kenneth Graunke

parent
13ac46557a
commit
e00d159f4d
@@ -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
|
||||||
|
Reference in New Issue
Block a user