Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: src/effects/gradients/Sk4fGradientBase.cpp

Issue 1808963005: 4f linear gradient shader blitters (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 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 #include "Sk4fGradientBase.h" 8 #include "Sk4fGradientBase.h"
9 #include "Sk4fGradientPriv.h" 9 #include "Sk4fGradientPriv.h"
10 10
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 static const int kBufSize = 128; 327 static const int kBufSize = 128;
328 SkScalar ts[kBufSize]; 328 SkScalar ts[kBufSize];
329 TSampler<DstType, tileMode> sampler(*this); 329 TSampler<DstType, tileMode> sampler(*this);
330 330
331 SkASSERT(count > 0); 331 SkASSERT(count > 0);
332 do { 332 do {
333 const int n = SkTMin(kBufSize, count); 333 const int n = SkTMin(kBufSize, count);
334 this->mapTs(x, y, ts, n); 334 this->mapTs(x, y, ts, n);
335 for (int i = 0; i < n; ++i) { 335 for (int i = 0; i < n; ++i) {
336 const Sk4f c = sampler.sample(ts[i]); 336 const Sk4f c = sampler.sample(ts[i]);
337 store<DstType, do_premul>(c, dst++); 337 store<DstType, kLinear_SkColorProfileType, do_premul>(c, dst++);
338 } 338 }
339 x += n; 339 x += n;
340 count -= n; 340 count -= n;
341 } while (count > 0); 341 } while (count > 0);
342 } 342 }
343 343
344 template<typename DstType, SkShader::TileMode tileMode> 344 template<typename DstType, SkShader::TileMode tileMode>
345 class SkGradientShaderBase::GradientShaderBase4fContext::TSampler { 345 class SkGradientShaderBase::GradientShaderBase4fContext::TSampler {
346 public: 346 public:
347 TSampler(const GradientShaderBase4fContext& ctx) 347 TSampler(const GradientShaderBase4fContext& ctx)
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 if (i < fFirstInterval) { 417 if (i < fFirstInterval) {
418 i = fLastInterval; 418 i = fLastInterval;
419 } 419 }
420 } while (tiled_t < i->fP0 || tiled_t >= i->fP1); 420 } while (tiled_t < i->fP0 || tiled_t >= i->fP1);
421 } 421 }
422 422
423 return i; 423 return i;
424 } 424 }
425 425
426 void loadIntervalData(const Interval* i) { 426 void loadIntervalData(const Interval* i) {
427 fCc = dst_swizzle<DstType>(i->fC0) * dst_component_scale<DstType>(); 427 fCc = scale_for_dest<DstType, kLinear_SkColorProfileType>(dst_swizzle<Ds tType>(i->fC0));
428 fDc = dst_swizzle<DstType>(i->fDc) * dst_component_scale<DstType>(); 428 fDc = scale_for_dest<DstType, kLinear_SkColorProfileType>(dst_swizzle<Ds tType>(i->fDc));
429 } 429 }
430 430
431 const Interval* fFirstInterval; 431 const Interval* fFirstInterval;
432 const Interval* fLastInterval; 432 const Interval* fLastInterval;
433 const Interval* fInterval; 433 const Interval* fInterval;
434 SkScalar fPrevT; 434 SkScalar fPrevT;
435 Sk4f fCc; 435 Sk4f fCc;
436 Sk4f fDc; 436 Sk4f fDc;
437 }; 437 };
OLDNEW
« no previous file with comments | « no previous file | src/effects/gradients/Sk4fGradientPriv.h » ('j') | src/effects/gradients/Sk4fGradientPriv.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698