Speed up GrDrawState handling.
Compact GrDrawState and nested structs; dynamically only copy and compare
the fields actually active on the structs in question.
Yields 10-20% speedup of text benchmarks in GPU configuration.

Could probably get additional marginal speedup by ignoring unused
kernel fields.
Has some fragile constructs: pointer math on members to compute
sizes of portions of structs.
Removes fields necessary for GrTesselatedPathRenderer.



git-svn-id: http://skia.googlecode.com/svn/trunk@2644 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrDefaultPathRenderer.cpp b/src/gpu/GrDefaultPathRenderer.cpp
index a8f673e..b9d9360 100644
--- a/src/gpu/GrDefaultPathRenderer.cpp
+++ b/src/gpu/GrDefaultPathRenderer.cpp
@@ -45,9 +45,9 @@
     kInvert_StencilOp,           kInvert_StencilOp,
     kKeep_StencilOp,             kKeep_StencilOp,
     kAlwaysIfInClip_StencilFunc, kAlwaysIfInClip_StencilFunc,
-    0xffffffff,                  0xffffffff,
-    0xffffffff,                  0xffffffff,
-    0xffffffff,                  0xffffffff
+    0xffff,                      0xffff,
+    0xffff,                      0xffff,
+    0xffff,                      0xffff
 };
 
 // ok not to check clip b/c stencil pass only wrote inside clip
@@ -55,9 +55,9 @@
     kZero_StencilOp,          kZero_StencilOp,
     kZero_StencilOp,          kZero_StencilOp,
     kNotEqual_StencilFunc,    kNotEqual_StencilFunc,
-    0xffffffff,               0xffffffff,
-    0x0,                      0x0,
-    0xffffffff,               0xffffffff
+    0xffff,                   0xffff,
+    0x0000,                   0x0000,
+    0xffff,                   0xffff
 };
 
 // have to check clip b/c outside clip will always be zero.
@@ -65,9 +65,9 @@
     kZero_StencilOp,            kZero_StencilOp,
     kZero_StencilOp,            kZero_StencilOp,
     kEqualIfInClip_StencilFunc, kEqualIfInClip_StencilFunc,
-    0xffffffff,                 0xffffffff,
-    0x0,                        0x0,
-    0xffffffff,                 0xffffffff
+    0xffff,                     0xffff,
+    0x0000,                     0x0000,
+    0xffff,                     0xffff
 };
 
 ////// Winding
@@ -80,9 +80,9 @@
     kIncWrap_StencilOp,             kDecWrap_StencilOp,
     kKeep_StencilOp,                kKeep_StencilOp,
     kAlwaysIfInClip_StencilFunc,    kAlwaysIfInClip_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0xffff,                         0xffff,
+    0xffff,                         0xffff
 };
 
 // if inc'ing the max value, invert to make 0
@@ -93,9 +93,9 @@
     kInvert_StencilOp,              kInvert_StencilOp,
     kIncClamp_StencilOp,            kDecClamp_StencilOp,
     kEqual_StencilFunc,             kEqual_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0x0,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0xffff,                         0x0000,
+    0xffff,                         0xffff
 };
 
 // When there are no separate faces we do two passes to setup the winding rule
@@ -106,51 +106,51 @@
     kIncWrap_StencilOp,             kIncWrap_StencilOp,
     kKeep_StencilOp,                kKeep_StencilOp,
     kAlwaysIfInClip_StencilFunc,    kAlwaysIfInClip_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0xffff,                         0xffff,
+    0xffff,                         0xffff
 };
 static const GrStencilSettings gWindSingleStencilWithWrapDec = {
     kDecWrap_StencilOp,             kDecWrap_StencilOp,
     kKeep_StencilOp,                kKeep_StencilOp,
     kAlwaysIfInClip_StencilFunc,    kAlwaysIfInClip_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0xffff,                         0xffff,
+    0xffff,                         0xffff
 };
 static const GrStencilSettings gWindSingleStencilNoWrapInc = {
     kInvert_StencilOp,              kInvert_StencilOp,
     kIncClamp_StencilOp,            kIncClamp_StencilOp,
     kEqual_StencilFunc,             kEqual_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0xffff,                         0xffff,
+    0xffff,                         0xffff
 };
 static const GrStencilSettings gWindSingleStencilNoWrapDec = {
     kInvert_StencilOp,              kInvert_StencilOp,
     kDecClamp_StencilOp,            kDecClamp_StencilOp,
     kEqual_StencilFunc,             kEqual_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0x0,                            0x0,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0x0000,                         0x0000,
+    0xffff,                         0xffff
 };
 
 static const GrStencilSettings gWindColorPass = {
     kZero_StencilOp,                kZero_StencilOp,
     kZero_StencilOp,                kZero_StencilOp,
     kNonZeroIfInClip_StencilFunc,   kNonZeroIfInClip_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0x0,                            0x0,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0x0000,                         0x0000,
+    0xffff,                         0xffff
 };
 
 static const GrStencilSettings gInvWindColorPass = {
     kZero_StencilOp,                kZero_StencilOp,
     kZero_StencilOp,                kZero_StencilOp,
     kEqualIfInClip_StencilFunc,     kEqualIfInClip_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0x0,                            0x0,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0x0000,                         0x0000,
+    0xffff,                         0xffff
 };
 
 ////// Normal render to stencil
@@ -161,9 +161,9 @@
     kZero_StencilOp,                kZero_StencilOp,
     kIncClamp_StencilOp,            kIncClamp_StencilOp,
     kAlwaysIfInClip_StencilFunc,    kAlwaysIfInClip_StencilFunc,
-    0xffffffff,                     0xffffffff,
-    0x0,                            0x0,
-    0xffffffff,                     0xffffffff
+    0xffff,                         0xffff,
+    0x0000,                         0x0000,
+    0xffff,                         0xffff
 };
 
 ////////////////////////////////////////////////////////////////////////////////