diff options
author | Joe Gregorio <jcgregorio@google.com> | 2018-07-10 20:35:19 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-10 20:35:26 +0000 |
commit | 383c9bbf0fca577d9efd86ce6ccb28c1c39c6e34 (patch) | |
tree | 306fb53aa4402d73345775db12facf39b7bedbcd /src/gpu/GrDefaultGeoProcFactory.cpp | |
parent | 1b112cc5604d294427c0d51f194ab7fb3067d9e2 (diff) |
Revert "added skeletal animation support to GPU backend"
This reverts commit d275ef501c8e6ea6444912e22c29e2d13a3dfb53.
Reason for revert: Failing to compile on debian9.
Original change's description:
> added skeletal animation support to GPU backend
>
> Pulled from reverted CL: https://skia-review.googlesource.com/c/skia/+/138596
>
> Bug: skia:
> Change-Id: Ie07f1c76bae65c219ebe93d071bb19f1a30100c2
> Reviewed-on: https://skia-review.googlesource.com/139282
> Reviewed-by: Brian Osman <brianosman@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
TBR=robertphillips@google.com,brianosman@google.com,ruiqimao@google.com
Change-Id: Ibc0da6ce16f078ff74a2c1bcab30750baff460f7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/140381
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Diffstat (limited to 'src/gpu/GrDefaultGeoProcFactory.cpp')
-rw-r--r-- | src/gpu/GrDefaultGeoProcFactory.cpp | 127 |
1 files changed, 10 insertions, 117 deletions
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp index 788833ed8c..e2bf87b277 100644 --- a/src/gpu/GrDefaultGeoProcFactory.cpp +++ b/src/gpu/GrDefaultGeoProcFactory.cpp @@ -27,13 +27,8 @@ enum GPFlag { kColorAttributeIsSkColor_GPFlag = 0x2, kLocalCoordAttribute_GPFlag = 0x4, kCoverageAttribute_GPFlag = 0x8, - kBonesAttribute_GPFlag = 0x10, }; -static constexpr int kNumFloatsPerSkMatrix = 9; -static constexpr int kMaxBones = 100; // Due to GPU memory limitations, only up to 100 bone - // matrices are accepted. - class DefaultGeoProc : public GrGeometryProcessor { public: static sk_sp<GrGeometryProcessor> Make(uint32_t gpTypeFlags, @@ -42,12 +37,10 @@ public: const SkMatrix& viewMatrix, const SkMatrix& localMatrix, bool localCoordsWillBeRead, - uint8_t coverage, - const float* bones, - int boneCount) { + uint8_t coverage) { return sk_sp<GrGeometryProcessor>(new DefaultGeoProc( gpTypeFlags, color, std::move(colorSpaceXform), viewMatrix, localMatrix, coverage, - localCoordsWillBeRead, bones, boneCount)); + localCoordsWillBeRead)); } const char* name() const override { return "DefaultGeometryProcessor"; } @@ -59,9 +52,6 @@ public: bool localCoordsWillBeRead() const { return fLocalCoordsWillBeRead; } uint8_t coverage() const { return fCoverage; } bool hasVertexCoverage() const { return fInCoverage.isInitialized(); } - const float* bones() const { return fBones; } - int boneCount() const { return fBoneCount; } - bool hasBones() const { return SkToBool(fBones); } class GLSLProcessor : public GrGLSLGeometryProcessor { public: @@ -109,37 +99,11 @@ public: &fColorUniform); } - // Setup bone transforms - const char* transformedPositionName = gp.fInPosition.name(); - if (gp.hasBones()) { - const char* vertBonesUniformName; - fBonesUniform = uniformHandler->addUniformArray(kVertex_GrShaderFlag, - kFloat3x3_GrSLType, - "Bones", - kMaxBones, - &vertBonesUniformName); - vertBuilder->codeAppendf( - "float2 transformedPosition = (%s[0] * float3(%s, 1)).xy;" - "float3x3 influence = float3x3(0);" - "for (int i = 0; i < 4; i++) {" - " int index = %s[i];" - " float weight = %s[i];" - " influence += %s[index] * weight;" - "}" - "transformedPosition = (influence * float3(transformedPosition, 1)).xy;", - vertBonesUniformName, - gp.fInPosition.name(), - gp.fInBoneIndices.name(), - gp.fInBoneWeights.name(), - vertBonesUniformName); - transformedPositionName = "transformedPosition"; - } - // Setup position this->writeOutputPosition(vertBuilder, uniformHandler, gpArgs, - transformedPositionName, + gp.fInPosition.name(), gp.viewMatrix(), &fViewMatrixUniform); @@ -183,8 +147,8 @@ public: GrProcessorKeyBuilder* b) { const DefaultGeoProc& def = gp.cast<DefaultGeoProc>(); uint32_t key = def.fFlags; - key |= (def.coverage() == 0xff) ? 0x20 : 0; - key |= (def.localCoordsWillBeRead() && def.localMatrix().hasPerspective()) ? 0x40 : 0x0; + key |= (def.coverage() == 0xff) ? 0x10 : 0; + key |= (def.localCoordsWillBeRead() && def.localMatrix().hasPerspective()) ? 0x20 : 0x0; key |= ComputePosKey(def.viewMatrix()) << 20; b->add32(key); b->add32(GrColorSpaceXform::XformKey(def.fColorSpaceXform.get())); @@ -216,10 +180,6 @@ public: this->setTransformDataHelper(dgp.fLocalMatrix, pdman, &transformIter); fColorSpaceHelper.setData(pdman, dgp.fColorSpaceXform.get()); - - if (dgp.hasBones()) { - pdman.setMatrix3fv(fBonesUniform, dgp.boneCount(), dgp.bones()); - } } private: @@ -229,7 +189,6 @@ public: UniformHandle fViewMatrixUniform; UniformHandle fColorUniform; UniformHandle fCoverageUniform; - UniformHandle fBonesUniform; GrGLSLColorSpaceXformHelper fColorSpaceHelper; typedef GrGLSLGeometryProcessor INHERITED; @@ -250,9 +209,7 @@ private: const SkMatrix& viewMatrix, const SkMatrix& localMatrix, uint8_t coverage, - bool localCoordsWillBeRead, - const float* bones, - int boneCount) + bool localCoordsWillBeRead) : INHERITED(kDefaultGeoProc_ClassID) , fColor(color) , fViewMatrix(viewMatrix) @@ -260,9 +217,7 @@ private: , fCoverage(coverage) , fFlags(gpTypeFlags) , fLocalCoordsWillBeRead(localCoordsWillBeRead) - , fColorSpaceXform(std::move(colorSpaceXform)) - , fBones(bones) - , fBoneCount(boneCount) { + , fColorSpaceXform(std::move(colorSpaceXform)) { fInPosition = {"inPosition", kFloat2_GrVertexAttribType}; int cnt = 1; if (fFlags & kColorAttribute_GPFlag) { @@ -277,32 +232,17 @@ private: fInCoverage = {"inCoverage", kHalf_GrVertexAttribType}; ++cnt; } - if (fFlags & kBonesAttribute_GPFlag) { - SkASSERT(bones && (boneCount > 0)); - fInBoneIndices = {"inBoneIndices", kInt4_GrVertexAttribType}; - ++cnt; - fInBoneWeights = {"inBoneWeights", kFloat4_GrVertexAttribType}; - ++cnt; - } this->setVertexAttributeCnt(cnt); } const Attribute& onVertexAttribute(int i) const override { - return IthInitializedAttribute(i, - fInPosition, - fInColor, - fInLocalCoords, - fInCoverage, - fInBoneIndices, - fInBoneWeights); + return IthInitializedAttribute(i, fInPosition, fInColor, fInLocalCoords, fInCoverage); } Attribute fInPosition; Attribute fInColor; Attribute fInLocalCoords; Attribute fInCoverage; - Attribute fInBoneIndices; - Attribute fInBoneWeights; GrColor fColor; SkMatrix fViewMatrix; SkMatrix fLocalMatrix; @@ -310,8 +250,6 @@ private: uint32_t fFlags; bool fLocalCoordsWillBeRead; sk_sp<GrColorSpaceXform> fColorSpaceXform; - const float* fBones; - int fBoneCount; GR_DECLARE_GEOMETRY_PROCESSOR_TEST @@ -321,14 +259,6 @@ private: GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DefaultGeoProc); #if GR_TEST_UTILS -static constexpr int kTestBoneCount = 4; -static constexpr float kTestBones[kTestBoneCount * kNumFloatsPerSkMatrix] = { - 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, - 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, - 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, - 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, -}; - sk_sp<GrGeometryProcessor> DefaultGeoProc::TestCreate(GrProcessorTestData* d) { uint32_t flags = 0; if (d->fRandom->nextBool()) { @@ -343,9 +273,6 @@ sk_sp<GrGeometryProcessor> DefaultGeoProc::TestCreate(GrProcessorTestData* d) { if (d->fRandom->nextBool()) { flags |= kLocalCoordAttribute_GPFlag; } - if (d->fRandom->nextBool()) { - flags |= kBonesAttribute_GPFlag; - } return DefaultGeoProc::Make(flags, GrRandomColor(d->fRandom), @@ -353,9 +280,7 @@ sk_sp<GrGeometryProcessor> DefaultGeoProc::TestCreate(GrProcessorTestData* d) { GrTest::TestMatrix(d->fRandom), GrTest::TestMatrix(d->fRandom), d->fRandom->nextBool(), - GrRandomCoverage(d->fRandom), - kTestBones, - kTestBoneCount); + GrRandomCoverage(d->fRandom)); } #endif @@ -382,9 +307,7 @@ sk_sp<GrGeometryProcessor> GrDefaultGeoProcFactory::Make(const Color& color, viewMatrix, localCoords.fMatrix ? *localCoords.fMatrix : SkMatrix::I(), localCoordsWillBeRead, - inCoverage, - nullptr, - 0); + inCoverage); } sk_sp<GrGeometryProcessor> GrDefaultGeoProcFactory::MakeForDeviceSpace( @@ -407,33 +330,3 @@ sk_sp<GrGeometryProcessor> GrDefaultGeoProcFactory::MakeForDeviceSpace( LocalCoords inverted(LocalCoords::kUsePosition_Type, &invert); return Make(color, coverage, inverted, SkMatrix::I()); } - -sk_sp<GrGeometryProcessor> GrDefaultGeoProcFactory::MakeWithBones(const Color& color, - const Coverage& coverage, - const LocalCoords& localCoords, - const Bones& bones, - const SkMatrix& viewMatrix) { - uint32_t flags = 0; - if (Color::kPremulGrColorAttribute_Type == color.fType) { - flags |= kColorAttribute_GPFlag; - } else if (Color::kUnpremulSkColorAttribute_Type == color.fType) { - flags |= kColorAttribute_GPFlag | kColorAttributeIsSkColor_GPFlag; - } - flags |= coverage.fType == Coverage::kAttribute_Type ? kCoverageAttribute_GPFlag : 0; - flags |= localCoords.fType == LocalCoords::kHasExplicit_Type ? kLocalCoordAttribute_GPFlag : 0; - flags |= kBonesAttribute_GPFlag; - - uint8_t inCoverage = coverage.fCoverage; - bool localCoordsWillBeRead = localCoords.fType != LocalCoords::kUnused_Type; - - GrColor inColor = color.fColor; - return DefaultGeoProc::Make(flags, - inColor, - color.fColorSpaceXform, - viewMatrix, - localCoords.fMatrix ? *localCoords.fMatrix : SkMatrix::I(), - localCoordsWillBeRead, - inCoverage, - bones.fBones, - bones.fBoneCount); -} |