blob: 9239f8efec9dfe20c8dca5f64fc4d8d5e59e95af [file] [log] [blame]
mtklein8317a182015-07-30 07:30:16 -07001/*
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#ifndef SkOpts_DEFINED
9#define SkOpts_DEFINED
10
11#include "SkTypes.h"
mtklein490b6152015-07-31 11:50:27 -070012#include "SkXfermode.h"
13
14struct ProcCoeff;
mtklein8317a182015-07-30 07:30:16 -070015
16namespace SkOpts {
17 // Call to replace pointers to portable functions with pointers to CPU-specific functions.
18 // Thread-safe and idempotent.
19 // Called by SkGraphics::Init(), and automatically #if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS.
20 void Init();
21
mtkleinf684a782015-07-30 09:29:37 -070022 // Declare function pointers here...
23
24 // Returns a fast approximation of 1.0f/sqrtf(x).
25 extern float (*rsqrt)(float);
mtklein7eb09452015-07-31 10:46:50 -070026
27 // See SkUtils.h
28 extern void (*memset16)(uint16_t[], uint16_t, int);
29 extern void (*memset32)(uint32_t[], uint32_t, int);
mtklein490b6152015-07-31 11:50:27 -070030
31 // May return nullptr if we haven't specialized the given Mode.
32 extern SkXfermode* (*create_xfermode)(const ProcCoeff&, SkXfermode::Mode);
mtklein8317a182015-07-30 07:30:16 -070033}
34
35#endif//SkOpts_DEFINED