diff --git a/autotest/gcore/rasterio.py b/autotest/gcore/rasterio.py index 0762b87ee113..677d6359efde 100755 --- a/autotest/gcore/rasterio.py +++ b/autotest/gcore/rasterio.py @@ -1066,6 +1066,7 @@ def test_rasterio_average_halfsize_downsampling_byte(): v15 = 1 v16 = 1 m4 = (v13 + v14 + v15 + v16 + 2) >> 2 +<<<<<<< HEAD ds = gdal.GetDriverByName('MEM').Create('', 18, 4, 1, gdal.GDT_Byte) ds.WriteRaster(0, 0, 18, 4, struct.pack('B' * 18 * 4, @@ -1077,6 +1078,16 @@ def test_rasterio_average_halfsize_downsampling_byte(): data = ds.GetRasterBand(1).ReadRaster(0, 0, 18, 4, 9, 2, resample_alg = gdal.GRIORA_Average) assert struct.unpack('B' * 9 * 2, data) == (m1, m2, m3, m4, m2, m3, m4, m1, m2, m1, m2, m3, m4, m2, m3, m4, m1, m2) +======= + ds = gdal.GetDriverByName('MEM').Create('', 18, 2, 1, gdal.GDT_Byte) + ds.WriteRaster(0, 0, 18, 2, + struct.pack('B' * 18 * 2, + v1, v2, v5, v6, v9, v10, v13, v14, v5, v6, v9, v10, v13, v14, v1, v2, v5, v6, + v3, v4, v7, v8, v11, v12, v15, v16, v7, v8, v11, v12, v15, v16, v3, v4, v7, v8)) + # Ask for at least 8 output pixels in width to trigger SSE2 optim + data = ds.GetRasterBand(1).ReadRaster(0, 0, 18, 2, 9, 1, resample_alg = gdal.GRIORA_Average) + assert struct.unpack('B' * 9, data) == (m1, m2, m3, m4, m2, m3, m4, m1, m2) +>>>>>>> 2e13b33fc5 (Merge branch 'master' of github.com:OSGeo/gdal) ds.BuildOverviews('AVERAGE', [2]) ovr_data = ds.GetRasterBand(1).GetOverview(0).ReadRaster() diff --git a/docker/README.md b/docker/README.md index b0b9ee3a7dd9..29d74035eb5b 100644 --- a/docker/README.md +++ b/docker/README.md @@ -7,7 +7,11 @@ Each directory contains a `./build.sh` for convenient building of the image. Note: the mention of the overall licensing terms of the GDAL build is to the best of our knowledge and not guaranteed. Users should check by themselves. +<<<<<<< HEAD:docker/README.md # Alpine based +======= +# Alpine based (3.14) +>>>>>>> 2e13b33fc5 (Merge branch 'master' of github.com:OSGeo/gdal):gdal/docker/README.md Alpine version: * 3.15 for 3.5 @@ -33,9 +37,15 @@ See [alpine-small/Dockerfile](alpine-small/Dockerfile) * Vector drivers: small + Spatialite, XLS * Using internal libtiff and libgeotiff * External libraries enabled: small + libgeos, libhdf5, libhdf5, libkea, libnetcdf, libfreexl, +<<<<<<< HEAD:docker/README.md libspatialite, libxml2, libpoppler, openexr, libheif, libdeflate, libparquet * GDAL Python * Base PROJ grid package (http://download.osgeo.org/proj/proj-datumgrid-1.8.zip) +======= + libspatialite, libxml2, libpoppler, openexr, libheif, libdeflate +* GDAL Python (Python 3.9) +* Base PROJ grid package +>>>>>>> 2e13b33fc5 (Merge branch 'master' of github.com:OSGeo/gdal):gdal/docker/README.md * Overall licensing terms of the GDAL build: copy-left (GPL) + LGPL + permissive See [alpine-normal/Dockerfile](alpine-normal/Dockerfile) diff --git a/docker/alpine-normal/Dockerfile b/docker/alpine-normal/Dockerfile index 2f1afb747d96..aecf46349d8b 100644 --- a/docker/alpine-normal/Dockerfile +++ b/docker/alpine-normal/Dockerfile @@ -5,7 +5,11 @@ # Public domain # or licensed under MIT (LICENSE.TXT) Copyright 2019 Even Rouault +<<<<<<< HEAD:docker/alpine-normal/Dockerfile ARG ALPINE_VERSION=3.16 +======= +ARG ALPINE_VERSION=3.14 +>>>>>>> 2e13b33fc5 (Merge branch 'master' of github.com:OSGeo/gdal):gdal/docker/alpine-normal/Dockerfile FROM alpine:${ALPINE_VERSION} as builder # Derived from osgeo/proj by Howard Butler diff --git a/docker/alpine-small/Dockerfile b/docker/alpine-small/Dockerfile index 019dc36fdbf4..7547576cca95 100644 --- a/docker/alpine-small/Dockerfile +++ b/docker/alpine-small/Dockerfile @@ -5,7 +5,11 @@ # Public domain # or licensed under MIT (LICENSE.TXT) Copyright 2019 Even Rouault +<<<<<<< HEAD:docker/alpine-small/Dockerfile ARG ALPINE_VERSION=3.16 +======= +ARG ALPINE_VERSION=3.14 +>>>>>>> 2e13b33fc5 (Merge branch 'master' of github.com:OSGeo/gdal):gdal/docker/alpine-small/Dockerfile FROM alpine:${ALPINE_VERSION} as builder # Derived from osgeo/proj by Howard Butler diff --git a/gcore/overview.cpp b/gcore/overview.cpp index b8f73e4f12e7..81651ea53a94 100644 --- a/gcore/overview.cpp +++ b/gcore/overview.cpp @@ -984,6 +984,7 @@ inline __m128 SQUARE(__m128 x) return _mm_mul_ps(x, x); } +<<<<<<< HEAD:gcore/overview.cpp inline __m128 FIXUP_LANES(__m128 x) { return x; @@ -1007,6 +1008,20 @@ inline __m128 FIXUP_LANES(__m128 x) #endif template static int NOINLINE QuadraticMeanFloatSSE2(int nDstXWidth, +======= +#ifdef __SSE3__ +#define sse2_hadd_ps _mm_hadd_ps +#else +inline __m128 sse2_hadd_ps(__m128 a, __m128 b) +{ + auto aEven_bEven = _mm_shuffle_ps(a, b, _MM_SHUFFLE(2,0,2,0)); + auto aOdd_bOdd = _mm_shuffle_ps(a, b, _MM_SHUFFLE(3,1,3,1)); + return _mm_add_ps(aEven_bEven, aOdd_bOdd); // (aEven + aOdd, bEven + bOdd) +} +#endif + +template static int QuadraticMeanFloatSSE2(int nDstXWidth, +>>>>>>> 2e13b33fc5 (Merge branch 'master' of github.com:OSGeo/gdal):gdal/gcore/overview.cpp int nChunkXSize, const T*& CPL_RESTRICT pSrcScanlineShiftedInOut, T* CPL_RESTRICT pDstScanline) @@ -1127,9 +1142,7 @@ template static int NOINLINE QuadraticMeanFloatSSE2(int nDstXWidth, rms = FIXUP_LANES(rms); ======= // Horizontal addition - const auto A = _mm_shuffle_ps(sumLo, sumHi, _MM_SHUFFLE(2,0,2,0)); - const auto B = _mm_shuffle_ps(sumLo, sumHi, _MM_SHUFFLE(3,1,3,1)); - const auto sumSquares = _mm_add_ps(A, B); + const auto sumSquares = sse2_hadd_ps(sumLo, sumHi); auto rms = _mm_mul_ps(maxV, _mm_sqrt_ps(_mm_mul_ps(sumSquares, zeroDot25))); diff --git a/gdal/docker/alpine-ultrasmall/Dockerfile b/gdal/docker/alpine-ultrasmall/Dockerfile index 2a58c4d576bd..f080ff7da5f0 100644 --- a/gdal/docker/alpine-ultrasmall/Dockerfile +++ b/gdal/docker/alpine-ultrasmall/Dockerfile @@ -5,7 +5,7 @@ # Public domain # or licensed under X/MIT (LICENSE.TXT) Copyright 2019 Even Rouault -ARG ALPINE_VERSION=3.13 +ARG ALPINE_VERSION=3.14 FROM alpine:${ALPINE_VERSION} as builder # Derived from osgeo/proj by Howard Butler