1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2007 The Android Open Source Project 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkBitmapProcState_DEFINED 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkBitmapProcState_DEFINED 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkBitmap.h" 14b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com#include "SkBitmapFilter.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMatrix.h" 16cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com#include "SkPaint.h" 17602a1d70257eb3fcb746d758577f042d8c94f6d9reed@google.com#include "SkScaledImageCache.h" 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1977613a5038ee73afa1ba245effea05c1cc9db1d4reed@google.com#define FractionalInt_IS_64BIT 204bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com 214bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com#ifdef FractionalInt_IS_64BIT 224bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com typedef SkFixed48 SkFractionalInt; 234bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkScalarToFractionalInt(x) SkScalarToFixed48(x) 244bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToFixed(x) SkFixed48ToFixed(x) 25411215ae2b9a36ff6e262f77d7fb5071cc084f00reed@google.com #define SkFixedToFractionalInt(x) SkFixedToFixed48(x) 264bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToInt(x) SkFixed48ToInt(x) 274bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com#else 284bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com typedef SkFixed SkFractionalInt; 294bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkScalarToFractionalInt(x) SkScalarToFixed(x) 304bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToFixed(x) (x) 31411215ae2b9a36ff6e262f77d7fb5071cc084f00reed@google.com #define SkFixedToFractionalInt(x) (x) 324bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToInt(x) ((x) >> 16) 334bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com#endif 344bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkPaint; 36dd85088cd3c9b9890318a16f1fadb16e6d0253d0humper@google.comstruct SkConvolutionProcs; 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct SkBitmapProcState { 39fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com 40602a1d70257eb3fcb746d758577f042d8c94f6d9reed@google.com SkBitmapProcState(): fScaledCacheID(NULL), fBitmapFilter(NULL) {} 411e182253f8358ad1bc46209e84d2b4058f1f16a6reed@google.com ~SkBitmapProcState(); 42e81d1bce7e26f046b8bcdef7fcefe84eaa806a56commit-bot@chromium.org 437a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com typedef void (*ShaderProc32)(const SkBitmapProcState&, int x, int y, 447a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com SkPMColor[], int count); 457a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com 467a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com typedef void (*ShaderProc16)(const SkBitmapProcState&, int x, int y, 477a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com uint16_t[], int count); 487a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef void (*MatrixProc)(const SkBitmapProcState&, 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint32_t bitmapXY[], 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int count, 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int x, int y); 53fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef void (*SampleProc32)(const SkBitmapProcState&, 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const uint32_t[], 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int count, 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPMColor colors[]); 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef void (*SampleProc16)(const SkBitmapProcState&, 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const uint32_t[], 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int count, 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint16_t colors[]); 631f3c73825b8a1752abc6b74fbce978a430de6473skia.committer@gmail.com 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef U16CPU (*FixedTileProc)(SkFixed); // returns 0..0xFFFF 65f444e8ccda8905a8ce16bac368e09f205786db31reed@google.com typedef U16CPU (*FixedTileLowBitsProc)(SkFixed, int); // returns 0..0xF 6607d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com typedef U16CPU (*IntTileProc)(int value, int count); // returns 0..count-1 677a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com 689c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com const SkBitmap* fBitmap; // chooseProcs - orig or scaled 699c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkMatrix fInvMatrix; // chooseProcs 70eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com SkMatrix::MapXYProc fInvProc; // chooseProcs 71eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com 724bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com SkFractionalInt fInvSxFractionalInt; 73411215ae2b9a36ff6e262f77d7fb5071cc084f00reed@google.com SkFractionalInt fInvKyFractionalInt; 74fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com FixedTileProc fTileProcX; // chooseProcs 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com FixedTileProc fTileProcY; // chooseProcs 77f444e8ccda8905a8ce16bac368e09f205786db31reed@google.com FixedTileLowBitsProc fTileLowBitsProcX; // chooseProcs 78f444e8ccda8905a8ce16bac368e09f205786db31reed@google.com FixedTileLowBitsProc fTileLowBitsProcY; // chooseProcs 7907d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com IntTileProc fIntTileProcY; // chooseProcs 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkFixed fFilterOneX; 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkFixed fFilterOneY; 821f3c73825b8a1752abc6b74fbce978a430de6473skia.committer@gmail.com 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPMColor fPaintPMColor; // chooseProcs - A8 config 84eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com SkFixed fInvSx; // chooseProcs 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkFixed fInvKy; // chooseProcs 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint16_t fAlphaScale; // chooseProcs 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint8_t fInvType; // chooseProcs 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint8_t fTileModeX; // CONSTRUCTOR 898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint8_t fTileModeY; // CONSTRUCTOR 909cfc83cc8ac2ee50a7ce889e65a707941f48bdeareed@google.com uint8_t fFilterLevel; // chooseProcs 919c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 92c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com /** Platforms implement this, and can optionally overwrite only the 93c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com following fields: 94c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com 95c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fShaderProc32 96c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fShaderProc16 97c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fMatrixProc 98c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fSampleProc32 99c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fSampleProc32 100c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com 101c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com They will already have valid function pointers, so a platform that does 102c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com not have an accelerated version can just leave that field as is. A valid 103c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com implementation can do nothing (see SkBitmapProcState_opts_none.cpp) 104c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com */ 105c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com void platformProcs(); 1061f3c73825b8a1752abc6b74fbce978a430de6473skia.committer@gmail.com 107138ebc3e4061cf533ea2f7f3717239670fdc6e43humper@google.com /** Platforms can also optionally overwrite the convolution functions 108138ebc3e4061cf533ea2f7f3717239670fdc6e43humper@google.com if we have SIMD versions of them. 109138ebc3e4061cf533ea2f7f3717239670fdc6e43humper@google.com */ 1101f3c73825b8a1752abc6b74fbce978a430de6473skia.committer@gmail.com 111fed04b34315ed72dbb20e630908638d1c829c760reed@google.com void platformConvolutionProcs(SkConvolutionProcs*); 1124c69a064b4a7a77f4b4f2e77d8a35a80fc63987creed@google.com 113258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com /** Given the byte size of the index buffer to be passed to the matrix proc, 114258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com return the maximum number of resulting pixels that can be computed 115258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com (i.e. the number of SkPMColor values to be written by the sample proc). 116258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com This routine takes into account that filtering and scale-vs-affine 117258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com affect the amount of buffer space needed. 118fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 1194c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com Only valid to call after chooseProcs (setContext) has been called. It is 1204c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com safe to call this inside the shader's shadeSpan() method. 1214c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com */ 1224c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com int maxCountForBufferSize(size_t bufferSize) const; 1234c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com 1249fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com // If a shader proc is present, then the corresponding matrix/sample procs 1259fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com // are ignored 1269fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc32 getShaderProc32() const { return fShaderProc32; } 1279fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc16 getShaderProc16() const { return fShaderProc16; } 1289e1ec1a52985cce9db3a0d0e8d448b82a32e70cbskia.committer@gmail.com 129b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com SkBitmapFilter* getBitmapFilter() const { return fBitmapFilter; } 1309fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com 1319fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#ifdef SK_DEBUG 1329fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com MatrixProc getMatrixProc() const; 1339fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#else 1349fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com MatrixProc getMatrixProc() const { return fMatrixProc; } 1359fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#endif 1369fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc32 getSampleProc32() const { return fSampleProc32; } 1379fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc16 getSampleProc16() const { return fSampleProc16; } 1389fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com 1398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 140eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com friend class SkBitmapProcShader; 141eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com 1429fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc32 fShaderProc32; // chooseProcs 1439fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc16 fShaderProc16; // chooseProcs 1449fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com // These are used if the shaderproc is NULL 1459fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com MatrixProc fMatrixProc; // chooseProcs 1469fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc32 fSampleProc32; // chooseProcs 1479fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc16 fSampleProc16; // chooseProcs 148fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 149eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com SkBitmap fOrigBitmap; // CONSTRUCTOR 1509c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkBitmap fScaledBitmap; // chooseProcs 151eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com 152602a1d70257eb3fcb746d758577f042d8c94f6d9reed@google.com SkScaledImageCache::ID* fScaledCacheID; 153602a1d70257eb3fcb746d758577f042d8c94f6d9reed@google.com 15407d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com MatrixProc chooseMatrixProc(bool trivial_matrix); 155eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com bool chooseProcs(const SkMatrix& inv, const SkPaint&); 1569a4c746a1f0f91a5be2708a4c2018dfe14f62e48reed@google.com ShaderProc32 chooseShaderProc32(); 157fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com 158cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com // returns false if we did not try to scale the image. In that case, we 159cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com // will need to "lock" its pixels some other way. 160cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com bool possiblyScaleImage(); 161cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com 162cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com // returns false if we failed to "lock" the pixels at all. Typically this 163cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com // means we have to abort the shader. 164cee9dcb8377e1f85a7a232822a894464ea6ccddcreed@google.com bool lockBaseBitmap(); 1659c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 166138ebc3e4061cf533ea2f7f3717239670fdc6e43humper@google.com SkBitmapFilter* fBitmapFilter; 167b0a327e9390da5865d4c56db5e5259adc3380d37skia.committer@gmail.com 1680dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com // If supported, sets fShaderProc32 and fShaderProc16 and returns true, 1690dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com // otherwise returns false. 1700dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com bool setBitmapFilterProcs(); 1713e2345a8d56cb76bc43e4421a3e9e3681ecd9ebaskia.committer@gmail.com 1726bb92bc0b52d31f3ded38927cdefbeb13a3df87areed@google.com // Return false if we failed to setup for fast translate (e.g. overflow) 1736bb92bc0b52d31f3ded38927cdefbeb13a3df87areed@google.com bool setupForTranslate(); 1749fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com 1759fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#ifdef SK_DEBUG 1769fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com static void DebugMatrixProc(const SkBitmapProcState&, 1779fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com uint32_t[], int count, int x, int y); 1789fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#endif 1798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 1808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 18107d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com/* Macros for packing and unpacking pairs of 16bit values in a 32bit uint. 18207d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com Used to allow access to a stream of uint16_t either one at a time, or 18307d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com 2 at a time by unpacking a uint32_t 18407d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com */ 18507d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#ifdef SK_CPU_BENDIAN 18607d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define PACK_TWO_SHORTS(pri, sec) ((pri) << 16 | (sec)) 18707d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_PRIMARY_SHORT(packed) ((uint32_t)(packed) >> 16) 18807d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_SECONDARY_SHORT(packed) ((packed) & 0xFFFF) 18907d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#else 19007d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define PACK_TWO_SHORTS(pri, sec) ((pri) | ((sec) << 16)) 19107d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_PRIMARY_SHORT(packed) ((packed) & 0xFFFF) 19207d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_SECONDARY_SHORT(packed) ((uint32_t)(packed) >> 16) 19307d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#endif 19407d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com 19507d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#ifdef SK_DEBUG 19607d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com static inline uint32_t pack_two_shorts(U16CPU pri, U16CPU sec) { 19707d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com SkASSERT((uint16_t)pri == pri); 19807d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com SkASSERT((uint16_t)sec == sec); 19907d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com return PACK_TWO_SHORTS(pri, sec); 20007d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com } 20107d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#else 20207d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define pack_two_shorts(pri, sec) PACK_TWO_SHORTS(pri, sec) 20307d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#endif 20407d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com 205dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org// These functions are generated via macros, but are exposed here so that 206dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org// platformProcs may test for them by name. 207dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.orgvoid S32_opaque_D32_filter_DX(const SkBitmapProcState& s, const uint32_t xy[], 208dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org int count, SkPMColor colors[]); 209f3f0bd71b81097f6c640e7f60805de7eacbc98c6senorblanco@chromium.orgvoid S32_alpha_D32_filter_DX(const SkBitmapProcState& s, const uint32_t xy[], 210f3f0bd71b81097f6c640e7f60805de7eacbc98c6senorblanco@chromium.org int count, SkPMColor colors[]); 211fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.comvoid S32_opaque_D32_filter_DXDY(const SkBitmapProcState& s, 2120dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com const uint32_t xy[], int count, SkPMColor colors[]); 213fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.comvoid S32_alpha_D32_filter_DXDY(const SkBitmapProcState& s, 2140dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com const uint32_t xy[], int count, SkPMColor colors[]); 21506a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.comvoid ClampX_ClampY_filter_scale(const SkBitmapProcState& s, uint32_t xy[], 21606a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.com int count, int x, int y); 21706a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.comvoid ClampX_ClampY_nofilter_scale(const SkBitmapProcState& s, uint32_t xy[], 21806a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.com int count, int x, int y); 2195efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.comvoid ClampX_ClampY_filter_affine(const SkBitmapProcState& s, 2205efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.com uint32_t xy[], int count, int x, int y); 2215efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.comvoid ClampX_ClampY_nofilter_affine(const SkBitmapProcState& s, 2225efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.com uint32_t xy[], int count, int x, int y); 2237866228f06e402d37f8fcab70a688e1f34c1d27breed@google.comvoid S32_D16_filter_DX(const SkBitmapProcState& s, 2240dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com const uint32_t* xy, int count, uint16_t* colors); 225dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org 2260dc546c37c7dff3885188054d191cf852d899e32mtklein@google.comvoid highQualityFilter32(const SkBitmapProcState &s, int x, int y, 2270dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com SkPMColor *SK_RESTRICT colors, int count); 2280dc546c37c7dff3885188054d191cf852d899e32mtklein@google.comvoid highQualityFilter16(const SkBitmapProcState &s, int x, int y, 2290dc546c37c7dff3885188054d191cf852d899e32mtklein@google.com uint16_t *SK_RESTRICT colors, int count); 2309e1ec1a52985cce9db3a0d0e8d448b82a32e70cbskia.committer@gmail.com 231b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com 2328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 233