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

          Line data    Source code
       1             : /*
       2             :  * Copyright 2015 Google Inc.
       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             : #include "SkCpu.h"
       9             : #include "SkHalf.h"
      10             : #include "SkOnce.h"
      11             : #include "SkOpts.h"
      12             : 
      13             : #if defined(SK_ARM_HAS_NEON)
      14             :     #if defined(SK_ARM_HAS_CRC32)
      15             :         #define SK_OPTS_NS neon_and_crc32
      16             :     #else
      17             :         #define SK_OPTS_NS neon
      18             :     #endif
      19             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX2
      20             :     #define SK_OPTS_NS avx2
      21             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX
      22             :     #define SK_OPTS_NS avx
      23             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE42
      24             :     #define SK_OPTS_NS sse42
      25             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
      26             :     #define SK_OPTS_NS sse41
      27             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3
      28             :     #define SK_OPTS_NS ssse3
      29             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE3
      30             :     #define SK_OPTS_NS sse3
      31             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
      32             :     #define SK_OPTS_NS sse2
      33             : #elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1
      34             :     #define SK_OPTS_NS sse
      35             : #else
      36             :     #define SK_OPTS_NS portable
      37             : #endif
      38             : 
      39             : #include "SkBitmapFilter_opts.h"
      40             : #include "SkBlend_opts.h"
      41             : #include "SkBlitMask_opts.h"
      42             : #include "SkBlitRow_opts.h"
      43             : #include "SkBlurImageFilter_opts.h"
      44             : #include "SkChecksum_opts.h"
      45             : #include "SkMorphologyImageFilter_opts.h"
      46             : #include "SkRasterPipeline_opts.h"
      47             : #include "SkSwizzler_opts.h"
      48             : #include "SkXfermode_opts.h"
      49             : 
      50             : namespace SkOpts {
      51             :     // Define default function pointer values here...
      52             :     // If our global compile options are set high enough, these defaults might even be
      53             :     // CPU-specialized, e.g. a typical x86-64 machine might start with SSE2 defaults.
      54             :     // They'll still get a chance to be replaced with even better ones, e.g. using SSE4.1.
      55             : #define DEFINE_DEFAULT(name) decltype(name) name = SK_OPTS_NS::name
      56             :     DEFINE_DEFAULT(create_xfermode);
      57             : 
      58           3 :     DEFINE_DEFAULT(box_blur_xx);
      59           3 :     DEFINE_DEFAULT(box_blur_xy);
      60           3 :     DEFINE_DEFAULT(box_blur_yx);
      61             : 
      62           3 :     DEFINE_DEFAULT(dilate_x);
      63           3 :     DEFINE_DEFAULT(dilate_y);
      64           3 :     DEFINE_DEFAULT( erode_x);
      65           3 :     DEFINE_DEFAULT( erode_y);
      66             : 
      67             :     DEFINE_DEFAULT(blit_mask_d32_a8);
      68             : 
      69             :     DEFINE_DEFAULT(blit_row_color32);
      70             :     DEFINE_DEFAULT(blit_row_s32a_opaque);
      71             : 
      72             :     DEFINE_DEFAULT(RGBA_to_BGRA);
      73             :     DEFINE_DEFAULT(RGBA_to_rgbA);
      74             :     DEFINE_DEFAULT(RGBA_to_bgrA);
      75             :     DEFINE_DEFAULT(RGB_to_RGB1);
      76             :     DEFINE_DEFAULT(RGB_to_BGR1);
      77             :     DEFINE_DEFAULT(gray_to_RGB1);
      78             :     DEFINE_DEFAULT(grayA_to_RGBA);
      79             :     DEFINE_DEFAULT(grayA_to_rgbA);
      80             :     DEFINE_DEFAULT(inverted_CMYK_to_RGB1);
      81             :     DEFINE_DEFAULT(inverted_CMYK_to_BGR1);
      82             : 
      83             :     DEFINE_DEFAULT(srcover_srgb_srgb);
      84             : 
      85             :     DEFINE_DEFAULT(hash_fn);
      86             : 
      87             :     DEFINE_DEFAULT(run_pipeline);
      88             : 
      89             :     DEFINE_DEFAULT(convolve_vertically);
      90             :     DEFINE_DEFAULT(convolve_horizontally);
      91             :     DEFINE_DEFAULT(convolve_4_rows_horizontally);
      92             : 
      93             : #undef DEFINE_DEFAULT
      94             : 
      95             :     // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp.
      96             :     void Init_ssse3();
      97             :     void Init_sse41();
      98             :     void Init_sse42();
      99             :     void Init_avx();
     100             :     void Init_hsw();
     101             :     void Init_crc32();
     102             : 
     103           3 :     static void init() {
     104             : #if !defined(SK_BUILD_NO_OPTS)
     105             :     #if defined(SK_CPU_X86)
     106           3 :         if (SkCpu::Supports(SkCpu::SSSE3)) { Init_ssse3(); }
     107           3 :         if (SkCpu::Supports(SkCpu::SSE41)) { Init_sse41(); }
     108           3 :         if (SkCpu::Supports(SkCpu::SSE42)) { Init_sse42(); }
     109           3 :         if (SkCpu::Supports(SkCpu::AVX  )) { Init_avx();   }
     110           3 :         if (SkCpu::Supports(SkCpu::HSW  )) { Init_hsw();   }
     111             : 
     112             :     #elif defined(SK_CPU_ARM64)
     113             :         if (SkCpu::Supports(SkCpu::CRC32)) { Init_crc32(); }
     114             : 
     115             :     #endif
     116             : #endif
     117           3 :     }
     118             : 
     119           3 :     void Init() {
     120             :         static SkOnce once;
     121           3 :         once(init);
     122           3 :     }
     123           9 : }  // namespace SkOpts

Generated by: LCOV version 1.13