summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--postproc/rgb2rgb.c7
-rw-r--r--postproc/rgb2rgb_template.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/postproc/rgb2rgb.c b/postproc/rgb2rgb.c
index 6ba49112e8..4ddb7d769d 100644
--- a/postproc/rgb2rgb.c
+++ b/postproc/rgb2rgb.c
@@ -23,6 +23,10 @@
#define MOVNTQ "movq"
#endif
+#ifdef HAVE_MMX2
+#define SFENCE "sfence"
+#endif
+
void rgb24to32(uint8_t *src,uint8_t *dst,uint32_t src_size)
{
uint8_t *dest = dst;
@@ -65,6 +69,9 @@ void rgb24to32(uint8_t *src,uint8_t *dst,uint32_t src_size)
dest += 16;
s += 12;
}
+#ifdef SFENCE
+ __asm __volatile(SFENCE:::"memory");
+#endif
__asm __volatile(EMMS:::"memory");
#endif
while(s < end)
diff --git a/postproc/rgb2rgb_template.c b/postproc/rgb2rgb_template.c
index 6ba49112e8..4ddb7d769d 100644
--- a/postproc/rgb2rgb_template.c
+++ b/postproc/rgb2rgb_template.c
@@ -23,6 +23,10 @@
#define MOVNTQ "movq"
#endif
+#ifdef HAVE_MMX2
+#define SFENCE "sfence"
+#endif
+
void rgb24to32(uint8_t *src,uint8_t *dst,uint32_t src_size)
{
uint8_t *dest = dst;
@@ -65,6 +69,9 @@ void rgb24to32(uint8_t *src,uint8_t *dst,uint32_t src_size)
dest += 16;
s += 12;
}
+#ifdef SFENCE
+ __asm __volatile(SFENCE:::"memory");
+#endif
__asm __volatile(EMMS:::"memory");
#endif
while(s < end)