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

2015-04-23 Thread Predut, Marius
 -Original Message-
 From: Matt Turner [mailto:matts...@gmail.com]
 Sent: Thursday, April 23, 2015 12:55 AM
 To: Predut, Marius
 Cc: mesa-dev@lists.freedesktop.org
 Subject: Re: [Mesa-dev] [PATCH v4] i965/aa: fixing anti-aliasing bug for
 thinnest width lines - GEN7
 
 On Thu, Apr 2, 2015 at 4:30 AM, Predut, Marius marius.pre...@intel.com
 wrote:
  Please review by feedback please :-)
 
  -Original Message-
  From: Predut, Marius
  Sent: Thursday, March 19, 2015 9:34 PM
  To: mesa-dev@lists.freedesktop.org
  Cc: Predut, Marius
  Subject: [Mesa-dev][PATCH v4] i965/aa: fixing anti-aliasing bug for thinnest
 width lines - GEN7
 
 I was confused by the fact that there were separate Gen6 and Gen7
 patches. That's fine, though I probably wouldn't bother doing it
 myself, but if that's what you want you definitely should send them as
 a 2 patch series.
 
 Having just two nearly identically named patches is prone to confusion.
 

I had prepared ,developed and tests the patches on the 2 different machines(SNB 
and IVB) this is the reason for.
Also the patches can be applied independently , only the fix is identical.

  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.
 
  v2: Daniel Stone: Fix = used instead of == in an if-statement.
  v3: Ian Romanick: Use ._Enabled flag insteed .Enabled.
  Add code comments. re-word wrap the commit message.
  Add a complete bugzillia list.
  Improve the hardcoded values to produce better results.
 
  Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28832
  Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=9951
  Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=27007
  Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60797
  Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=15006
 
  Signed-off-by: Marius Predut marius.pre...@intel.com
  ---
   src/mesa/drivers/dri/i965/gen7_sf_state.c |   21 ++---
   1 file changed, 18 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..e33cb79 100644
  --- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
  +++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
  @@ -198,9 +198,24 @@ 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;
  +  /* Line width of 0 is not allowed when MSAA enabled */
  +  if (ctx-Multisample._Enabled) {
  + if (line_width_u3_7 == 0)
  + line_width_u3_7 = 1;
  +  } else if (ctx-Line.SmoothFlag  ctx-Line.Width = 1.49) {
 
 I don't know what 1.49 is. Presumably you're checking for values that
 line widths that round-to-nearest to 1.0? If so, shouldn't that be
 ctx-Line.Width  1.5?

Yep, I use your version.( I supposed nobody thinking for lines width with the 3 
decimals value :-)

 
  + /* For lines less than 1 pixel thick, the general
 
 But then the comment says less than 1 pixel thick, so I don't
 understand -- and it's not helping that I don't really know anything
 about this code to begin with. :)
 
 Presumably the comment in the commit message saying for 1 pixel line
 thickness or less is more correct.
 
 For what it's worth, I did confirm that this patch makes the
 line-aa-width test in piglit go from fail - pass on my Haswell.

Typo fixed.

 
  +  * anti-aliasing algorithm gives up, and a 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.
  +  */
  + line_width_u3_7 = 0;
  +  }
 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 mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2015-04-22 Thread Matt Turner
On Thu, Apr 2, 2015 at 4:30 AM, Predut, Marius marius.pre...@intel.com wrote:
 Please review by feedback please :-)

 -Original Message-
 From: Predut, Marius
 Sent: Thursday, March 19, 2015 9:34 PM
 To: mesa-dev@lists.freedesktop.org
 Cc: Predut, Marius
 Subject: [Mesa-dev][PATCH v4] i965/aa: fixing anti-aliasing bug for thinnest 
 width lines - GEN7

I was confused by the fact that there were separate Gen6 and Gen7
patches. That's fine, though I probably wouldn't bother doing it
myself, but if that's what you want you definitely should send them as
a 2 patch series.

