void GrGLVertexProgramEffects::setTransformData(const GrGLUniformManager& uniformManager, const GrDrawEffect& drawEffect, int effectIdx) { SkTArray<Transform, true>& transforms = fTransforms[effectIdx]; int numTransforms = transforms.count(); SkASSERT(numTransforms == drawEffect.effect()->numTransforms()); for (int t = 0; t < numTransforms; ++t) { SkASSERT(transforms[t].fHandle.isValid()); const SkMatrix& matrix = get_transform_matrix(drawEffect, t); if (!transforms[t].fCurrentValue.cheapEqualTo(matrix)) { uniformManager.setSkMatrix(transforms[t].fHandle, matrix); transforms[t].fCurrentValue = matrix; } } }
void GrGLVertexProgramEffects::setTransformData(const GrGLUniformManager& uniformManager, const GrDrawEffect& drawEffect, int effectIdx) { SkTArray<Transform, true>& transforms = fTransforms[effectIdx]; int numTransforms = transforms.count(); SkASSERT(numTransforms == (*drawEffect.effect())->numTransforms()); for (int t = 0; t < numTransforms; ++t) { SkASSERT(transforms[t].fHandle.isValid() != (kVoid_GrSLType == transforms[t].fType)); switch (transforms[t].fType) { case kVoid_GrSLType: SkASSERT(get_transform_matrix(drawEffect, t).isIdentity()); break; case kVec2f_GrSLType: { GrGLfloat tx, ty; get_transform_translation(drawEffect, t, &tx, &ty); if (transforms[t].fCurrentValue.get(SkMatrix::kMTransX) != tx || transforms[t].fCurrentValue.get(SkMatrix::kMTransY) != ty) { uniformManager.set2f(transforms[t].fHandle, tx, ty); transforms[t].fCurrentValue.set(SkMatrix::kMTransX, tx); transforms[t].fCurrentValue.set(SkMatrix::kMTransY, ty); } break; } case kMat33f_GrSLType: { const SkMatrix& matrix = get_transform_matrix(drawEffect, t); if (!transforms[t].fCurrentValue.cheapEqualTo(matrix)) { uniformManager.setSkMatrix(transforms[t].fHandle, matrix); transforms[t].fCurrentValue = matrix; } break; } default: SkFAIL("Unexpected uniform type."); } } }