aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects/GrDistanceFieldGeoProc.h
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2017-09-12 11:54:11 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-12 17:16:00 +0000
commita950b63b442f1376d022740457b020ada62f6554 (patch)
tree8508e15a8ae8e6edc4fdba2d6e2273b5662e2add /src/gpu/effects/GrDistanceFieldGeoProc.h
parent2ab4b2b871c01aa3dd6d2e43883461c722f01680 (diff)
Add support for additional textures in GrDrawOpAtlas
Step two in supporting growable/shrinkable atlases. Bug: skia:3550 Change-Id: I0cdec2a9f59cc8ced071bfeec2f8ed5a228c4b7a Reviewed-on: https://skia-review.googlesource.com/43260 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/effects/GrDistanceFieldGeoProc.h')
-rw-r--r--src/gpu/effects/GrDistanceFieldGeoProc.h37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.h b/src/gpu/effects/GrDistanceFieldGeoProc.h
index b1836dd9bb..b5c6f9eea6 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.h
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.h
@@ -50,22 +50,24 @@ enum GrDistanceFieldEffectFlags {
*/
class GrDistanceFieldA8TextGeoProc : public GrGeometryProcessor {
public:
+ static constexpr int kMaxTextures = 4;
+
#ifdef SK_GAMMA_APPLY_TO_A8
static sk_sp<GrGeometryProcessor> Make(GrColor color, const SkMatrix& viewMatrix,
- sk_sp<GrTextureProxy> proxy,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState& params, float lum, uint32_t flags,
bool usesLocalCoords) {
return sk_sp<GrGeometryProcessor>(
- new GrDistanceFieldA8TextGeoProc(color, viewMatrix, std::move(proxy),
+ new GrDistanceFieldA8TextGeoProc(color, viewMatrix, proxies,
params, lum, flags, usesLocalCoords));
}
#else
static sk_sp<GrGeometryProcessor> Make(GrColor color, const SkMatrix& viewMatrix,
- sk_sp<GrTextureProxy> proxy,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState& params, uint32_t flags,
bool usesLocalCoords) {
return sk_sp<GrGeometryProcessor>(
- new GrDistanceFieldA8TextGeoProc(color, viewMatrix, std::move(proxy),
+ new GrDistanceFieldA8TextGeoProc(color, viewMatrix, proxies,
params, flags, usesLocalCoords));
}
#endif
@@ -90,7 +92,8 @@ public:
GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override;
private:
- GrDistanceFieldA8TextGeoProc(GrColor, const SkMatrix& viewMatrix, sk_sp<GrTextureProxy> proxy,
+ GrDistanceFieldA8TextGeoProc(GrColor, const SkMatrix& viewMatrix,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState& params,
#ifdef SK_GAMMA_APPLY_TO_A8
float distanceAdjust,
@@ -99,7 +102,7 @@ private:
GrColor fColor;
SkMatrix fViewMatrix;
- TextureSampler fTextureSampler;
+ TextureSampler fTextureSamplers[kMaxTextures];
#ifdef SK_GAMMA_APPLY_TO_A8
float fDistanceAdjust;
#endif
@@ -122,12 +125,14 @@ private:
*/
class GrDistanceFieldPathGeoProc : public GrGeometryProcessor {
public:
+ static constexpr int kMaxTextures = 4;
+
static sk_sp<GrGeometryProcessor> Make(GrColor color, const SkMatrix& viewMatrix,
- sk_sp<GrTextureProxy> proxy,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState& params, uint32_t flags,
bool usesLocalCoords) {
return sk_sp<GrGeometryProcessor>(
- new GrDistanceFieldPathGeoProc(color, viewMatrix, std::move(proxy),
+ new GrDistanceFieldPathGeoProc(color, viewMatrix, proxies,
params, flags, usesLocalCoords));
}
@@ -148,12 +153,13 @@ public:
GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override;
private:
- GrDistanceFieldPathGeoProc(GrColor, const SkMatrix& viewMatrix, sk_sp<GrTextureProxy>,
+ GrDistanceFieldPathGeoProc(GrColor, const SkMatrix& viewMatrix,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState&, uint32_t flags, bool usesLocalCoords);
GrColor fColor;
SkMatrix fViewMatrix;
- TextureSampler fTextureSampler;
+ TextureSampler fTextureSamplers[kMaxTextures];
uint32_t fFlags;
const Attribute* fInPosition;
const Attribute* fInColor;
@@ -188,15 +194,17 @@ public:
}
};
+ static constexpr int kMaxTextures = 4;
+
static sk_sp<GrGeometryProcessor> Make(GrColor color,
const SkMatrix& viewMatrix,
- sk_sp<GrTextureProxy> proxy,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState& params,
DistanceAdjust distanceAdjust,
uint32_t flags,
bool usesLocalCoords) {
return sk_sp<GrGeometryProcessor>(
- new GrDistanceFieldLCDTextGeoProc(color, viewMatrix, std::move(proxy),
+ new GrDistanceFieldLCDTextGeoProc(color, viewMatrix, proxies,
params, distanceAdjust,
flags, usesLocalCoords));
}
@@ -219,13 +227,14 @@ public:
GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override;
private:
- GrDistanceFieldLCDTextGeoProc(GrColor, const SkMatrix& viewMatrix, sk_sp<GrTextureProxy> proxy,
+ GrDistanceFieldLCDTextGeoProc(GrColor, const SkMatrix& viewMatrix,
+ const sk_sp<GrTextureProxy> proxies[kMaxTextures],
const GrSamplerState& params, DistanceAdjust wa, uint32_t flags,
bool usesLocalCoords);
GrColor fColor;
SkMatrix fViewMatrix;
- TextureSampler fTextureSampler;
+ TextureSampler fTextureSamplers[kMaxTextures];
DistanceAdjust fDistanceAdjust;
uint32_t fFlags;
const Attribute* fInPosition;