Having just two nearly identically named patches is prone to confusion.

 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.

 v2: Daniel Stone: Fix = used instead of == in an if-statement.
 v3: Ian Romanick: Use ._Enabled flag insteed .Enabled.
 Add code comments. re-word wrap the commit message.
 Add a complete bugzillia list.
 Improve the hardcoded values to produce better results.

 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28832
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=9951
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=27007
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60797
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=15006

 Signed-off-by: Marius Predut marius.pre...@intel.com
 ---
  src/mesa/drivers/dri/i965/gen7_sf_state.c |   21 ++---
  1 file changed, 18 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..e33cb79 100644
 --- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
 +++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
 @@ -198,9 +198,24 @@ 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;
 +  /* Line width of 0 is not allowed when MSAA enabled */
 +  if (ctx-Multisample._Enabled) {
 + if (line_width_u3_7 == 0)
 + line_width_u3_7 = 1;
 +  } else if (ctx-Line.SmoothFlag  ctx-Line.Width = 1.49) {

I don't know what 1.49 is. Presumably you're checking for values that
line widths that round-to-nearest to 1.0? If so, shouldn't that be
ctx-Line.Width  1.5?

 + /* For lines less than 1 pixel thick, the general

But then the comment says less than 1 pixel thick, so I don't
understand -- and it's not helping that I don't really know anything
about this code to begin with. :)

Presumably the comment in the commit message saying for 1 pixel line
thickness or less is more correct.

For what it's worth, I did confirm that this patch makes the
line-aa-width test in piglit go from fail - pass on my Haswell.

 +  * anti-aliasing algorithm gives up, and a 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.
 +  */
 + line_width_u3_7 = 0;
 +  }
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 mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2015-04-02 Thread Predut, Marius
Please review by feedback please :-)

-Original Message-
From: Predut, Marius 
Sent: Thursday, March 19, 2015 9:34 PM
To: mesa-dev@lists.freedesktop.org
Cc: Predut, Marius
Subject: [Mesa-dev][PATCH v4] i965/aa: fixing anti-aliasing bug for thinnest 
width lines - GEN7

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.

v2: Daniel Stone: Fix = used instead of == in an if-statement.
v3: Ian Romanick: Use ._Enabled flag insteed .Enabled.
Add code comments. re-word wrap the commit message.
Add a complete bugzillia list.
Improve the hardcoded values to produce better results.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28832
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=9951
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=27007
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60797
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=15006

Signed-off-by: Marius Predut marius.pre...@intel.com
---
 src/mesa/drivers/dri/i965/gen7_sf_state.c |   21 ++---
 1 file changed, 18 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..e33cb79 100644
--- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
@@ -198,9 +198,24 @@ 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;
+  /* Line width of 0 is not allowed when MSAA enabled */
+  if (ctx-Multisample._Enabled) {
+ if (line_width_u3_7 == 0)
+ line_width_u3_7 = 1;
+  } else if (ctx-Line.SmoothFlag  ctx-Line.Width = 1.49) {
+ /* For lines less than 1 pixel thick, the general
+  * anti-aliasing algorithm gives up, and a 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.
+  */
+ line_width_u3_7 = 0;
+  }
   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 v4] i965/aa: fixing anti-aliasing bug for thinnest width lines - GEN7

2015-03-19 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.

v2: Daniel Stone: Fix = used instead of == in an if-statement.
v3: Ian Romanick: Use ._Enabled flag insteed .Enabled.
Add code comments. re-word wrap the commit message.
Add a complete bugzillia list.
Improve the hardcoded values to produce better results.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28832
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=9951
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=27007
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60797
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=15006

Signed-off-by: Marius Predut marius.pre...@intel.com
---
 src/mesa/drivers/dri/i965/gen7_sf_state.c |   21 ++---
 1 file changed, 18 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..e33cb79 100644
--- a/src/mesa/drivers/dri/i965/gen7_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sf_state.c
@@ -198,9 +198,24 @@ 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;
+  /* Line width of 0 is not allowed when MSAA enabled */
+  if (ctx-Multisample._Enabled) {
+ if (line_width_u3_7 == 0)
+ line_width_u3_7 = 1;
+  } else if (ctx-Line.SmoothFlag  ctx-Line.Width = 1.49) {
+ /* For lines less than 1 pixel thick, the general
+  * anti-aliasing algorithm gives up, and a 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.
+  */
+ line_width_u3_7 = 0;
+  }
   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