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

Side by Side Diff: src/core/SkBitmapProcState_shaderproc.h

Issue 1158273007: switch bitmapshader internals over to pixmap (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix neon/mips to use pixmpas Created 5 years, 6 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
« no previous file with comments | « src/core/SkBitmapProcState_sample.h ('k') | src/opts/SkBitmapProcState_matrix_neon.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
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 #include "SkMathPriv.h" 9 #include "SkMathPriv.h"
10 10
11 #define SCALE_FILTER_NAME MAKENAME(_filter_DX_shaderproc) 11 #define SCALE_FILTER_NAME MAKENAME(_filter_DX_shaderproc)
12 12
13 // Can't be static in the general case because some of these implementations 13 // Can't be static in the general case because some of these implementations
14 // will be defined and referenced in different object files. 14 // will be defined and referenced in different object files.
15 void SCALE_FILTER_NAME(const SkBitmapProcState& s, int x, int y, 15 void SCALE_FILTER_NAME(const SkBitmapProcState& s, int x, int y,
16 DSTTYPE* SK_RESTRICT colors, int count); 16 DSTTYPE* SK_RESTRICT colors, int count);
17 17
18 void SCALE_FILTER_NAME(const SkBitmapProcState& s, int x, int y, 18 void SCALE_FILTER_NAME(const SkBitmapProcState& s, int x, int y,
19 DSTTYPE* SK_RESTRICT colors, int count) { 19 DSTTYPE* SK_RESTRICT colors, int count) {
20 SkASSERT((s.fInvType & ~(SkMatrix::kTranslate_Mask | 20 SkASSERT((s.fInvType & ~(SkMatrix::kTranslate_Mask |
21 SkMatrix::kScale_Mask)) == 0); 21 SkMatrix::kScale_Mask)) == 0);
22 SkASSERT(s.fInvKy == 0); 22 SkASSERT(s.fInvKy == 0);
23 SkASSERT(count > 0 && colors != NULL); 23 SkASSERT(count > 0 && colors != NULL);
24 SkASSERT(s.fFilterLevel != kNone_SkFilterQuality); 24 SkASSERT(s.fFilterLevel != kNone_SkFilterQuality);
25 SkDEBUGCODE(CHECKSTATE(s);) 25 SkDEBUGCODE(CHECKSTATE(s);)
26 26
27 const unsigned maxX = s.fBitmap->width() - 1; 27 const unsigned maxX = s.fPixmap.width() - 1;
28 const SkFixed oneX = s.fFilterOneX; 28 const SkFixed oneX = s.fFilterOneX;
29 const SkFixed dx = s.fInvSx; 29 const SkFixed dx = s.fInvSx;
30 SkFixed fx; 30 SkFixed fx;
31 const SRCTYPE* SK_RESTRICT row0; 31 const SRCTYPE* SK_RESTRICT row0;
32 const SRCTYPE* SK_RESTRICT row1; 32 const SRCTYPE* SK_RESTRICT row1;
33 unsigned subY; 33 unsigned subY;
34 34
35 { 35 {
36 SkPoint pt; 36 SkPoint pt;
37 s.fInvProc(s.fInvMatrix, SkIntToScalar(x) + SK_ScalarHalf, 37 s.fInvProc(s.fInvMatrix, SkIntToScalar(x) + SK_ScalarHalf,
38 SkIntToScalar(y) + SK_ScalarHalf, &pt); 38 SkIntToScalar(y) + SK_ScalarHalf, &pt);
39 SkFixed fy = SkScalarToFixed(pt.fY) - (s.fFilterOneY >> 1); 39 SkFixed fy = SkScalarToFixed(pt.fY) - (s.fFilterOneY >> 1);
40 const unsigned maxY = s.fBitmap->height() - 1; 40 const unsigned maxY = s.fPixmap.height() - 1;
41 // compute our two Y values up front 41 // compute our two Y values up front
42 subY = TILEY_LOW_BITS(fy, maxY); 42 subY = TILEY_LOW_BITS(fy, maxY);
43 int y0 = TILEY_PROCF(fy, maxY); 43 int y0 = TILEY_PROCF(fy, maxY);
44 int y1 = TILEY_PROCF((fy + s.fFilterOneY), maxY); 44 int y1 = TILEY_PROCF((fy + s.fFilterOneY), maxY);
45 45
46 const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels(); 46 const char* SK_RESTRICT srcAddr = (const char*)s.fPixmap.addr();
47 size_t rb = s.fBitmap->rowBytes(); 47 size_t rb = s.fPixmap.rowBytes();
48 row0 = (const SRCTYPE*)(srcAddr + y0 * rb); 48 row0 = (const SRCTYPE*)(srcAddr + y0 * rb);
49 row1 = (const SRCTYPE*)(srcAddr + y1 * rb); 49 row1 = (const SRCTYPE*)(srcAddr + y1 * rb);
50 // now initialize fx 50 // now initialize fx
51 fx = SkScalarToFixed(pt.fX) - (oneX >> 1); 51 fx = SkScalarToFixed(pt.fX) - (oneX >> 1);
52 } 52 }
53 53
54 #ifdef PREAMBLE 54 #ifdef PREAMBLE
55 PREAMBLE(s); 55 PREAMBLE(s);
56 #endif 56 #endif
57 57
(...skipping 27 matching lines...) Expand all
85 #undef MAKENAME 85 #undef MAKENAME
86 #undef SRCTYPE 86 #undef SRCTYPE
87 #undef DSTTYPE 87 #undef DSTTYPE
88 #undef CHECKSTATE 88 #undef CHECKSTATE
89 #undef SRC_TO_FILTER 89 #undef SRC_TO_FILTER
90 #undef FILTER_TO_DST 90 #undef FILTER_TO_DST
91 #undef PREAMBLE 91 #undef PREAMBLE
92 #undef POSTAMBLE 92 #undef POSTAMBLE
93 93
94 #undef SCALE_FILTER_NAME 94 #undef SCALE_FILTER_NAME
OLDNEW
« no previous file with comments | « src/core/SkBitmapProcState_sample.h ('k') | src/opts/SkBitmapProcState_matrix_neon.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698