Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jun 2020 13:08:57 +0000 (UTC)
From:      Piotr Kubaj <pkubaj@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r539539 - head/multimedia/ffmpeg/files
Message-ID:  <202006181308.05ID8vhF068330@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pkubaj
Date: Thu Jun 18 13:08:57 2020
New Revision: 539539
URL: https://svnweb.freebsd.org/changeset/ports/539539

Log:
  multimedia/ffmpeg: fix build on powerpc and powerpc64
  
  Revert 3a557c5d88b7b15b5954ba2743febb055549b536 to fix build error on POWER systems.
  
  PR:		247375
  Approved by:	jbeich (maintainer)

Added:
  head/multimedia/ffmpeg/files/patch-libswscale_ppc_yuv2rgb__altivec.c   (contents, props changed)

Added: head/multimedia/ffmpeg/files/patch-libswscale_ppc_yuv2rgb__altivec.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/ffmpeg/files/patch-libswscale_ppc_yuv2rgb__altivec.c	Thu Jun 18 13:08:57 2020	(r539539)
@@ -0,0 +1,145 @@
+Revert 3a557c5d88b7b15b5954ba2743febb055549b536 to fix build on powerpc and powerpc64.
+
+Error:
+CC	libswscale/ppc/yuv2rgb_altivec.o
+libswscale/ppc/yuv2rgb_altivec.c: In function ?altivec_yuv2_abgr?:
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: implicit declaration of function ?vec_xl?; did you mean ?vec_rl?? [-Werror=implicit-function-declaration]
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:437:1: note: in expansion of macro ?DEFCSP420_CVT?
+  437 | DEFCSP420_CVT(yuv2_abgr,  out_abgr)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:437:1: note: in expansion of macro ?DEFCSP420_CVT?
+  437 | DEFCSP420_CVT(yuv2_abgr,  out_abgr)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:340:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  340 |             y1 = vec_xl(0, y2i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:437:1: note: in expansion of macro ?DEFCSP420_CVT?
+  437 | DEFCSP420_CVT(yuv2_abgr,  out_abgr)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:437:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c:437:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c: In function ?altivec_yuv2_bgra?:
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:438:1: note: in expansion of macro ?DEFCSP420_CVT?
+  438 | DEFCSP420_CVT(yuv2_bgra,  out_bgra)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:340:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  340 |             y1 = vec_xl(0, y2i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:438:1: note: in expansion of macro ?DEFCSP420_CVT?
+  438 | DEFCSP420_CVT(yuv2_bgra,  out_bgra)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:438:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c:438:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c: In function ?altivec_yuv2_rgba?:
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:439:1: note: in expansion of macro ?DEFCSP420_CVT?
+  439 | DEFCSP420_CVT(yuv2_rgba,  out_rgba)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:340:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  340 |             y1 = vec_xl(0, y2i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:439:1: note: in expansion of macro ?DEFCSP420_CVT?
+  439 | DEFCSP420_CVT(yuv2_rgba,  out_rgba)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:439:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c:439:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c: In function ?altivec_yuv2_argb?:
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:440:1: note: in expansion of macro ?DEFCSP420_CVT?
+  440 | DEFCSP420_CVT(yuv2_argb,  out_argb)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:340:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  340 |             y1 = vec_xl(0, y2i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:440:1: note: in expansion of macro ?DEFCSP420_CVT?
+  440 | DEFCSP420_CVT(yuv2_argb,  out_argb)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:440:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c:440:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c: In function ?altivec_yuv2_rgb24?:
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:441:1: note: in expansion of macro ?DEFCSP420_CVT?
+  441 | DEFCSP420_CVT(yuv2_rgb24, out_rgb24)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:340:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  340 |             y1 = vec_xl(0, y2i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:441:1: note: in expansion of macro ?DEFCSP420_CVT?
+  441 | DEFCSP420_CVT(yuv2_rgb24, out_rgb24)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:441:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c:441:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c: In function ?altivec_yuv2_bgr24?:
+libswscale/ppc/yuv2rgb_altivec.c:338:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  338 |             y0 = vec_xl(0, y1i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:442:1: note: in expansion of macro ?DEFCSP420_CVT?
+  442 | DEFCSP420_CVT(yuv2_bgr24, out_bgr24)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:340:18: error: incompatible types when assigning to type ?__vector unsigned char? {aka ?__vector(16) unsigned char?} from type ?int?
+  340 |             y1 = vec_xl(0, y2i);                                              \
+      |                  ^~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:442:1: note: in expansion of macro ?DEFCSP420_CVT?
+  442 | DEFCSP420_CVT(yuv2_bgr24, out_bgr24)
+      | ^~~~~~~~~~~~~
+libswscale/ppc/yuv2rgb_altivec.c:442:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+libswscale/ppc/yuv2rgb_altivec.c:442:1: error: can?t convert a value of type ?int? to vector type ?__vector(16) signed char? which has different size
+cc1: some warnings being treated as errors
+
+--- libswscale/ppc/yuv2rgb_altivec.c.orig	2020-06-15 18:54:24 UTC
++++ libswscale/ppc/yuv2rgb_altivec.c
+@@ -305,6 +305,9 @@ static int altivec_ ## name(SwsContext *c, const unsig
+     vector signed short R1, G1, B1;                                           \
+     vector unsigned char R, G, B;                                             \
+                                                                               \
++    const vector unsigned char *y1ivP, *y2ivP, *uivP, *vivP;                  \
++    vector unsigned char align_perm;                                          \
++                                                                              \
+     vector signed short lCY       = c->CY;                                    \
+     vector signed short lOY       = c->OY;                                    \
+     vector signed short lCRV      = c->CRV;                                   \
+@@ -335,13 +338,26 @@ static int altivec_ ## name(SwsContext *c, const unsig
+         vec_dstst(oute, (0x02000002 | (((w * 3 + 32) / 32) << 16)), 1);       \
+                                                                               \
+         for (j = 0; j < w / 16; j++) {                                        \
+-            y0 = vec_xl(0, y1i);                                              \
++            y1ivP = (const vector unsigned char *) y1i;                       \
++            y2ivP = (const vector unsigned char *) y2i;                       \
++            uivP  = (const vector unsigned char *) ui;                        \
++            vivP  = (const vector unsigned char *) vi;                        \
+                                                                               \
+-            y1 = vec_xl(0, y2i);                                              \
++            align_perm = vec_lvsl(0, y1i);                                    \
++            y0 = (vector unsigned char)                                       \
++                     vec_perm(y1ivP[0], y1ivP[1], align_perm);                \
+                                                                               \
+-            u = (vector signed char) vec_xl(0, ui);                           \
++            align_perm = vec_lvsl(0, y2i);                                    \
++            y1 = (vector unsigned char)                                       \
++                     vec_perm(y2ivP[0], y2ivP[1], align_perm);                \
+                                                                               \
+-            v = (vector signed char) vec_xl(0, vi);                           \
++            align_perm = vec_lvsl(0, ui);                                     \
++            u = (vector signed char)                                          \
++                    vec_perm(uivP[0], uivP[1], align_perm);                   \
++                                                                              \
++            align_perm = vec_lvsl(0, vi);                                     \
++            v = (vector signed char)                                          \
++                    vec_perm(vivP[0], vivP[1], align_perm);                   \
+                                                                               \
+             u = (vector signed char)                                          \
+                     vec_sub(u,                                                \



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202006181308.05ID8vhF068330>