GrBicubicEffect::GrBicubicEffect(GrTexture* texture, const SkScalar coefficients[16], const SkMatrix &matrix, const SkShader::TileMode tileModes[2]) : INHERITED(texture, matrix, GrTextureParams(tileModes, GrTextureParams::kNone_FilterMode)) , fDomain(GrTextureDomain::IgnoredDomain()) { this->initClassID<GrBicubicEffect>(); convert_row_major_scalar_coeffs_to_column_major_floats(fCoefficients, coefficients); }
GrBicubicEffect::GrBicubicEffect(GrTexture* texture, const SkScalar coefficients[16], const SkMatrix &matrix, const SkRect& domain) : INHERITED(texture, matrix, GrTextureParams(SkShader::kClamp_TileMode, GrTextureParams::kNone_FilterMode)) , fDomain(domain, GrTextureDomain::kClamp_Mode) { this->initClassID<GrBicubicEffect>(); convert_row_major_scalar_coeffs_to_column_major_floats(fCoefficients, coefficients); }
GrTextureParams GrImageUsageToTextureParams(SkImageUsageType usage) { // Just need a params that will trigger the correct cache key / etc, since the usage doesn't // tell us the specifics about filter level or specific tiling. const SkShader::TileMode tiles[] = { SkShader::kClamp_TileMode, // kUntiled_SkImageUsageType SkShader::kRepeat_TileMode, // kTiled_Unfiltered_SkImageUsageType SkShader::kRepeat_TileMode, // kTiled_Filtered_SkImageUsageType }; const GrTextureParams::FilterMode filters[] = { GrTextureParams::kNone_FilterMode, // kUntiled_SkImageUsageType GrTextureParams::kNone_FilterMode, // kTiled_Unfiltered_SkImageUsageType GrTextureParams::kBilerp_FilterMode, // kTiled_Filtered_SkImageUsageType }; return GrTextureParams(tiles[usage], filters[usage]); }