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
};
////////////////////////////////////////////////////////////////////////////////