[Mesa-dev] [PATCH] i965/aa: fixing anti-aliasing bug for thinnest width lines - GEN7

2015-03-17 Thread Marius Predut
On SNB and IVB hw, for 1 pixel line thickness or less,
the general anti-aliasing algorithm give up - garbage line is generated.
Setting a Line Width of 0.0 specifies the rasterization
of the “thinnest” (one-pixel-wide), non-antialiased lines.
Lines rendered with zero Line Width are rasterized using
Grid Intersection Quantization rules as specified by
bspec section 6.3.12.1 Zero-Width (Cosmetic) Line Rasterization.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28832
Signed-off-by: Marius Predut marius.pre...@intel.com
Signed-off-by: Marius Predut Marius Predut marius.pre...@intel.com
---
 src/mesa/drivers/dri/i965/gen7_sf_state.c |   12 +---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen7_sf_state.c 
b/src/mesa/drivers/dri/i965/gen7_sf_state.c
index c9815b0..38b4f2f 100644
--- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
@@ -198,9 +198,15 @@ upload_sf_state(struct brw_context *brw)
   float line_width =
  roundf(CLAMP(ctx-Line.Width, 0.0, ctx-Const.MaxLineWidth));
   uint32_t line_width_u3_7 = U_FIXED(line_width, 7);
-  /* TODO: line width of 0 is not allowed when MSAA enabled */
-  if (line_width_u3_7 == 0)
- line_width_u3_7 = 1;
+
+  if (!(multisampled_fbo  ctx-Multisample.Enabled)) {
+ if (ctx-Line.SmoothFlag  ctx-Line.Width = 1)
+line_width_u3_7 = 0;
+  } else {
+  if (line_width_u3_7 == 0)
+ line_width_u3_7 = 1;
+  }
+
   dw2 |= line_width_u3_7  GEN6_SF_LINE_WIDTH_SHIFT;
}
if (ctx-Line.SmoothFlag) {
-- 
1.7.9.5

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH ] i965/aa: fixing anti-aliasing bug for thinnest width lines - GEN7

2015-03-17 Thread marius . predut
From: Marius Predut marius.pre...@intel.com

On SNB and IVB hw, for 1 pixel line thickness or less,
the general anti-aliasing algorithm give up - garbage line is generated.
Setting a Line Width of 0.0 specifies the rasterization
of the “thinnest” (one-pixel-wide), non-antialiased lines.
Lines rendered with zero Line Width are rasterized using
Grid Intersection Quantization rules as specified by
bspec section 6.3.12.1 Zero-Width (Cosmetic) Line Rasterization.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28832
Signed-off-by: Marius Predut marius.pre...@intel.com
---
 src/mesa/drivers/dri/i965/gen7_sf_state.c |   12 +---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen7_sf_state.c 
b/src/mesa/drivers/dri/i965/gen7_sf_state.c
index c9815b0..fbad889 100644
--- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
@@ -198,9 +198,15 @@ upload_sf_state(struct brw_context *brw)
   float line_width =
  roundf(CLAMP(ctx-Line.Width, 0.0, ctx-Const.MaxLineWidth));
   uint32_t line_width_u3_7 = U_FIXED(line_width, 7);
-  /* TODO: line width of 0 is not allowed when MSAA enabled */
-  if (line_width_u3_7 == 0)
- line_width_u3_7 = 1;
+
+  if (!(multisampled_fbo  ctx-Multisample.Enabled)) {
+ if (ctx-Line.SmoothFlag  ctx-Line.Width = 1 )
+line_width_u3_7 = 0;
+  } else {
+  if (line_width_u3_7 = 0)
+ line_width_u3_7 = 1;
+  }
+
   dw2 |= line_width_u3_7  GEN6_SF_LINE_WIDTH_SHIFT;
}
if (ctx-Line.SmoothFlag) {
-- 
1.7.9.5

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH ] i965/aa: fixing anti-aliasing bug for thinnest width lines - GEN7

2015-03-17 Thread Daniel Stone
Hi,

On 17 March 2015 at 16:37,  marius.pre...@intel.com wrote:
 --- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
 +++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
 @@ -198,9 +198,15 @@ upload_sf_state(struct brw_context *brw)
float line_width =
   roundf(CLAMP(ctx-Line.Width, 0.0, ctx-Const.MaxLineWidth));
uint32_t line_width_u3_7 = U_FIXED(line_width, 7);
 -  /* TODO: line width of 0 is not allowed when MSAA enabled */
 -  if (line_width_u3_7 == 0)
 - line_width_u3_7 = 1;
 +
 +  if (!(multisampled_fbo  ctx-Multisample.Enabled)) {
 + if (ctx-Line.SmoothFlag  ctx-Line.Width = 1 )
 +line_width_u3_7 = 0;
 +  } else {
 +  if (line_width_u3_7 = 0)
 + line_width_u3_7 = 1;

You almost certainly meant 'if (line_width_u3 == 0)', rather than an
assignment - surprised the compiler didn't throw a warning here.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev