| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 | 8 |
| 9 #include "SkGr.h" | 9 #include "SkGr.h" |
| 10 #include "SkGrPriv.h" | 10 #include "SkGrPriv.h" |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 return kIndex_8_GrPixelConfig; | 455 return kIndex_8_GrPixelConfig; |
| 456 case kGray_8_SkColorType: | 456 case kGray_8_SkColorType: |
| 457 return kAlpha_8_GrPixelConfig; // TODO: gray8 support on gpu | 457 return kAlpha_8_GrPixelConfig; // TODO: gray8 support on gpu |
| 458 case kRGBA_F16_SkColorType: | 458 case kRGBA_F16_SkColorType: |
| 459 return kRGBA_half_GrPixelConfig; | 459 return kRGBA_half_GrPixelConfig; |
| 460 } | 460 } |
| 461 SkASSERT(0); // shouldn't get here | 461 SkASSERT(0); // shouldn't get here |
| 462 return kUnknown_GrPixelConfig; | 462 return kUnknown_GrPixelConfig; |
| 463 } | 463 } |
| 464 | 464 |
| 465 bool GrPixelConfigToColorAndColorSpace(GrPixelConfig config, SkColorType* ctOut, | 465 bool GrPixelConfigToColorType(GrPixelConfig config, SkColorType* ctOut) { |
| 466 sk_sp<SkColorSpace>* csOut) { | |
| 467 SkColorType ct; | 466 SkColorType ct; |
| 468 sk_sp<SkColorSpace> cs = nullptr; | |
| 469 switch (config) { | 467 switch (config) { |
| 470 case kAlpha_8_GrPixelConfig: | 468 case kAlpha_8_GrPixelConfig: |
| 471 ct = kAlpha_8_SkColorType; | 469 ct = kAlpha_8_SkColorType; |
| 472 break; | 470 break; |
| 473 case kIndex_8_GrPixelConfig: | 471 case kIndex_8_GrPixelConfig: |
| 474 ct = kIndex_8_SkColorType; | 472 ct = kIndex_8_SkColorType; |
| 475 break; | 473 break; |
| 476 case kRGB_565_GrPixelConfig: | 474 case kRGB_565_GrPixelConfig: |
| 477 ct = kRGB_565_SkColorType; | 475 ct = kRGB_565_SkColorType; |
| 478 break; | 476 break; |
| 479 case kRGBA_4444_GrPixelConfig: | 477 case kRGBA_4444_GrPixelConfig: |
| 480 ct = kARGB_4444_SkColorType; | 478 ct = kARGB_4444_SkColorType; |
| 481 break; | 479 break; |
| 482 case kRGBA_8888_GrPixelConfig: | 480 case kRGBA_8888_GrPixelConfig: |
| 483 ct = kRGBA_8888_SkColorType; | 481 ct = kRGBA_8888_SkColorType; |
| 484 break; | 482 break; |
| 485 case kBGRA_8888_GrPixelConfig: | 483 case kBGRA_8888_GrPixelConfig: |
| 486 ct = kBGRA_8888_SkColorType; | 484 ct = kBGRA_8888_SkColorType; |
| 487 break; | 485 break; |
| 488 case kSRGBA_8888_GrPixelConfig: | 486 case kSRGBA_8888_GrPixelConfig: |
| 489 ct = kRGBA_8888_SkColorType; | 487 ct = kRGBA_8888_SkColorType; |
| 490 cs = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); | |
| 491 break; | 488 break; |
| 492 case kSBGRA_8888_GrPixelConfig: | 489 case kSBGRA_8888_GrPixelConfig: |
| 493 ct = kBGRA_8888_SkColorType; | 490 ct = kBGRA_8888_SkColorType; |
| 494 cs = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); | |
| 495 break; | 491 break; |
| 496 case kRGBA_half_GrPixelConfig: | 492 case kRGBA_half_GrPixelConfig: |
| 497 ct = kRGBA_F16_SkColorType; | 493 ct = kRGBA_F16_SkColorType; |
| 498 break; | 494 break; |
| 499 default: | 495 default: |
| 500 return false; | 496 return false; |
| 501 } | 497 } |
| 502 if (ctOut) { | 498 if (ctOut) { |
| 503 *ctOut = ct; | 499 *ctOut = ct; |
| 504 } | 500 } |
| 505 if (csOut) { | |
| 506 *csOut = cs; | |
| 507 } | |
| 508 return true; | 501 return true; |
| 509 } | 502 } |
| 510 | 503 |
| 511 ////////////////////////////////////////////////////////////////////////////////
//////////////// | 504 ////////////////////////////////////////////////////////////////////////////////
//////////////// |
| 512 | 505 |
| 513 static inline bool blend_requires_shader(const SkXfermode::Mode mode, bool primi
tiveIsSrc) { | 506 static inline bool blend_requires_shader(const SkXfermode::Mode mode, bool primi
tiveIsSrc) { |
| 514 if (primitiveIsSrc) { | 507 if (primitiveIsSrc) { |
| 515 return SkXfermode::kSrc_Mode != mode; | 508 return SkXfermode::kSrc_Mode != mode; |
| 516 } else { | 509 } else { |
| 517 return SkXfermode::kDst_Mode != mode; | 510 return SkXfermode::kDst_Mode != mode; |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 shaderFP = GrFragmentProcessor::MulOutputByInputAlpha(fp); | 727 shaderFP = GrFragmentProcessor::MulOutputByInputAlpha(fp); |
| 735 } | 728 } |
| 736 | 729 |
| 737 return SkPaintToGrPaintReplaceShader(context, paint, std::move(shaderFP), al
lowSRGBInputs, | 730 return SkPaintToGrPaintReplaceShader(context, paint, std::move(shaderFP), al
lowSRGBInputs, |
| 738 grPaint); | 731 grPaint); |
| 739 } | 732 } |
| 740 | 733 |
| 741 | 734 |
| 742 ////////////////////////////////////////////////////////////////////////////////
//////////////// | 735 ////////////////////////////////////////////////////////////////////////////////
//////////////// |
| 743 | 736 |
| 744 SkImageInfo GrMakeInfoFromTexture(GrTexture* tex, int w, int h, bool isOpaque, | |
| 745 sk_sp<SkColorSpace> colorSpace) { | |
| 746 #ifdef SK_DEBUG | |
| 747 const GrSurfaceDesc& desc = tex->desc(); | |
| 748 SkASSERT(w <= desc.fWidth); | |
| 749 SkASSERT(h <= desc.fHeight); | |
| 750 #endif | |
| 751 const GrPixelConfig config = tex->config(); | |
| 752 SkColorType ct = kUnknown_SkColorType; | |
| 753 SkAlphaType at = isOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType; | |
| 754 if (!GrPixelConfigToColorAndColorSpace(config, &ct, nullptr)) { | |
| 755 ct = kUnknown_SkColorType; | |
| 756 } | |
| 757 return SkImageInfo::Make(w, h, ct, at, std::move(colorSpace)); | |
| 758 } | |
| 759 | |
| 760 GrTextureParams::FilterMode GrSkFilterQualityToGrFilterMode(SkFilterQuality pain
tFilterQuality, | 737 GrTextureParams::FilterMode GrSkFilterQualityToGrFilterMode(SkFilterQuality pain
tFilterQuality, |
| 761 const SkMatrix& view
M, | 738 const SkMatrix& view
M, |
| 762 const SkMatrix& loca
lM, | 739 const SkMatrix& loca
lM, |
| 763 bool* doBicubic) { | 740 bool* doBicubic) { |
| 764 *doBicubic = false; | 741 *doBicubic = false; |
| 765 GrTextureParams::FilterMode textureFilterMode; | 742 GrTextureParams::FilterMode textureFilterMode; |
| 766 switch (paintFilterQuality) { | 743 switch (paintFilterQuality) { |
| 767 case kNone_SkFilterQuality: | 744 case kNone_SkFilterQuality: |
| 768 textureFilterMode = GrTextureParams::kNone_FilterMode; | 745 textureFilterMode = GrTextureParams::kNone_FilterMode; |
| 769 break; | 746 break; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 791 SkErrorInternals::SetError( kInvalidPaint_SkError, | 768 SkErrorInternals::SetError( kInvalidPaint_SkError, |
| 792 "Sorry, I don't understand the filtering
" | 769 "Sorry, I don't understand the filtering
" |
| 793 "mode you asked for. Falling back to " | 770 "mode you asked for. Falling back to " |
| 794 "MIPMaps."); | 771 "MIPMaps."); |
| 795 textureFilterMode = GrTextureParams::kMipMap_FilterMode; | 772 textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
| 796 break; | 773 break; |
| 797 | 774 |
| 798 } | 775 } |
| 799 return textureFilterMode; | 776 return textureFilterMode; |
| 800 } | 777 } |
| OLD | NEW |