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

Side by Side Diff: src/opts/opts_check_x86.cpp

Issue 1820313002: Port S32A_opaque blit row to SkOpts. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fmt Created 4 years, 9 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
« src/opts/SkOpts_sse41.cpp ('K') | « src/opts/SkOpts_sse41.cpp ('k') | no next file » | 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 * Copyright 2009 The Android Open Source Project 2 * Copyright 2009 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBitmapFilter_opts_SSE2.h" 8 #include "SkBitmapFilter_opts_SSE2.h"
9 #include "SkBitmapProcState_opts_SSE2.h" 9 #include "SkBitmapProcState_opts_SSE2.h"
10 #include "SkBitmapProcState_opts_SSSE3.h" 10 #include "SkBitmapProcState_opts_SSSE3.h"
11 #include "SkBitmapScaler.h" 11 #include "SkBitmapScaler.h"
12 #include "SkBlitMask.h" 12 #include "SkBlitMask.h"
13 #include "SkBlitRow.h" 13 #include "SkBlitRow.h"
14 #include "SkBlitRow_opts_SSE2.h" 14 #include "SkBlitRow_opts_SSE2.h"
15 #include "SkBlitRow_opts_SSE4.h"
16 #include "SkOncePtr.h" 15 #include "SkOncePtr.h"
17 #include "SkRTConf.h" 16 #include "SkRTConf.h"
18 17
19 #if defined(_MSC_VER) && defined(_WIN64) 18 #if defined(_MSC_VER) && defined(_WIN64)
20 #include <intrin.h> 19 #include <intrin.h>
21 #endif 20 #endif
22 21
23 /* This file must *not* be compiled with -msse or any other optional SIMD 22 /* This file must *not* be compiled with -msse or any other optional SIMD
24 extension, otherwise gcc may generate SIMD instructions even for scalar ops 23 extension, otherwise gcc may generate SIMD instructions even for scalar ops
25 (and thus give an invalid instruction on Pentium3 on the code below). 24 (and thus give an invalid instruction on Pentium3 on the code below).
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { 207 if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) {
209 return platform_565_colorprocs_SSE2[flags]; 208 return platform_565_colorprocs_SSE2[flags];
210 } else { 209 } else {
211 return nullptr; 210 return nullptr;
212 } 211 }
213 } 212 }
214 213
215 static const SkBlitRow::Proc32 platform_32_procs_SSE2[] = { 214 static const SkBlitRow::Proc32 platform_32_procs_SSE2[] = {
216 nullptr, // S32_Opaque, 215 nullptr, // S32_Opaque,
217 S32_Blend_BlitRow32_SSE2, // S32_Blend, 216 S32_Blend_BlitRow32_SSE2, // S32_Blend,
218 S32A_Opaque_BlitRow32_SSE2, // S32A_Opaque 217 nullptr, // Ported to SkOpts
219 S32A_Blend_BlitRow32_SSE2, // S32A_Blend,
220 };
221
222 static const SkBlitRow::Proc32 platform_32_procs_SSE4[] = {
223 nullptr, // S32_Opaque,
224 S32_Blend_BlitRow32_SSE2, // S32_Blend,
225 S32A_Opaque_BlitRow32_SSE4, // S32A_Opaque
226 S32A_Blend_BlitRow32_SSE2, // S32A_Blend, 218 S32A_Blend_BlitRow32_SSE2, // S32A_Blend,
227 }; 219 };
228 220
229 SkBlitRow::Proc32 SkBlitRow::PlatformProcs32(unsigned flags) { 221 SkBlitRow::Proc32 SkBlitRow::PlatformProcs32(unsigned flags) {
230 if (supports_simd(SK_CPU_SSE_LEVEL_SSE41)) {
231 return platform_32_procs_SSE4[flags];
232 } else
233 if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { 222 if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) {
234 return platform_32_procs_SSE2[flags]; 223 return platform_32_procs_SSE2[flags];
235 } else { 224 } else {
236 return nullptr; 225 return nullptr;
237 } 226 }
238 } 227 }
239 228
240 //////////////////////////////////////////////////////////////////////////////// 229 ////////////////////////////////////////////////////////////////////////////////
241 230
242 SkBlitMask::BlitLCD16RowProc SkBlitMask::PlatformBlitRowProcs16(bool isOpaque) { 231 SkBlitMask::BlitLCD16RowProc SkBlitMask::PlatformBlitRowProcs16(bool isOpaque) {
243 if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) { 232 if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) {
244 if (isOpaque) { 233 if (isOpaque) {
245 return SkBlitLCD16OpaqueRow_SSE2; 234 return SkBlitLCD16OpaqueRow_SSE2;
246 } else { 235 } else {
247 return SkBlitLCD16Row_SSE2; 236 return SkBlitLCD16Row_SSE2;
248 } 237 }
249 } else { 238 } else {
250 return nullptr; 239 return nullptr;
251 } 240 }
252 241
253 } 242 }
254 243
255 SkBlitMask::RowProc SkBlitMask::PlatformRowProcs(SkColorType, SkMask::Format, Ro wFlags) { 244 SkBlitMask::RowProc SkBlitMask::PlatformRowProcs(SkColorType, SkMask::Format, Ro wFlags) {
256 return nullptr; 245 return nullptr;
257 } 246 }
OLDNEW
« src/opts/SkOpts_sse41.cpp ('K') | « src/opts/SkOpts_sse41.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698