Adjust offset for non-AA line drawing

bug:8114304

The original .375 was chosen to make GL_LINES align with Skia drawing.
The new value of .065 is chosen to be as small as possible to make
triangle-based lines align with Skia, while keeping lines drawn on
integer coordinates unambiguous as to which column/row they draw on.

Also adds more lines in CanvasCompare test to highlight the difference

Change-Id: If578684f2db320682219c3caa625cf79bc62d88f
diff --git a/libs/hwui/Program.cpp b/libs/hwui/Program.cpp
index f0b5553..14a2376 100644
--- a/libs/hwui/Program.cpp
+++ b/libs/hwui/Program.cpp
@@ -160,7 +160,7 @@
         // up and to the left.
         // This offset value is based on an assumption that some hardware may use as
         // little as 12.4 precision, so we offset by slightly more than 1/16.
-        p.translate(.375, .375, 0);
+        p.translate(.065, .065, 0);
     }
 
     mat4 t(transformMatrix);
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
index fb818d4..9939c08 100644
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
+++ b/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
@@ -41,13 +41,40 @@
     protected int mask() { return 0x0; };
 
     private static final RectF gRect = new RectF(0, 0, 200, 175);
-    private static final float[] gLinePts = new float[] {
-            100, 0, 200, 200, 200, 200, 0, 200, 0, 200, 100, 0
-    };
     private static final float[] gPts = new float[] {
             0, 100, 100, 0, 100, 200, 200, 100
     };
 
+    private static final int NUM_PARALLEL_LINES = 24;
+    private static final float[] gTriPts = new float[] {
+        75, 0, 130, 130, 130, 130, 0, 130, 0, 130, 75, 0
+    };
+    private static final float[] gLinePts = new float[NUM_PARALLEL_LINES * 8 + gTriPts.length];
+    static {
+        int index;
+        for (index = 0; index < gTriPts.length; index++) {
+            gLinePts[index] = gTriPts[index];
+        }
+        float val = 0;
+        for (int i = 0; i < NUM_PARALLEL_LINES; i++) {
+            gLinePts[index + 0] = 150;
+            gLinePts[index + 1] = val;
+            gLinePts[index + 2] = 300;
+            gLinePts[index + 3] = val;
+            index += 4;
+            val += 8 + (2.0f/NUM_PARALLEL_LINES);
+        }
+        val = 0;
+        for (int i = 0; i < NUM_PARALLEL_LINES; i++) {
+            gLinePts[index + 0] = val;
+            gLinePts[index + 1] = 150;
+            gLinePts[index + 2] = val;
+            gLinePts[index + 3] = 300;
+            index += 4;
+            val += 8 + (2.0f/NUM_PARALLEL_LINES);
+        }
+    };
+
     @SuppressWarnings("serial")
     private static final LinkedHashMap<String, LinkedHashMap<String, DisplayModifier>> gMaps = new LinkedHashMap<String, LinkedHashMap<String, DisplayModifier>>() {
         {
@@ -307,7 +334,7 @@
                             canvas.drawOval(gRect, paint);
                         }
                     });
-                    put("triLines", new DisplayModifier() {
+                    put("lines", new DisplayModifier() {
                         @Override
                         public void modifyDrawing(Paint paint, Canvas canvas) {
                             canvas.drawLines(gLinePts, paint);