LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/core - SkFilterProc.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 194 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 51 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2006 The Android Open Source Project
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : 
       9             : #include "SkFilterProc.h"
      10             : 
      11             : /*  [1-x 1-y] [x 1-y]
      12             :     [1-x   y] [x   y]
      13             : */
      14             : 
      15           0 : static unsigned bilerp00(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return a00; }
      16           0 : static unsigned bilerp01(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (3 * a00 + a01) >> 2; }
      17           0 : static unsigned bilerp02(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (a00 + a01) >> 1; }
      18           0 : static unsigned bilerp03(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (a00 + 3 * a01) >> 2; }
      19             : 
      20           0 : static unsigned bilerp10(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (3 * a00 + a10) >> 2; }
      21           0 : static unsigned bilerp11(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (9 * a00 + 3 * (a01 + a10) + a11) >> 4; }
      22           0 : static unsigned bilerp12(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (3 * (a00 + a01) + a10 + a11) >> 3; }
      23           0 : static unsigned bilerp13(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (9 * a01 + 3 * (a00 + a11) + a10) >> 4; }
      24             : 
      25           0 : static unsigned bilerp20(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (a00 + a10) >> 1; }
      26           0 : static unsigned bilerp21(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (3 * (a00 + a10) + a01 + a11) >> 3; }
      27           0 : static unsigned bilerp22(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (a00 + a01 + a10 + a11) >> 2; }
      28           0 : static unsigned bilerp23(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (3 * (a01 + a11) + a00 + a10) >> 3; }
      29             : 
      30           0 : static unsigned bilerp30(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (a00 + 3 * a10) >> 2; }
      31           0 : static unsigned bilerp31(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (9 * a10 + 3 * (a00 + a11) + a01) >> 4; }
      32           0 : static unsigned bilerp32(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (3 * (a10 + a11) + a00 + a01) >> 3; }
      33           0 : static unsigned bilerp33(unsigned a00, unsigned a01, unsigned a10, unsigned a11) { return (9 * a11 + 3 * (a01 + a10) + a00) >> 4; }
      34             : 
      35             : static const SkFilterProc gBilerpProcs[4 * 4] = {
      36             :     bilerp00, bilerp01, bilerp02, bilerp03,
      37             :     bilerp10, bilerp11, bilerp12, bilerp13,
      38             :     bilerp20, bilerp21, bilerp22, bilerp23,
      39             :     bilerp30, bilerp31, bilerp32, bilerp33
      40             : };
      41             : 
      42           0 : const SkFilterProc* SkGetBilinearFilterProcTable()
      43             : {
      44           0 :     return gBilerpProcs;
      45             : }
      46             : 
      47             : ///////////////////////////////////////////////////////////////////////////////
      48             : ///////////////////////////////////////////////////////////////////////////////
      49             : 
      50             : #define MASK            0xFF00FF
      51             : #define LO_PAIR(x)      ((x) & MASK)
      52             : #define HI_PAIR(x)      (((x) >> 8) & MASK)
      53             : #define COMBINE(lo, hi) (((lo) & ~0xFF00) | (((hi) & ~0xFF00) << 8))
      54             : 
      55             : ///////////////////////////////////////////////////////////////////////////////
      56             : 
      57           0 : static unsigned bilerp4_00(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      58           0 :     return c00;
      59             : }
      60           0 : static unsigned bilerp4_01(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      61           0 :     uint32_t lo = (3 * LO_PAIR(c00) + LO_PAIR(c01)) >> 2;
      62           0 :     uint32_t hi = (3 * HI_PAIR(c00) + HI_PAIR(c01)) >> 2;
      63           0 :     return COMBINE(lo, hi);
      64             : }
      65           0 : static unsigned bilerp4_02(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      66           0 :     uint32_t lo = (LO_PAIR(c00) + LO_PAIR(c01)) >> 1;
      67           0 :     uint32_t hi = (HI_PAIR(c00) + HI_PAIR(c01)) >> 1;
      68           0 :     return COMBINE(lo, hi);
      69             : }
      70           0 : static unsigned bilerp4_03(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      71           0 :     uint32_t lo = (LO_PAIR(c00) + 3 * LO_PAIR(c01)) >> 2;
      72           0 :     uint32_t hi = (HI_PAIR(c00) + 3 * HI_PAIR(c01)) >> 2;
      73           0 :     return COMBINE(lo, hi);
      74             : }
      75             : 
      76           0 : static unsigned bilerp4_10(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      77           0 :     uint32_t lo = (3 * LO_PAIR(c00) + LO_PAIR(c10)) >> 2;
      78           0 :     uint32_t hi = (3 * HI_PAIR(c00) + HI_PAIR(c10)) >> 2;
      79           0 :     return COMBINE(lo, hi);
      80             : }
      81           0 : static unsigned bilerp4_11(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      82           0 :     uint32_t lo = (9 * LO_PAIR(c00) + 3 * (LO_PAIR(c01) + LO_PAIR(c10)) + LO_PAIR(c11)) >> 4;
      83           0 :     uint32_t hi = (9 * HI_PAIR(c00) + 3 * (HI_PAIR(c01) + HI_PAIR(c10)) + HI_PAIR(c11)) >> 4;
      84           0 :     return COMBINE(lo, hi);
      85             : }
      86           0 : static unsigned bilerp4_12(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      87           0 :     uint32_t lo = (3 * (LO_PAIR(c00) + LO_PAIR(c01)) + LO_PAIR(c10) + LO_PAIR(c11)) >> 3;
      88           0 :     uint32_t hi = (3 * (HI_PAIR(c00) + HI_PAIR(c01)) + HI_PAIR(c10) + HI_PAIR(c11)) >> 3;
      89           0 :     return COMBINE(lo, hi);
      90             : }
      91           0 : static unsigned bilerp4_13(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      92           0 :     uint32_t lo = (9 * LO_PAIR(c01) + 3 * (LO_PAIR(c00) + LO_PAIR(c11)) + LO_PAIR(c10)) >> 4;
      93           0 :     uint32_t hi = (9 * HI_PAIR(c01) + 3 * (HI_PAIR(c00) + HI_PAIR(c11)) + HI_PAIR(c10)) >> 4;
      94           0 :     return COMBINE(lo, hi);
      95             : }
      96             : 
      97           0 : static unsigned bilerp4_20(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
      98           0 :     uint32_t lo = (LO_PAIR(c00) + LO_PAIR(c10)) >> 1;
      99           0 :     uint32_t hi = (HI_PAIR(c00) + HI_PAIR(c10)) >> 1;
     100           0 :     return COMBINE(lo, hi);
     101             : }
     102           0 : static unsigned bilerp4_21(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     103           0 :     uint32_t lo = (3 * (LO_PAIR(c00) + LO_PAIR(c10)) + LO_PAIR(c01) + LO_PAIR(c11)) >> 3;
     104           0 :     uint32_t hi = (3 * (HI_PAIR(c00) + HI_PAIR(c10)) + HI_PAIR(c01) + HI_PAIR(c11)) >> 3;
     105           0 :     return COMBINE(lo, hi);
     106             : }
     107           0 : static unsigned bilerp4_22(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     108           0 :     uint32_t lo = (LO_PAIR(c00) + LO_PAIR(c01) + LO_PAIR(c10) + LO_PAIR(c11)) >> 2;
     109           0 :     uint32_t hi = (HI_PAIR(c00) + HI_PAIR(c01) + HI_PAIR(c10) + HI_PAIR(c11)) >> 2;
     110           0 :     return COMBINE(lo, hi);
     111             : }
     112           0 : static unsigned bilerp4_23(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     113           0 :     uint32_t lo = (3 * (LO_PAIR(c01) + LO_PAIR(c11)) + LO_PAIR(c00) + LO_PAIR(c10)) >> 3;
     114           0 :     uint32_t hi = (3 * (HI_PAIR(c01) + HI_PAIR(c11)) + HI_PAIR(c00) + HI_PAIR(c10)) >> 3;
     115           0 :     return COMBINE(lo, hi);
     116             : }
     117             : 
     118           0 : static unsigned bilerp4_30(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     119           0 :     uint32_t lo = (LO_PAIR(c00) + 3 * LO_PAIR(c10)) >> 2;
     120           0 :     uint32_t hi = (HI_PAIR(c00) + 3 * HI_PAIR(c10)) >> 2;
     121           0 :     return COMBINE(lo, hi);
     122             : }
     123           0 : static unsigned bilerp4_31(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     124           0 :     uint32_t lo = (9 * LO_PAIR(c10) + 3 * (LO_PAIR(c00) + LO_PAIR(c11)) + LO_PAIR(c01)) >> 4;
     125           0 :     uint32_t hi = (9 * HI_PAIR(c10) + 3 * (HI_PAIR(c00) + HI_PAIR(c11)) + HI_PAIR(c01)) >> 4;
     126           0 :     return COMBINE(lo, hi);
     127             : }
     128           0 : static unsigned bilerp4_32(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     129           0 :     uint32_t lo = (3 * (LO_PAIR(c10) + LO_PAIR(c11)) + LO_PAIR(c00) + LO_PAIR(c01)) >> 3;
     130           0 :     uint32_t hi = (3 * (HI_PAIR(c10) + HI_PAIR(c11)) + HI_PAIR(c00) + HI_PAIR(c01)) >> 3;
     131           0 :     return COMBINE(lo, hi);
     132             : }
     133           0 : static unsigned bilerp4_33(uint32_t c00, uint32_t c01, uint32_t c10, uint32_t c11) {
     134           0 :     uint32_t lo = (9 * LO_PAIR(c11) + 3 * (LO_PAIR(c01) + LO_PAIR(c10)) + LO_PAIR(c00)) >> 4;
     135           0 :     uint32_t hi = (9 * HI_PAIR(c11) + 3 * (HI_PAIR(c01) + HI_PAIR(c10)) + HI_PAIR(c00)) >> 4;
     136           0 :     return COMBINE(lo, hi);
     137             : }
     138             : 
     139             : static const SkFilter32Proc gBilerp32Procs[4 * 4] = {
     140             :     bilerp4_00, bilerp4_01, bilerp4_02, bilerp4_03,
     141             :     bilerp4_10, bilerp4_11, bilerp4_12, bilerp4_13,
     142             :     bilerp4_20, bilerp4_21, bilerp4_22, bilerp4_23,
     143             :     bilerp4_30, bilerp4_31, bilerp4_32, bilerp4_33
     144             : };
     145             : 
     146           0 : const SkFilter32Proc* SkGetFilter32ProcTable()
     147             : {
     148           0 :     return gBilerp32Procs;
     149             : }
     150             : 
     151             : ///////////////////////////////////////////////////////////////////////////////
     152             : 
     153           0 : static uint32_t bilerptr00(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     154           0 :     return *a00;
     155             : }
     156           0 : static uint32_t bilerptr01(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     157           0 :     uint32_t c00 = *a00;
     158           0 :     uint32_t c01 = *a01;
     159           0 :     uint32_t lo = (3 * LO_PAIR(c00) + LO_PAIR(c01)) >> 2;
     160           0 :     uint32_t hi = (3 * HI_PAIR(c00) + HI_PAIR(c01)) >> 2;
     161           0 :     return COMBINE(lo, hi);
     162             : }
     163           0 : static uint32_t bilerptr02(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     164           0 :     uint32_t c00 = *a00;
     165           0 :     uint32_t c01 = *a01;
     166           0 :     uint32_t lo = (LO_PAIR(c00) + LO_PAIR(c01)) >> 1;
     167           0 :     uint32_t hi = (HI_PAIR(c00) + HI_PAIR(c01)) >> 1;
     168           0 :     return COMBINE(lo, hi);
     169             : }
     170           0 : static uint32_t bilerptr03(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     171           0 :     uint32_t c00 = *a00;
     172           0 :     uint32_t c01 = *a01;
     173           0 :     uint32_t lo = (LO_PAIR(c00) + 3 * LO_PAIR(c01)) >> 2;
     174           0 :     uint32_t hi = (HI_PAIR(c00) + 3 * HI_PAIR(c01)) >> 2;
     175           0 :     return COMBINE(lo, hi);
     176             : }
     177             : 
     178           0 : static uint32_t bilerptr10(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     179           0 :     uint32_t c00 = *a00;
     180           0 :     uint32_t c10 = *a10;
     181           0 :     uint32_t lo = (3 * LO_PAIR(c00) + LO_PAIR(c10)) >> 2;
     182           0 :     uint32_t hi = (3 * HI_PAIR(c00) + HI_PAIR(c10)) >> 2;
     183           0 :     return COMBINE(lo, hi);
     184             : }
     185           0 : static uint32_t bilerptr11(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     186           0 :     uint32_t c00 = *a00;
     187           0 :     uint32_t c01 = *a01;
     188           0 :     uint32_t c10 = *a10;
     189           0 :     uint32_t c11 = *a11;
     190           0 :     uint32_t lo = (9 * LO_PAIR(c00) + 3 * (LO_PAIR(c01) + LO_PAIR(c10)) + LO_PAIR(c11)) >> 4;
     191           0 :     uint32_t hi = (9 * HI_PAIR(c00) + 3 * (HI_PAIR(c01) + HI_PAIR(c10)) + HI_PAIR(c11)) >> 4;
     192           0 :     return COMBINE(lo, hi);
     193             : }
     194           0 : static uint32_t bilerptr12(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     195           0 :     uint32_t c00 = *a00;
     196           0 :     uint32_t c01 = *a01;
     197           0 :     uint32_t c10 = *a10;
     198           0 :     uint32_t c11 = *a11;
     199           0 :     uint32_t lo = (3 * (LO_PAIR(c00) + LO_PAIR(c01)) + LO_PAIR(c10) + LO_PAIR(c11)) >> 3;
     200           0 :     uint32_t hi = (3 * (HI_PAIR(c00) + HI_PAIR(c01)) + HI_PAIR(c10) + HI_PAIR(c11)) >> 3;
     201           0 :     return COMBINE(lo, hi);
     202             : }
     203           0 : static uint32_t bilerptr13(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     204           0 :     uint32_t c00 = *a00;
     205           0 :     uint32_t c01 = *a01;
     206           0 :     uint32_t c10 = *a10;
     207           0 :     uint32_t c11 = *a11;
     208           0 :     uint32_t lo = (9 * LO_PAIR(c01) + 3 * (LO_PAIR(c00) + LO_PAIR(c11)) + LO_PAIR(c10)) >> 4;
     209           0 :     uint32_t hi = (9 * HI_PAIR(c01) + 3 * (HI_PAIR(c00) + HI_PAIR(c11)) + HI_PAIR(c10)) >> 4;
     210           0 :     return COMBINE(lo, hi);
     211             : }
     212             : 
     213           0 : static uint32_t bilerptr20(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     214           0 :     uint32_t c00 = *a00;
     215           0 :     uint32_t c10 = *a10;
     216           0 :     uint32_t lo = (LO_PAIR(c00) + LO_PAIR(c10)) >> 1;
     217           0 :     uint32_t hi = (HI_PAIR(c00) + HI_PAIR(c10)) >> 1;
     218           0 :     return COMBINE(lo, hi);
     219             : }
     220           0 : static uint32_t bilerptr21(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     221           0 :     uint32_t c00 = *a00;
     222           0 :     uint32_t c01 = *a01;
     223           0 :     uint32_t c10 = *a10;
     224           0 :     uint32_t c11 = *a11;
     225           0 :     uint32_t lo = (3 * (LO_PAIR(c00) + LO_PAIR(c10)) + LO_PAIR(c01) + LO_PAIR(c11)) >> 3;
     226           0 :     uint32_t hi = (3 * (HI_PAIR(c00) + HI_PAIR(c10)) + HI_PAIR(c01) + HI_PAIR(c11)) >> 3;
     227           0 :     return COMBINE(lo, hi);
     228             : }
     229           0 : static uint32_t bilerptr22(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     230           0 :     uint32_t c00 = *a00;
     231           0 :     uint32_t c01 = *a01;
     232           0 :     uint32_t c10 = *a10;
     233           0 :     uint32_t c11 = *a11;
     234           0 :     uint32_t lo = (LO_PAIR(c00) + LO_PAIR(c01) + LO_PAIR(c10) + LO_PAIR(c11)) >> 2;
     235           0 :     uint32_t hi = (HI_PAIR(c00) + HI_PAIR(c01) + HI_PAIR(c10) + HI_PAIR(c11)) >> 2;
     236           0 :     return COMBINE(lo, hi);
     237             : }
     238           0 : static uint32_t bilerptr23(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     239           0 :     uint32_t c00 = *a00;
     240           0 :     uint32_t c01 = *a01;
     241           0 :     uint32_t c10 = *a10;
     242           0 :     uint32_t c11 = *a11;
     243           0 :     uint32_t lo = (3 * (LO_PAIR(c01) + LO_PAIR(c11)) + LO_PAIR(c00) + LO_PAIR(c10)) >> 3;
     244           0 :     uint32_t hi = (3 * (HI_PAIR(c01) + HI_PAIR(c11)) + HI_PAIR(c00) + HI_PAIR(c10)) >> 3;
     245           0 :     return COMBINE(lo, hi);
     246             : }
     247             : 
     248           0 : static uint32_t bilerptr30(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     249           0 :     uint32_t c00 = *a00;
     250           0 :     uint32_t c10 = *a10;
     251           0 :     uint32_t lo = (LO_PAIR(c00) + 3 * LO_PAIR(c10)) >> 2;
     252           0 :     uint32_t hi = (HI_PAIR(c00) + 3 * HI_PAIR(c10)) >> 2;
     253           0 :     return COMBINE(lo, hi);
     254             : }
     255           0 : static uint32_t bilerptr31(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     256           0 :     uint32_t c00 = *a00;
     257           0 :     uint32_t c01 = *a01;
     258           0 :     uint32_t c10 = *a10;
     259           0 :     uint32_t c11 = *a11;
     260           0 :     uint32_t lo = (9 * LO_PAIR(c10) + 3 * (LO_PAIR(c00) + LO_PAIR(c11)) + LO_PAIR(c01)) >> 4;
     261           0 :     uint32_t hi = (9 * HI_PAIR(c10) + 3 * (HI_PAIR(c00) + HI_PAIR(c11)) + HI_PAIR(c01)) >> 4;
     262           0 :     return COMBINE(lo, hi);
     263             : }
     264           0 : static uint32_t bilerptr32(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     265           0 :     uint32_t c00 = *a00;
     266           0 :     uint32_t c01 = *a01;
     267           0 :     uint32_t c10 = *a10;
     268           0 :     uint32_t c11 = *a11;
     269           0 :     uint32_t lo = (3 * (LO_PAIR(c10) + LO_PAIR(c11)) + LO_PAIR(c00) + LO_PAIR(c01)) >> 3;
     270           0 :     uint32_t hi = (3 * (HI_PAIR(c10) + HI_PAIR(c11)) + HI_PAIR(c00) + HI_PAIR(c01)) >> 3;
     271           0 :     return COMBINE(lo, hi);
     272             : }
     273           0 : static uint32_t bilerptr33(const uint32_t* a00, const uint32_t* a01, const uint32_t* a10, const uint32_t* a11) {
     274           0 :     uint32_t c00 = *a00;
     275           0 :     uint32_t c01 = *a01;
     276           0 :     uint32_t c10 = *a10;
     277           0 :     uint32_t c11 = *a11;
     278           0 :     uint32_t lo = (9 * LO_PAIR(c11) + 3 * (LO_PAIR(c01) + LO_PAIR(c10)) + LO_PAIR(c00)) >> 4;
     279           0 :     uint32_t hi = (9 * HI_PAIR(c11) + 3 * (HI_PAIR(c01) + HI_PAIR(c10)) + HI_PAIR(c00)) >> 4;
     280           0 :     return COMBINE(lo, hi);
     281             : }
     282             : 
     283             : static const SkFilterPtrProc gBilerpPtrProcs[4 * 4] = {
     284             :     bilerptr00, bilerptr01, bilerptr02, bilerptr03,
     285             :     bilerptr10, bilerptr11, bilerptr12, bilerptr13,
     286             :     bilerptr20, bilerptr21, bilerptr22, bilerptr23,
     287             :     bilerptr30, bilerptr31, bilerptr32, bilerptr33
     288             : };
     289             : 
     290           0 : const SkFilterPtrProc* SkGetBilinearFilterPtrProcTable()
     291             : {
     292           0 :     return gBilerpPtrProcs;
     293             : }

Generated by: LCOV version 1.13