VirtualBox

source: vbox/trunk/src/libs/libpng-1.6.45/intel/intel_init.c@ 107935

Last change on this file since 107935 was 107813, checked in by vboxsync, 4 weeks ago

libpng-1.6.45: Applied and adjusted our libpng changes to 1.6.45. bugref:8515

  • Property svn:eol-style set to native
File size: 1.8 KB
Line 
1/* intel_init.c - SSE2 optimized filter functions
2 *
3 * Copyright (c) 2018 Cosmin Truta
4 * Copyright (c) 2016-2017 Glenn Randers-Pehrson
5 * Written by Mike Klein and Matt Sarett, Google, Inc.
6 * Derived from arm/arm_init.c
7 *
8 * This code is released under the libpng license.
9 * For conditions of distribution and use, see the disclaimer
10 * and license in png.h
11 */
12
13#include "../pngpriv.h"
14
15#ifdef PNG_READ_SUPPORTED
16#if PNG_INTEL_SSE_IMPLEMENTATION > 0
17
18void
19png_init_filter_functions_sse2(png_structp pp, unsigned int bpp)
20{
21 /* The techniques used to implement each of these filters in SSE operate on
22 * one pixel at a time.
23 * So they generally speed up 3bpp images about 3x, 4bpp images about 4x.
24 * They can scale up to 6 and 8 bpp images and down to 2 bpp images,
25 * but they'd not likely have any benefit for 1bpp images.
26 * Most of these can be implemented using only MMX and 64-bit registers,
27 * but they end up a bit slower than using the equally-ubiquitous SSE2.
28 */
29 png_debug(1, "in png_init_filter_functions_sse2");
30 if (bpp == 3)
31 {
32 pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_sse2;
33 pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_sse2;
34 pp->read_filter[PNG_FILTER_VALUE_PAETH-1] =
35 png_read_filter_row_paeth3_sse2;
36 }
37 else if (bpp == 4)
38 {
39 pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_sse2;
40 pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_sse2;
41 pp->read_filter[PNG_FILTER_VALUE_PAETH-1] =
42 png_read_filter_row_paeth4_sse2;
43 }
44
45 /* No need optimize PNG_FILTER_VALUE_UP. The compiler should
46 * autovectorize.
47 */
48}
49
50#endif /* PNG_INTEL_SSE_IMPLEMENTATION > 0 */
51#endif /* PNG_READ_SUPPORTED */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette