| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkXfermode.h" | 10 #include "SkXfermode.h" |
| (...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 816 SkXfermode::Mode mode() const { return fMode; } | 816 SkXfermode::Mode mode() const { return fMode; } |
| 817 const GrTextureAccess& backgroundAccess() const { return fBackgroundAccess;
} | 817 const GrTextureAccess& backgroundAccess() const { return fBackgroundAccess;
} |
| 818 | 818 |
| 819 class GLEffect : public GrGLEffect { | 819 class GLEffect : public GrGLEffect { |
| 820 public: | 820 public: |
| 821 GLEffect(const GrBackendEffectFactory& factory, const GrDrawEffect&) | 821 GLEffect(const GrBackendEffectFactory& factory, const GrDrawEffect&) |
| 822 : GrGLEffect(factory) { | 822 : GrGLEffect(factory) { |
| 823 } | 823 } |
| 824 virtual void emitCode(GrGLShaderBuilder* builder, | 824 virtual void emitCode(GrGLShaderBuilder* builder, |
| 825 const GrDrawEffect& drawEffect, | 825 const GrDrawEffect& drawEffect, |
| 826 EffectKey key, | 826 const GrEffectKey& key, |
| 827 const char* outputColor, | 827 const char* outputColor, |
| 828 const char* inputColor, | 828 const char* inputColor, |
| 829 const TransformedCoordsArray& coords, | 829 const TransformedCoordsArray& coords, |
| 830 const TextureSamplerArray& samplers) SK_OVERRIDE { | 830 const TextureSamplerArray& samplers) SK_OVERRIDE { |
| 831 SkXfermode::Mode mode = drawEffect.castEffect<XferEffect>().mode(); | 831 SkXfermode::Mode mode = drawEffect.castEffect<XferEffect>().mode(); |
| 832 const GrTexture* backgroundTex = drawEffect.castEffect<XferEffect>()
.backgroundAccess().getTexture(); | 832 const GrTexture* backgroundTex = drawEffect.castEffect<XferEffect>()
.backgroundAccess().getTexture(); |
| 833 const char* dstColor; | 833 const char* dstColor; |
| 834 if (backgroundTex) { | 834 if (backgroundTex) { |
| 835 dstColor = "bgColor"; | 835 dstColor = "bgColor"; |
| 836 builder->fsCodeAppendf("\t\tvec4 %s = ", dstColor); | 836 builder->fsCodeAppendf("\t\tvec4 %s = ", dstColor); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 builder->fsCodeAppendf("\t\t%s.rgb += (1.0 - %s.a) * %s.rgb
+ (1.0 - %s.a) * %s.rgb;\n", | 962 builder->fsCodeAppendf("\t\t%s.rgb += (1.0 - %s.a) * %s.rgb
+ (1.0 - %s.a) * %s.rgb;\n", |
| 963 outputColor, inputColor, dstColor, ds
tColor, inputColor); | 963 outputColor, inputColor, dstColor, ds
tColor, inputColor); |
| 964 break; | 964 break; |
| 965 } | 965 } |
| 966 default: | 966 default: |
| 967 SkFAIL("Unknown XferEffect mode."); | 967 SkFAIL("Unknown XferEffect mode."); |
| 968 break; | 968 break; |
| 969 } | 969 } |
| 970 } | 970 } |
| 971 | 971 |
| 972 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrG
LCaps&) { | 972 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps
&, |
| 973 GrEffectKeyBuilder* b) { |
| 973 // The background may come from the dst or from a texture. | 974 // The background may come from the dst or from a texture. |
| 974 int numTextures = drawEffect.effect()->numTextures(); | 975 uint32_t key = drawEffect.effect()->numTextures(); |
| 975 SkASSERT(numTextures <= 1); | 976 SkASSERT(key <= 1); |
| 976 return (drawEffect.castEffect<XferEffect>().mode() << 1) | numTextur
es; | 977 key |= drawEffect.castEffect<XferEffect>().mode() << 1; |
| 978 b->add32(key); |
| 977 } | 979 } |
| 978 | 980 |
| 979 private: | 981 private: |
| 980 static void HardLight(GrGLShaderBuilder* builder, | 982 static void HardLight(GrGLShaderBuilder* builder, |
| 981 const char* final, | 983 const char* final, |
| 982 const char* src, | 984 const char* src, |
| 983 const char* dst) { | 985 const char* dst) { |
| 984 static const char kComponents[] = {'r', 'g', 'b'}; | 986 static const char kComponents[] = {'r', 'g', 'b'}; |
| 985 for (size_t i = 0; i < SK_ARRAY_COUNT(kComponents); ++i) { | 987 for (size_t i = 0; i < SK_ARRAY_COUNT(kComponents); ++i) { |
| 986 char component = kComponents[i]; | 988 char component = kComponents[i]; |
| (...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1954 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) | 1956 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) |
| 1955 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) | 1957 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) |
| 1956 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) | 1958 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) |
| 1957 #if !SK_ARM_NEON_IS_NONE | 1959 #if !SK_ARM_NEON_IS_NONE |
| 1958 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkNEONProcCoeffXfermode) | 1960 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkNEONProcCoeffXfermode) |
| 1959 #endif | 1961 #endif |
| 1960 #if defined(SK_CPU_X86) && !defined(SK_BUILD_FOR_IOS) | 1962 #if defined(SK_CPU_X86) && !defined(SK_BUILD_FOR_IOS) |
| 1961 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSSE2ProcCoeffXfermode) | 1963 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSSE2ProcCoeffXfermode) |
| 1962 #endif | 1964 #endif |
| 1963 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1965 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
| OLD | NEW |