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

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

Issue 239453010: Properly enable S32_D16_filter_DX_SSE2 optimization. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 8 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
« no previous file with comments | « no previous file | 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 "SkBitmapProcState_opts_SSE2.h" 8 #include "SkBitmapProcState_opts_SSE2.h"
9 #include "SkBitmapProcState_opts_SSSE3.h" 9 #include "SkBitmapProcState_opts_SSSE3.h"
10 #include "SkBitmapFilter_opts_SSE2.h" 10 #include "SkBitmapFilter_opts_SSE2.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 void SkBitmapProcState::platformConvolutionProcs(SkConvolutionProcs* procs) { 115 void SkBitmapProcState::platformConvolutionProcs(SkConvolutionProcs* procs) {
116 if (cachedHasSSE2()) { 116 if (cachedHasSSE2()) {
117 procs->fExtraHorizontalReads = 3; 117 procs->fExtraHorizontalReads = 3;
118 procs->fConvolveVertically = &convolveVertically_SSE2; 118 procs->fConvolveVertically = &convolveVertically_SSE2;
119 procs->fConvolve4RowsHorizontally = &convolve4RowsHorizontally_SSE2; 119 procs->fConvolve4RowsHorizontally = &convolve4RowsHorizontally_SSE2;
120 procs->fConvolveHorizontally = &convolveHorizontally_SSE2; 120 procs->fConvolveHorizontally = &convolveHorizontally_SSE2;
121 procs->fApplySIMDPadding = &applySIMDPadding_SSE2; 121 procs->fApplySIMDPadding = &applySIMDPadding_SSE2;
122 } 122 }
123 } 123 }
124 124
125 void SkBitmapProcState::platformProcs() { 125 void SkBitmapProcState::platformProcs() {
mtklein 2014/04/16 16:40:39 I can see how easy this was to mess up before. Ca
126 if (cachedHasSSSE3()) { 126 if (cachedHasSSSE3()) {
127 if (fSampleProc32 == S32_opaque_D32_filter_DX) { 127 if (fSampleProc32 == S32_opaque_D32_filter_DX) {
128 fSampleProc32 = S32_opaque_D32_filter_DX_SSSE3; 128 fSampleProc32 = S32_opaque_D32_filter_DX_SSSE3;
129 } else if (fSampleProc32 == S32_alpha_D32_filter_DX) { 129 } else if (fSampleProc32 == S32_alpha_D32_filter_DX) {
130 fSampleProc32 = S32_alpha_D32_filter_DX_SSSE3; 130 fSampleProc32 = S32_alpha_D32_filter_DX_SSSE3;
131 } 131 }
132 132
133 if (fSampleProc32 == S32_opaque_D32_filter_DXDY) { 133 if (fSampleProc32 == S32_opaque_D32_filter_DXDY) {
134 fSampleProc32 = S32_opaque_D32_filter_DXDY_SSSE3; 134 fSampleProc32 = S32_opaque_D32_filter_DXDY_SSSE3;
135 } else if (fSampleProc32 == S32_alpha_D32_filter_DXDY) { 135 } else if (fSampleProc32 == S32_alpha_D32_filter_DXDY) {
136 fSampleProc32 = S32_alpha_D32_filter_DXDY_SSSE3; 136 fSampleProc32 = S32_alpha_D32_filter_DXDY_SSSE3;
137 } 137 }
138 } else if (cachedHasSSE2()) { 138 } else if (cachedHasSSE2()) {
139 if (fSampleProc32 == S32_opaque_D32_filter_DX) { 139 if (fSampleProc32 == S32_opaque_D32_filter_DX) {
140 fSampleProc32 = S32_opaque_D32_filter_DX_SSE2; 140 fSampleProc32 = S32_opaque_D32_filter_DX_SSE2;
141 } else if (fSampleProc32 == S32_alpha_D32_filter_DX) { 141 } else if (fSampleProc32 == S32_alpha_D32_filter_DX) {
142 fSampleProc32 = S32_alpha_D32_filter_DX_SSE2; 142 fSampleProc32 = S32_alpha_D32_filter_DX_SSE2;
143 } 143 }
144 }
144 145
146 if (cachedHasSSE2()) {
145 if (fSampleProc16 == S32_D16_filter_DX) { 147 if (fSampleProc16 == S32_D16_filter_DX) {
146 fSampleProc16 = S32_D16_filter_DX_SSE2; 148 fSampleProc16 = S32_D16_filter_DX_SSE2;
147 } 149 }
148 }
149 150
150 if (cachedHasSSSE3() || cachedHasSSE2()) {
151 if (fMatrixProc == ClampX_ClampY_filter_scale) { 151 if (fMatrixProc == ClampX_ClampY_filter_scale) {
152 fMatrixProc = ClampX_ClampY_filter_scale_SSE2; 152 fMatrixProc = ClampX_ClampY_filter_scale_SSE2;
153 } else if (fMatrixProc == ClampX_ClampY_nofilter_scale) { 153 } else if (fMatrixProc == ClampX_ClampY_nofilter_scale) {
154 fMatrixProc = ClampX_ClampY_nofilter_scale_SSE2; 154 fMatrixProc = ClampX_ClampY_nofilter_scale_SSE2;
155 } 155 }
156 156
157 if (fMatrixProc == ClampX_ClampY_filter_affine) { 157 if (fMatrixProc == ClampX_ClampY_filter_affine) {
158 fMatrixProc = ClampX_ClampY_filter_affine_SSE2; 158 fMatrixProc = ClampX_ClampY_filter_affine_SSE2;
159 } else if (fMatrixProc == ClampX_ClampY_nofilter_affine) { 159 } else if (fMatrixProc == ClampX_ClampY_nofilter_affine) {
160 fMatrixProc = ClampX_ClampY_nofilter_affine_SSE2; 160 fMatrixProc = ClampX_ClampY_nofilter_affine_SSE2;
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 } else { 331 } else {
332 return SkPlatformXfermodeFactory_impl(rec, mode); 332 return SkPlatformXfermodeFactory_impl(rec, mode);
333 } 333 }
334 } 334 }
335 335
336 SkXfermodeProc SkPlatformXfermodeProcFactory(SkXfermode::Mode mode); 336 SkXfermodeProc SkPlatformXfermodeProcFactory(SkXfermode::Mode mode);
337 337
338 SkXfermodeProc SkPlatformXfermodeProcFactory(SkXfermode::Mode mode) { 338 SkXfermodeProc SkPlatformXfermodeProcFactory(SkXfermode::Mode mode) {
339 return NULL; 339 return NULL;
340 } 340 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698