Browse Source

revert to former implementation with array size fix

master
Chris Guillott 7 years ago
parent
commit
8946358b26
  1. 2
      blur.h
  2. 4
      blur_simd.c

2
blur.h

@ -4,7 +4,7 @@
#include <stdint.h> #include <stdint.h>
#include <cairo.h> #include <cairo.h>
#define KERNEL_SIZE 8 #define KERNEL_SIZE 7
#define SIGMA_AV 2 #define SIGMA_AV 2
#define HALF_KERNEL KERNEL_SIZE / 2 #define HALF_KERNEL KERNEL_SIZE / 2

4
blur_simd.c

@ -27,7 +27,7 @@ void blur_impl_horizontal_pass_sse2(uint32_t *src, uint32_t *dst, int width, int
int leftBorder = column < HALF_KERNEL; int leftBorder = column < HALF_KERNEL;
int rightBorder = column > (width - HALF_KERNEL); int rightBorder = column > (width - HALF_KERNEL);
// +1 to make memory checkers not complain // +1 to make memory checkers not complain
uint32_t _rgbaIn[KERNEL_SIZE] __attribute__((aligned(16))); uint32_t _rgbaIn[KERNEL_SIZE + 1] __attribute__((aligned(16)));
int i = 0; int i = 0;
if (leftBorder) { if (leftBorder) {
// for kernel size 8x8 and column == 0, we have: // for kernel size 8x8 and column == 0, we have:
@ -51,7 +51,7 @@ void blur_impl_horizontal_pass_sse2(uint32_t *src, uint32_t *dst, int width, int
rgbaIn[k] = _mm_load_si128((__m128i*)(_rgbaIn + 4*k)); rgbaIn[k] = _mm_load_si128((__m128i*)(_rgbaIn + 4*k));
} else { } else {
for (int k = 0; k < REGISTERS_CNT; k++) { for (int k = 0; k < REGISTERS_CNT; k++) {
printf("\t\tk: %d\n", k); printf("\t\tk: %d %p\n", k, src);
rgbaIn[k] = _mm_load_si128((__m128i*)(src + 4*k - HALF_KERNEL)); rgbaIn[k] = _mm_load_si128((__m128i*)(src + 4*k - HALF_KERNEL));
} }
} }

Loading…
Cancel
Save