Compare commits

...

95 Commits

Author SHA1 Message Date
Enrico Weigelt, metux IT consult
38c90b5593 Use asprintf() instead of Xasprintf()
This driver is Linux-only, so it's safe to assume asprintf() here.

It's one of the last few drivers ever using that function, so
blocking its removal from Xorg ABI.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-03-07 15:18:20 +01:00
Enrico Weigelt, metux IT consult
3a61617ccd gitlab CI: add pipeline for building against various Xserver releases
Adding a gitlab pipeline building this driver against Xserver major releases
since 1.18, including current master branch.

This driver only works on Linux, not BSD.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-03-07 15:18:20 +01:00
Enrico Weigelt, metux IT consult
852018599d gitlab CI: common scripts for driver builds
Adding a bunch of common scripts for building xorg drivers on different
platforms (for now Debian and FreeBSD) against different server versions.

Also designed to be executed locally (eg. within a VM), so one doesn't
always have to employ f.d.o gitlab.

For now, these are synced manually across various driver repos, until we've
found a viable solution for a central place.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-03-07 15:18:18 +01:00
Alan Coopersmith
36ffdb5239 Fix -Wdiscarded-qualifiers warning in AddV4LEnc()
v4l.c: In function 'AddV4LEnc':
v4l.c:920:16: warning: passing argument 1 of 'sprintf' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  920 |     sprintf(enc->name,"%s-%s",norm,fixname(input));
      |             ~~~^~~~~~
In file included from v4l.c:20:
/usr/include/stdio.h:363:38: note: expected 'char * restrict' but argument is of type 'const char *'
  363 | extern int sprintf (char *__restrict __s,
      |                     ~~~~~~~~~~~~~~~~~^~~

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2024-01-16 13:38:49 -08:00
Alan Coopersmith
7899231c65 Quiet -Wredundant-decls warnings for strlcat and strlcpy
In file included from /usr/include/xorg/misc.h:119,
                 from /usr/include/xorg/xf86str.h:37,
                 from /usr/include/xorg/xf86.h:44,
                 from v4l.c:25:
/usr/include/xorg/os.h:595:1: warning: redundant redeclaration of 'strlcpy'
 [-Wredundant-decls]
  595 | strlcpy(char *dst, const char *src, size_t siz);
      | ^~~~~~~
In file included from v4l.c:19:
/usr/include/string.h:506:15: note: previous declaration of 'strlcpy' with
 type 'size_t(char * restrict, const char * restrict, size_t)' {aka
 'long unsigned int(char * restrict, const char * restrict, long unsigned int)'}
  506 | extern size_t strlcpy (char *__restrict __dest,
      |               ^~~~~~~
/usr/include/xorg/os.h:597:1: warning: redundant redeclaration of 'strlcat'
 [-Wredundant-decls]
  597 | strlcat(char *dst, const char *src, size_t siz);
      | ^~~~~~~
/usr/include/string.h:512:15: note: previous declaration of 'strlcat' with
 type 'size_t(char * restrict, const char * restrict, size_t)' {aka
 'long unsigned int(char * restrict, const char * restrict, long unsigned int)'}
  512 | extern size_t strlcat (char *__restrict __dest,
      |               ^~~~~~~

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2024-01-16 13:30:10 -08:00
Alan Coopersmith
10e0e12fcf Add X.Org's standard C warning flags to AM_CFLAGS
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2024-01-16 13:08:07 -08:00
Alan Coopersmith
07871d6be3 configure: Use LT_INIT from libtool 2 instead of deprecated AC_PROG_LIBTOOL
AC_PROG_LIBTOOL was replaced by LT_INIT in libtool 2 in 2008,
so it's time to rely on it.

Clears autoconf warnings:

configure.ac:45: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
configure.ac:45: You should run autoupdate.
aclocal.m4:3551: AC_PROG_LIBTOOL is expanded from...
configure.ac:45: the top level

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2024-01-16 13:07:35 -08:00
Alan Coopersmith
6367e7e46d gitlab CI: ensure libtool is installed in build container
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-10-07 09:06:39 -07:00
Alan Coopersmith
1f9068a1c8 gitlab CI: stop requiring Signed-off-by in commits
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-02-09 12:07:00 -08:00
Alan Coopersmith
c5235058aa gitlab CI: add a basic build test
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-01-29 15:49:27 -08:00
Alan Coopersmith
cb3970480f Fix spelling/wording issues
Found by using:
    codespell --builtin clear,rare,usage,informal,code,names

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-01-29 15:48:26 -08:00
Alan Coopersmith
a375e88f89 Build xz tarballs instead of bzip2
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-01-29 15:45:50 -08:00
Alan Coopersmith
3df0a355f9 Update configure.ac bug URL for gitlab migration
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2018-12-07 19:18:13 -08:00
Peter Hutterer
b3244827d9 Fix ioctl return value handling
Found by coverity

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2018-10-08 13:16:35 +10:00
Peter Hutterer
3370b6b6a4 Fix handling of realloc failure
Coverity complaint and whatnot

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2018-10-08 13:16:28 +10:00
Peter Hutterer
a020fda02f Ensure the device name is null-terminated
And expand the size to 18, because the stack array we copied this into is 18
bytes long. This covers us for up to 999 (kernel) v4l devices and that is
definitely not a reason to use the "640k ought to be enough" meme.

Found by - you guessed it - coverity!

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2018-10-08 13:10:14 +10:00
Peter Hutterer
3f9022bdfe Remove unused variable osname
Coverity is unhappy and there's enough unhappiness in this world already, so
let's go for the low-hanging fruit.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2018-10-08 13:07:25 +10:00
Adam Jackson
03ff22bd9e v4l 0.3.0
Signed-off-by: Adam Jackson <ajax@redhat.com>
2018-08-14 14:58:30 -04:00
Adam Jackson
33c2170e89 Fix distcheck
Signed-off-by: Adam Jackson <ajax@redhat.com>
2018-08-14 14:58:18 -04:00
Hans de Goede
bbf9462a4e Fix build post xserver 1.17
Signed-off-by: Adam Jackson <ajax@redhat.com>
2018-08-14 14:58:03 -04:00
Adam Jackson
26f1e15569 Revert "v4l 0.3.0"
Doesn't distcheck yet, sigh.

This reverts commit 1eef30fdee.
2018-08-14 14:55:19 -04:00
Adam Jackson
1eef30fdee v4l 0.3.0
Signed-off-by: Adam Jackson <ajax@redhat.com>
2018-08-14 14:43:26 -04:00
Adam Jackson
b45bef53fc Remove a bogus memset
We get this warning:

    v4l.c:1154:39: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to remove the addressof? [-Wsizeof-pointer-memaccess]

It's correct enough, but ->cap is already zeroed by the previous memset.
Just remove the bogus one.

Fixes: xorg/driver/xf86-video-v4l#1
Signed-off-by: Adam Jackson <ajax@redhat.com>
2018-08-14 14:43:26 -04:00
Mihail Konev
0cbeee8e03 autogen: add default patch prefix
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
2017-01-26 14:00:21 +10:00
Adam Jackson
74d39213b4 Remove call to LoaderGetOS
If you're not using Linux, this isn't likely to build let alone run. And
if it _does_ build on non-Linux, it's probably because someone went out
of their way to try to make it work.

Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-01-24 09:43:43 -05:00
Cyril Brulebois
95fcc10d96 Bump version for development.
Signed-off-by: Cyril Brulebois <kibi@debian.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-06-30 12:14:53 -03:00
Mauro Carvalho Chehab
ca09693ba2 Fix standard video size detection
video width/height size can vary not only as a function of the
video standard but also in function of device capabilities. Due
to that, the code were trying to get those info from the hardware.
However, due to a driver bug, the info is not properly filled when
the video standard is changed.

While I intend to fix this inside the drivers, the current logic
doesn't work with the current stable kernels. So, use an alternative
way of getting this info, just using video standards information.

Let's keep the not working code there, in order to make easy to
return, after fixing the drivers. We'll probably need to check for
driver versions after reenabling the correct (not working) code,
or to use the new VIDIOC ioctl's to enumberate the supported
formats.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:53 -02:00
Mauro Carvalho Chehab
f7e6dcee73 Fix arguments for v4l_check_yuv
The device name and the file descriptors are wrong at the cal for
v4l_check_yuv(). Due to that, the driver were falling back to work
with RGB formats.

While here, add a code to prevent V4L driver to work if no video
adapter provide Xv overlay method.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:53 -02:00
Mauro Carvalho Chehab
6167b289f1 Provide a more consistent message if FBUF fails
Instead of providing an useless info that FBUF fails, print an
error indicating what's the Fourcc format that fails.

Also, on debug mode, prints a message indicating the selection of a
given fourcc. This helps to verify if both the video adapter and the
video capture board were set to the same video format.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:53 -02:00
Mauro Carvalho Chehab
362a97d43c Return BadMatch if a Port Attribute is not found
Fix a small non-compliance issue: if a port attribute is not known,
according with Xv specs, it should return BadMatch, and not BadValue.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:53 -02:00
Mauro Carvalho Chehab
2cca68d701 Fix Get/Set Port Attribute logic
There are several issues at GPA/SPA logic:
  - driver tries to limit minimum/maximum values to -1000/1000;
  - If yuv_format is available, all GPA/SPA are sent to the
    overlay encoder at the video adapter;
  - The most used return condition is an error.

Rework the entire logic to fix the above bugs and clean the
code.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:53 -02:00
Mauro Carvalho Chehab
f344cb78ef Use the fourcc header instead of redefining it inside the code
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:53 -02:00
Mauro Carvalho Chehab
436829a9d6 Coding style Cleanup
It is hard to work on a file that has multiple coding styles. As
we're rewriting the entire file, the better is to remove trailing
spaces and fix all the alignment issues, using 4 spaces for alignment
and not using tab.

No functional changes are made on this patch.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 09:24:48 -02:00
Mauro Carvalho Chehab
f4ccca1dec Port xf86-video-v4l driver to V4L2
V4L1 API was dropped on kernel 2.6.38. Even the emulation layer
inside kernel was dropped. While it might still be possible to use
X with libv4l and a LD_PRELOADER setup, the proper way is to port
the driver to use the V4L2 API.

This change brings some improvements to the code, as now all
integer/boolean/menu controls are visible, and all video standards.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2011-02-11 07:55:25 -02:00
Gaetan Nadon
f4a94cfaef config: add comments for main statements 2010-07-22 20:24:42 -04:00
Gaetan Nadon
ecfd000f3e config: replace deprecated use of AC_OUTPUT with AC_CONFIG_FILES
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-21 16:07:00 -04:00
Gaetan Nadon
e47ceda611 config: replace deprecated AC_HELP_STRING with AS_HELP_STRING
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-21 14:37:42 -04:00
Gaetan Nadon
d1f217447c config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-21 14:05:23 -04:00
Gaetan Nadon
1da8c1e13b config: complete AC_INIT m4 quoting
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-21 09:27:42 -04:00
Gaetan Nadon
d1270c79a4 config: remove unrequired AC_SUBST([XORG_CFLAGS])
This macro is called by PKG_CHECK_MODULES

Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-20 21:44:58 -04:00
Gaetan Nadon
c3d768e984 config: remove unrequired AC_HEADER_STDC
Autoconf says:
"This macro is obsolescent, as current systems have conforming
header files. New programs need not use this macro".

Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-20 20:24:42 -04:00
Gaetan Nadon
a429958577 config: remove AC_PROG_CC as it overrides AC_PROG_C_C99
XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls
AC_PROG_C_C99. This sets gcc with -std=gnu99.
If AC_PROG_CC macro is called afterwards, it resets CC to gcc.

Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-20 19:41:31 -04:00
Gaetan Nadon
58c08d3906 config: update AC_PREREQ statement to 2.60
Unrelated to the previous patches, the new value simply reflects
the reality that the minimum level for autoconf to configure
all x.org modules is 2.60 dated June 2006.

ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz

Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-07-20 18:45:19 -04:00
Gaetan Nadon
1d6d285a5e config: upgrade to util-macros 1.8 for additional man page support
Use MAN_SUBST now supplied in XORG_MANPAGE_SECTIONS
The value of MAN_SUBST is the same for all X.Org packages.
2010-07-20 17:38:00 -04:00
Gaetan Nadon
45a5eb8cab config: header files are part of the source not in EXTRA_DIST
Only files that are not part of the source used to build
the driver are listed in EXTRA_DIST

Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2010-05-26 16:25:25 -04:00
Alan Coopersmith
70bdb4d93a Update Sun license notices to current X.Org standard form
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
2010-01-15 15:06:39 -08:00
Gaetan Nadon
0eaed2f59c configure.ac: remove unused sdkdir=$(pkg-config...) statement
The sdkdir variable isn't use, so remove the statement.

Acked-by: Dan Nicholson <dbn.lists@gmail.com>

Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2009-12-30 15:13:01 -05:00
Gaetan Nadon
e0f72fbed7 Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
Now that the INSTALL file is generated.
Allows running make maintainer-clean.
2009-11-23 09:25:06 -05:00
Gaetan Nadon
8e4e3ba247 INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
Automake 'foreign' option is specified in configure.ac.
Remove from Makefile.am
2009-10-28 14:41:41 -04:00
Gaetan Nadon
2d55ea6e19 INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
Add missing INSTALL file. Use standard GNU file on building tarball
README may have been updated
Remove AUTHORS file as it is empty and no content available yet.
Remove NEWS file as it is empty and no content available yet.
2009-10-28 14:09:10 -04:00
Gaetan Nadon
d72d75a57f Several driver modules do not have a ChangeLog target in Makefile.am #23814
The git generated ChangeLog replaces the hand written one.
Update configure.ac to xorg-macros level 1.3.
Use XORG_DEFAULT_OPTIONS which replaces four XORG_* macros
Update Makefile.am to add ChangeLog target if missing
Remove ChangeLog from EXTRA_DIST or *CLEAN variables
This is a pre-req for the INSTALL_CMD
2009-10-26 12:54:22 -04:00
Gaetan Nadon
19811b8245 .gitignore: use common defaults with custom section # 24239
Using common defaults will reduce errors and maintenance.
Only the very small or inexistent custom section need periodic maintenance
when the structure of the component changes. Do not edit defaults.
2009-10-22 13:05:12 -04:00
Gaetan Nadon
b00a028be1 .gitignore: use common defaults with custom section # 24239
Using common defaults will reduce errors and maintenance.
Only the very small or inexistent custom section need periodic maintenance
when the structure of the component changes. Do not edit defaults.
2009-10-22 12:34:18 -04:00
Alan Coopersmith
09f1117d03 Remove xorgconfig & xorgcfg from See Also list in man page 2009-01-09 16:37:45 -08:00
Julien Cristau
610a340050 Add missing includes.
Fixes missing declaration of close() and ioctl().
2008-06-09 20:38:12 +02:00
Adam Jackson
509d291479 v4l 0.2.0 2008-03-19 16:43:42 -04:00
Adam Jackson
b0dad860b9 Fix ioctl() outparameter on LP64 systems. 2008-03-19 16:42:18 -04:00
Adam Jackson
edfeb249a8 Death to RCS tags. 2008-03-19 16:14:52 -04:00
Matthieu Herrb
eb742cfb9e Makefile.am: nuke RCS Id 2008-03-09 00:03:41 +01:00
Fabrice Lorrain
a2cddcf034 Fix typo in the manpage.
(Debian bug #466098)
2008-02-16 18:07:48 +01:00
James Cloos
6260e7a816 Add *~ to .gitignore to skip patch/emacs droppings 2007-09-03 05:52:48 -04:00
James Cloos
68ef5a3537 Rename .cvsignore to .gitignore 2007-08-23 19:26:00 -04:00
Adam Jackson
0fb67e3f76 Bump to 0.1.1 for Xv changes. 2006-04-08 01:52:08 +00:00
Aaron Plattner
3288506bb3 Add a DrawablePtr argument to the XV functions to pave the way for
redirected video.
2006-04-07 23:17:04 +00:00
Adam Jackson
0ae947b760 Unlibcwrap. Bump server version requirement. Bump to 0.1.0. 2006-04-07 21:45:55 +00:00
Kevin E Martin
f00943051a Update package version for X11R7 release. 2005-12-21 02:30:04 +00:00
Adam Jackson
58443583fb Stub COPYING files 2005-12-19 16:25:56 +00:00
Alan Coopersmith
0f0ae40ac9 Typo fixes, mailing list & url updates, and other changes to prepare for
X11R6.9 & 7.0 releases.
2005-12-19 09:07:50 +00:00
Kevin E Martin
c3917f36a9 Update package version number for final X11R7 release candidate. 2005-12-15 00:24:21 +00:00
Kevin E Martin
6a46c3a4db Change *man_SOURCES ==> *man_PRE to fix autotools warnings. 2005-12-06 22:48:40 +00:00
Kevin E Martin
7b16fc59d1 Update package version number for X11R7 RC3 release. 2005-12-03 05:49:36 +00:00
Kevin E Martin
db38e33e96 Remove extraneous AC_MSG_RESULT. 2005-12-02 02:16:11 +00:00
Adam Jackson
e09d3fa5a2 Only build dlloader modules by default. 2005-11-29 23:30:06 +00:00
Alan Coopersmith
b960665c1a Change *mandir targets to use new *_MAN_DIR variables set by xorg-macros.m4
update to fix bug #5167 (Linux prefers *.1x man pages in man1 subdir)
2005-11-28 22:04:14 +00:00
Eric Anholt
9e9e26cbfc Add .cvsignores for drivers. 2005-11-21 10:49:21 +00:00
Kevin E Martin
f95d090f26 Update package version number for X11R7 RC2 release. 2005-11-09 21:15:22 +00:00
Kevin E Martin
f1b782df5d Update pkgcheck depedencies to work with separate build roots. 2005-11-01 15:08:56 +00:00
Kevin E Martin
bec1ce8dea Update package version number for RC1 release. 2005-10-19 02:48:06 +00:00
Alan Coopersmith
d66e3714e8 Use @DRIVER_MAN_SUFFIX@ instead of $(DRIVER_MAN_SUFFIX) in macro
substitutions to work better with BSD make
2005-10-18 00:01:55 +00:00
Adam Jackson
ff178dcf9a More 1.7 braindamage: define EXTRA_DIST in terms of @DRIVER_NAME@ instead
of indirectly
2005-10-17 22:57:37 +00:00
Alan Coopersmith
c61d66bc02 Use sed & cpp to substitute variables in driver man pages 2005-10-17 00:09:08 +00:00
Adam Jackson
083adf6032 Bug #4328: Add build skeleton for the poor forgotten v4l driver. 2005-09-21 00:30:22 +00:00
Adam Jackson
1f05cde42c Prep for modular builds by adding guarded #include "config.h" everywhere. 2005-07-11 02:30:06 +00:00
Adam Jackson
1fa8d2f701 Bug #3626: _X_EXPORT tags for video and input drivers. 2005-06-25 21:16:59 +00:00
Daniel Stone
7123df70e0 Fix includes right throughout the Xserver tree:
change "foo.h" to <X11/foo.h> for core headers, e.g. X.h, Xpoll.h;
change "foo.h", "extensions/foo.h" and "X11/foo.h" to
    <X11/extensions/foo.h> for extension headers, e.g. Xv.h;
change "foo.[ch]" to <X11/Xtrans/foo.[ch]> for Xtrans files.
2005-04-20 12:25:32 +00:00
Eric Anholt
b299863dd2 DRI XFree86-4_3_99_12-merge import 2004-06-16 09:24:09 +00:00
Egbert Eich
1f8ceb0991 Merging XORG-CURRENT into trunk 2004-04-23 19:52:24 +00:00
Egbert Eich
fb4a148b6e Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004 2004-03-14 08:33:41 +00:00
Egbert Eich
abaaf69833 Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004 2004-03-03 12:12:28 +00:00
Egbert Eich
bd8c0455c2 readding XFree86's cvs IDs 2004-02-26 13:35:55 +00:00
Egbert Eich
9c34b95344 Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004 2004-02-26 09:23:28 +00:00
Egbert Eich
871d6d6aef Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004 2004-01-29 08:08:41 +00:00
Kaleb Keithley
e8bf6a26c8 XFree86 4.3.99.902 (RC 2) 2003-12-19 20:55:19 +00:00
Kaleb Keithley
0fc7fdb71a XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks 2003-11-25 19:28:43 +00:00
Kaleb Keithley
1c98a4f36f XFree86 4.3.0.1 2003-11-14 16:48:55 +00:00
20 changed files with 3796 additions and 916 deletions

78
.gitignore vendored Normal file
View File

@@ -0,0 +1,78 @@
#
# X.Org module default exclusion patterns
# The next section if for module specific patterns
#
# Do not edit the following section
# GNU Build System (Autotools)
aclocal.m4
autom4te.cache/
autoscan.log
ChangeLog
compile
config.guess
config.h
config.h.in
config.log
config-ml.in
config.py
config.status
config.status.lineno
config.sub
configure
configure.scan
depcomp
.deps/
INSTALL
install-sh
.libs/
libtool
libtool.m4
ltmain.sh
lt~obsolete.m4
ltoptions.m4
ltsugar.m4
ltversion.m4
Makefile
Makefile.in
mdate-sh
missing
mkinstalldirs
*.pc
py-compile
stamp-h?
symlink-tree
texinfo.tex
ylwrap
# Do not edit the following section
# Edit Compile Debug Document Distribute
*~
*.[0-9]
*.[0-9]x
*.bak
*.bin
core
*.dll
*.exe
*-ISO*.bdf
*-JIS*.bdf
*-KOI8*.bdf
*.kld
*.ko
*.ko.cmd
*.lai
*.l[oa]
*.[oa]
*.obj
*.patch
*.so
*.pcf.gz
*.pdb
*.tar.bz2
*.tar.gz
#
# Add & Override patterns for xf86-video-v4l
#
# Edit the following section as needed
# For example, !report.pc overrides *.pc. See 'man gitignore'
#

6
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,6 @@
variables:
FDO_UPSTREAM_REPO: 'xorg/driver/xf86-video-v4l'
FREEBSD_SKIP: 'true' # only works on Linux
include:
- local: '.gitlab-ci/common/xorg-driver.yml'

View File

@@ -0,0 +1,20 @@
common CI stuff - supposed to be synced across all drivers
moving this to a dedicated CI component is left for a later exercise.
Some scripts can also be used locally, eg. in a VM:
Prepare the image:
.gitlab-ci/common/debian/image-install.sh
.gitlab-ci/common/freebsd/image-install.sh
Build the xserver + driver:
.gitlab-ci/common/build-driver.sh debian <xserver git ref>
.gitlab-ci/common/build-driver.sh freebsd <xserver git ref>
Build just the xserver:
.gitlab-ci/common/build-xserver.sh debian <xserver git ref>
.gitlab-ci/common/build-xserver.sh freebsd <xserver git ref>

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
set -e
PLATFORM="$1"
XSERVER_REF="$2"
if [ ! "$PLATFORM" ]; then
echo "missing PLATFORM" >&2
exit 1
fi
if [ ! "$XSERVER_REF" ]; then
echo "missing XSERVER_REF" >&2
exit 1
fi
.gitlab-ci/common/build-xserver.sh "$PLATFORM" "$XSERVER_REF"
MACH=`gcc -dumpmachine`
echo "Building on machine $MACH"
case "$PLATFORM" in
freebsd)
export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/libdata/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/libdata/pkgconfig"
export ACLOCAL_PATH="/usr/share/aclocal:/usr/local/share/aclocal"
export CFLAGS="$CFLAGS -I/usr/local/include"
export UDEV_CFLAGS=" "
export UDEV_LIBS=" "
;;
debian)
export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig"
;;
*)
echo "unknown platform $PLATFORM" >&2
;;
esac
if [ -f autogen.sh ]; then
(
echo "building driver via autotools"
rm -Rf _builddir
mkdir -p _builddir
cd _builddir
../autogen.sh --disable-silent-rules
make
make check
make distcheck
)
elif [ -f meson.build ]; then
(
echo "building driver via meson"
meson setup _build
cd _build
meson compile
meson install
)
else
echo "failed detecting build system"
exit 1
fi

View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
set -e
set -x
PLATFORM="$1"
XSERVER_REF="$2"
if [ ! "$XSERVER_REF" ]; then
echo "missing XSERVER_REF variable" >&2
exit 1
fi
XSERVER_CLONE=/tmp/xserver
XSERVER_BUILD=$XSERVER_CLONE/_builddir
XSERVER_REPO=https://gitlab.freedesktop.org/xorg/xserver.git
MACH=`gcc -dumpmachine`
export PKG_CONFIG_PATH="/usr/lib/$MACH/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="/usr/local/lib/$MACH/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:$PKG_CONFIG_PATH"
echo "cloning xserver"
rm -Rf $XSERVER_CLONE
git clone --depth=1 -b $XSERVER_REF $XSERVER_REPO $XSERVER_CLONE
echo "checking platform: $PLATFORM"
case "$PLATFORM" in
freebsd)
echo "Building on FreeBSD"
XSERVER_OS_AUTOCONF_FLAGS="--without-dtrace"
XSERVER_MESON_DISABLE="glx udev udev_kms"
;;
debian)
echo "Building on Debian"
;;
*)
echo "unknown platform $PLATFORM" >&2
exit 1
;;
esac
if [ -f $XSERVER_CLONE/meson.build ]; then
(
echo "Building Xserver via meson"
for opt in $XSERVER_MESON_DISABLE ; do
if grep "'$opt'" $XSERVER_CLONE/meson_options.txt ; then
echo "disable $opt"
XSERVER_MESON_FLAGS="$XSERVER_MESON_FLAGS -D$opt=false"
else
echo "no option $opt"
fi
done
mkdir -p $XSERVER_BUILD
cd $XSERVER_BUILD
meson setup --prefix=/usr $XSERVER_MESON_FLAGS
meson compile
meson install
)
else
(
echo "Building Xserver via autotools"
cd $XSERVER_CLONE
# Workaround glvnd having reset the version in gl.pc from what Mesa used
# similar to xserver commit e6ef2b12404dfec7f23592a3524d2a63d9d25802
sed -i -e 's/gl >= [79].[12].0/gl >= 1.2/' configure.ac
./autogen.sh --prefix=/usr $XSERVER_AUTOCONF_FLAGS $XSERVER_OS_AUTOCONF_FLAGS
make -j`nproc`
make -j`nproc` install
)
fi

View File

@@ -0,0 +1,88 @@
#!/bin/bash
set -e
set -o xtrace
echo 'deb-src https://deb.debian.org/debian bullseye main' >>/etc/apt/sources.list.d/deb-src.list
echo 'deb-src https://deb.debian.org/debian bullseye-updates main' >>/etc/apt/sources.list.d/deb-src.list
apt-get update
apt-get autoremove -y --purge
apt-get install -y --no-remove \
autoconf \
automake \
build-essential \
libtool \
pkg-config \
ca-certificates \
git \
debian-archive-keyring \
python3 python3-setuptools libxshmfence-dev \
clang \
libxvmc-dev libxcb1-dev libx11-xcb-dev libxcb-dri2-0-dev libxcb-util-dev \
libxfixes-dev libxcb-xfixes0-dev libxrender-dev libxdamage-dev libxrandr-dev \
libxcursor-dev libxss-dev libxinerama-dev libxtst-dev libpng-dev libssl-dev \
libxcb-dri3-dev libxxf86vm-dev libxfont-dev libxkbfile-dev libdrm-dev \
libgbm-dev libgl1-mesa-dev libpciaccess-dev libpixman-1-dev libudev-dev \
libgcrypt-dev libepoxy-dev libevdev-dev libmtdev-dev libinput-dev \
mesa-common-dev libspice-protocol-dev libspice-server-dev \
meson \
nettle-dev \
pkg-config \
valgrind \
x11-xkb-utils xfonts-utils xutils-dev x11proto-dev
build_autoconf() {
local subdir="$1"
shift
(
cd $subdir
./autogen.sh "$@"
make -j${FDO_CI_CONCURRENT:-4}
make -j${FDO_CI_CONCURRENT:-4} install
)
}
build_meson() {
local subdir="$1"
shift
(
cd $subdir
meson _build -Dprefix=/usr "$@"
ninja -C _build -j${FDO_CI_CONCURRENT:-4} install
)
}
do_clone() {
git clone "$1" --depth 1 --branch="$2"
}
mkdir -p /tmp/build-deps
cd /tmp/build-deps
# xserver 1.18 and older branches require libXfont 1.5 instead of 2.0
echo "Installing libXfont 1.5"
do_clone https://gitlab.freedesktop.org/xorg/lib/libXfont.git libXfont-1.5-branch
build_autoconf libXfont
echo "Installing font-util"
do_clone https://gitlab.freedesktop.org/xorg/font/util.git font-util-1.4.1
build_autoconf util --prefix=/usr
echo "Installing libxcvt"
do_clone https://gitlab.freedesktop.org/xorg/lib/libxcvt.git libxcvt-0.1.0
build_meson libxcvt
# xserver requires xorgproto >= 2024.1 for XWAYLAND
echo "Installing xorgproto"
do_clone https://gitlab.freedesktop.org/xorg/proto/xorgproto.git xorgproto-2024.1
build_autoconf xorgproto
# Xwayland requires drm 2.4.116 for drmSyncobjEventfd
# xf86-video-freedreno and xf86-video-omap need extra features
echo "Installing libdrm"
do_clone https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.116
build_meson drm -Dfreedreno=enabled -Dnouveau=enabled -Domap=enabled
rm -Rf /tmp/build-deps

View File

@@ -0,0 +1,8 @@
# using the latest branch
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}

View File

@@ -0,0 +1,59 @@
#!/usr/bin/env bash
set -e
# note: really wanna install to /usr/local, since that's explicitly searched first,
# so we always catch the locally installed before any system/ports provided one
# otherwise we might run into trouble like trying to use outdated xorgproto
build_autoconf() {
local subdir="$1"
shift
(
cd $subdir
./autogen.sh --prefix=/usr/local "$@"
make -j${FDO_CI_CONCURRENT:-4}
make -j${FDO_CI_CONCURRENT:-4} install
)
}
build_meson() {
local subdir="$1"
shift
(
cd $subdir
meson _build -Dprefix=/usr/local "$@"
ninja -C _build -j${FDO_CI_CONCURRENT:-4} install
)
}
do_clone() {
git clone "$1" --depth 1 --branch="$2"
}
cp .gitlab-ci/common/freebsd/FreeBSD.conf /etc/pkg
pkg upgrade -f -y
pkg install -y \
git gcc pkgconf autoconf automake libtool xorg-macros xorgproto meson \
ninja pixman xtrans libXau libXdmcp libXfont libXfont2 libxkbfile libxcvt \
libpciaccess font-util libepoll-shim libdrm mesa-libs libdrm libglu mesa-dri \
libepoxy nettle xkbcomp libXvMC xcb-util valgrind libXcursor libXScrnSaver \
libXinerama libXtst evdev-proto libevdev libmtdev libinput spice-protocol \
libspice-server
[ -f /bin/bash ] || ln -sf /usr/local/bin/bash /bin/bash
# Xwayland requires drm 2.4.116 for drmSyncobjEventfd
# xf86-video-freedreno and xf86-video-omap need extra features
echo "Installing libdrm"
do_clone https://gitlab.freedesktop.org/mesa/drm libdrm-2.4.116
(
cd drm
git config user.email "buildbot@freebsd"
git config user.name "FreeBSD build bot"
git am ../.gitlab-ci/common/freebsd/libdrm-2.4.116.patch
)
build_meson drm -Dfreedreno=enabled -Dnouveau=enabled -Domap=enabled
echo "=== post-install script END"

View File

@@ -0,0 +1,109 @@
From a87432dbb281ddf1c50a5e78091d38f0dac79416 Mon Sep 17 00:00:00 2001
From: "Enrico Weigelt, metux IT consult" <info@metux.net>
Date: Fri, 7 Jun 2024 15:18:47 +0200
Subject: [PATCH 1/2] fix FTBS on FreeBSD (or non-Linux in general)
Several drivers still including <linux/stddef.h>, but not using anything
from it, thus breaking build on non-Linux platforms (eg. FreeBSD).
Since not needed at all, just stop including it.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
---
etnaviv/etnaviv_device.c | 1 -
exynos/exynos_drm.c | 1 -
exynos/exynos_fimg2d.c | 1 -
omap/omap_drm.c | 1 -
tests/exynos/exynos_fimg2d_test.c | 1 -
5 files changed, 5 deletions(-)
diff --git a/etnaviv/etnaviv_device.c b/etnaviv/etnaviv_device.c
index 699df256..a63bd15d 100644
--- a/etnaviv/etnaviv_device.c
+++ b/etnaviv/etnaviv_device.c
@@ -25,7 +25,6 @@
*/
#include <stdlib.h>
-#include <linux/stddef.h>
#include <linux/types.h>
#include <errno.h>
#include <sys/mman.h>
diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c
index 3e322a17..fb4cd8de 100644
--- a/exynos/exynos_drm.c
+++ b/exynos/exynos_drm.c
@@ -31,7 +31,6 @@
#include <unistd.h>
#include <sys/mman.h>
-#include <linux/stddef.h>
#include <xf86drm.h>
diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c
index ac6fa687..f0aee962 100644
--- a/exynos/exynos_fimg2d.c
+++ b/exynos/exynos_fimg2d.c
@@ -30,7 +30,6 @@
#include <assert.h>
#include <sys/mman.h>
-#include <linux/stddef.h>
#include <xf86drm.h>
diff --git a/omap/omap_drm.c b/omap/omap_drm.c
index aa273660..42d35ef7 100644
--- a/omap/omap_drm.c
+++ b/omap/omap_drm.c
@@ -27,7 +27,6 @@
*/
#include <stdlib.h>
-#include <linux/stddef.h>
#include <linux/types.h>
#include <errno.h>
#include <sys/mman.h>
diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c
index d85e2f6b..b1baa503 100644
--- a/tests/exynos/exynos_fimg2d_test.c
+++ b/tests/exynos/exynos_fimg2d_test.c
@@ -31,7 +31,6 @@
#include <unistd.h>
#include <sys/mman.h>
-#include <linux/stddef.h>
#include <xf86drm.h>
#include <xf86drmMode.h>
--
2.39.2
From 79123db12c6c5f42747fae02068b482055e8c376 Mon Sep 17 00:00:00 2001
From: "Enrico Weigelt, metux IT consult" <info@metux.net>
Date: Fri, 7 Jun 2024 15:43:13 +0200
Subject: [PATCH 2/2] omap: fix FTBS on FreeBSD and drop unneeded include
No need to explicitly include <linux/types.h>, since drm.h already does that,
but conditionally only Linux only.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
---
omap/omap_drm.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/omap/omap_drm.c b/omap/omap_drm.c
index 42d35ef7..93d2207f 100644
--- a/omap/omap_drm.c
+++ b/omap/omap_drm.c
@@ -27,7 +27,6 @@
*/
#include <stdlib.h>
-#include <linux/types.h>
#include <errno.h>
#include <sys/mman.h>
#include <fcntl.h>
--
2.39.2

View File

@@ -0,0 +1,219 @@
# version 0.1.22
variables:
DEBIAN_VERSION: 'bookworm-slim'
DEBIAN_TAG: "2025-03-07"
DEBIAN_EXEC: 'bash .gitlab-ci/common/debian/image-install.sh'
DEBIAN_SKIP: "false" # to enable, it has to be litterally "true"
FREEBSD_TAG: '2025-03-07'
FREEBSD_VERSION: '14.2'
# image is yet too small for that - need a more complicated way :(
# FREEBSD_EXEC: "bash .gitlab-ci/common/freebsd/image-install.sh"
FREEBSD_SKIP: "false" # to enable, it has to be litterally "true"
.templates_sha: &template_sha ef5e4669b7500834a17ffe9277e15fbb6d977fff # see https://docs.gitlab.com/ee/ci/yaml/#includefile
include:
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/debian.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/freebsd.yml'
- project: 'freedesktop/ci-templates'
ref: *template_sha
file: '/templates/ci-fairy.yml'
- template: Security/SAST.gitlab-ci.yml
stages:
- images
- build
- test
# standard commits quality check
check-commits:
extends:
- .fdo.ci-fairy
stage: test
script:
- ci-fairy check-commits --junit-xml=results.xml
except:
- master@$FDO_UPSTREAM_REPO
variables:
GIT_DEPTH: 100
artifacts:
reports:
junit: results.xml
allow_failure: true
needs:
# standard merge request quality checks
check-merge-request:
extends:
- .fdo.ci-fairy
stage: test
script:
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=results.xml
artifacts:
when: on_failure
reports:
junit: results.xml
allow_failure: true
needs:
# create debian build image
image@debian@amd64:
extends:
- .xorg.distro@debian@amd64
- .fdo.container-build@debian
stage: images
variables:
GIT_STRATEGY: none
rules:
- if: $DEBIAN_SKIP != "true"
when: always
needs:
image@debian@i386:
extends:
- .xorg.distro@debian@i386
- .fdo.container-build@debian
stage: images
variables:
GIT_STRATEGY: none
rules:
- if: $DEBIAN_SKIP != "true"
when: always
needs:
# inherit this to define FDO_DISTRIBUTION_* variables for Debian
.xorg.distro@debian@amd64:
variables:
FDO_DISTRIBUTION_VERSION: "$DEBIAN_VERSION"
FDO_DISTRIBUTION_EXEC: "$DEBIAN_EXEC"
FDO_DISTRIBUTION_TAG: "amd64-$DEBIAN_TAG"
FDO_DISTRIBUTION_PLATFORM: "amd64"
FDO_BASE_IMAGE: "amd64/debian:$DEBIAN_VERSION"
.xorg.distro@debian@i386:
variables:
FDO_DISTRIBUTION_VERSION: "$DEBIAN_VERSION"
FDO_DISTRIBUTION_EXEC: "$DEBIAN_EXEC"
FDO_DISTRIBUTION_TAG: "i386-$DEBIAN_TAG"
FDO_DISTRIBUTION_PLATFORM: "i386"
FDO_BASE_IMAGE: "i386/debian:$DEBIAN_VERSION"
# overwrite this one if another matrix is needed
.xorg.driver_matrix@debian:
parallel:
matrix:
- CC: [ "gcc", "clang" ]
XSERVER_REF: [
# these break on Debian
# "xorg-server-1.18.4",
# "xorg-server-1.19.7",
# "xorg-server-1.20.14",
# "xorg-server-21.0.99.1",
"xorg-server-21.1.16",
"master"
]
# default build with meson on Debian
.xorg.driver_common@debian:
needs:
- image@debian@i386
- image@debian@amd64
extends:
- .fdo.distribution-image@debian
stage: build
script:
- .gitlab-ci/common/build-driver.sh "debian" "$XSERVER_REF"
variables:
CFLAGS: "-pipe -g -O2"
rules:
- if: $DEBIAN_SKIP != "true"
when: always
# overwrite this when you need some special Debian build
build@debian@amd64:
extends:
- .xorg.driver_matrix@debian
- .xorg.driver_common@debian
- .xorg.distro@debian@amd64
build@debian@i386:
extends:
- .xorg.driver_matrix@debian
- .xorg.driver_common@debian
- .xorg.distro@debian@i386
# inherit this to define FDO_DISTRIBUTION_* variables for FreeBSD
.xorg.distro@freebsd:
variables:
FDO_DISTRIBUTION_VERSION: "$FREEBSD_VERSION"
FDO_DISTRIBUTION_EXEC: "$FREEBSD_EXEC"
FDO_DISTRIBUTION_TAG: "$FREEBSD_TAG"
# create base image for FreeBSD
image@freebsd:
extends:
- .xorg.distro@freebsd
- .fdo.qemu-build@freebsd@x86_64
stage: images
variables:
GIT_STRATEGY: none
rules:
- if: $FREEBSD_SKIP != "true"
when: always
# inherit this to get the default build matrix
.xorg.driver_matrix@freebsd:
parallel:
matrix:
- CC: [ "gcc", "clang" ]
XSERVER_REF: [
# "xorg-server-1.18.4", # this breaks due name clash on "bool"
# "xorg-server-1.19.7",
# "xorg-server-1.20.14", # breaks meson ... see: 331850ce6f0c48a1cfc489da2a27ca0220997a2f -- server-1.20-branch
"xorg-server-21.0.99.1",
"xorg-server-21.1.16",
"master"
]
# common build for driver on FreeBSD. meson and autoconf are both handled by this
.xorg.driver_common@freebsd:
needs:
- image@freebsd
stage: build
extends:
- .fdo.distribution-image@freebsd
- .xorg.distro@freebsd
script:
# FIXME: increasing image and running image-install.sh should be done
# at container image build time, but would have to replicate too much
# of the cbuild script here. better wait until CI folks have increased
# the image size or provide hooks for that
- xz -d -T0 /app/image.raw.xz
- rm -f /app/image.raw.xz
- truncate -s +5G /app/image.raw
- /app/vmctl start
- set +e
- /app/vmctl exec "service growfs onestart"
- scp -r $PWD "vm:"
- /app/vmctl exec "cd $CI_PROJECT_NAME && .gitlab-ci/common/freebsd/image-install.sh"
- /app/vmctl exec "cd $CI_PROJECT_NAME && .gitlab-ci/common/build-driver.sh freebsd $XSERVER_REF" && touch .success
# copy any test results from the VM to our container so we can
# save them as artifacts
- scp -r vm:$CI_PROJECT_NAME/test-results.xml . || true # this is allowed to fail
- /app/vmctl stop
- set -e
- test -e .success || exit 1
rules:
- if: $FREEBSD_SKIP != "true"
when: always
# overwrite this if you need some special FreeBSD build
build@freebsd:
extends:
- .xorg.driver_matrix@freebsd
- .xorg.driver_common@freebsd

12
COPYING Normal file
View File

@@ -0,0 +1,12 @@
This is a stub file. This package has not yet had its complete licensing
information compiled. Please see the individual source files for details on
your rights to use and modify this software.
Please submit updated COPYING files to the Xorg bugzilla:
https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
All licensing questions regarding this software should be directed at the
Xorg mailing list:
http://lists.freedesktop.org/mailman/listinfo/xorg

32
Makefile.am Normal file
View File

@@ -0,0 +1,32 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SUBDIRS = src man
MAINTAINERCLEANFILES = ChangeLog INSTALL
.PHONY: ChangeLog INSTALL
INSTALL:
$(INSTALL_CMD)
ChangeLog:
$(CHANGELOG_CMD)
dist-hook: ChangeLog INSTALL

15
autogen.sh Executable file
View File

@@ -0,0 +1,15 @@
#! /bin/sh
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir
autoreconf -v --install || exit 1
cd $ORIGDIR || exit $?
git config --local --get format.subjectPrefix >/dev/null 2>&1 ||
git config --local format.subjectPrefix "PATCH xf86-video-v4l"
$srcdir/configure --enable-maintainer-mode "$@"

77
configure.ac Normal file
View File

@@ -0,0 +1,77 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Process this file with autoconf to produce a configure script
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-v4l],
[0.3.0],
[https://gitlab.freedesktop.org/xorg/driver/xf86-video-v4l/issues],
[xf86-video-v4l])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR(.)
# Initialize Automake
AM_INIT_AUTOMAKE([foreign dist-xz])
AM_MAINTAINER_MODE
# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
m4_ifndef([XORG_MACROS_VERSION],
[m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
XORG_MACROS_VERSION(1.8)
XORG_DEFAULT_OPTIONS
# Initialize libtool
LT_INIT([disable-static])
AH_TOP([#include "xorg-server.h"])
# Define a configure option for an alternate module directory
AC_ARG_WITH(xorg-module-dir,
AS_HELP_STRING([--with-xorg-module-dir=DIR],
[Default xorg module directory [[default=$libdir/xorg/modules]]]),
[moduledir="$withval"],
[moduledir="$libdir/xorg/modules"])
# Store the list of server defined optional extensions in REQUIRED_MODULES
XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
XORG_DRIVER_CHECK_EXT(XV, videoproto)
# Obtain compiler/linker options for the driver dependencies
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto $REQUIRED_MODULES])
# Checks for library functions
# We don't use strlcat or strlcpy, but check to quiet a -Wredundant-decls warning
# from xorg/os.h which will otherwise redefine it.
AC_CHECK_FUNCS([strlcat strlcpy])
AC_SUBST([moduledir])
DRIVER_NAME=v4l
AC_SUBST([DRIVER_NAME])
AC_CONFIG_FILES([
Makefile
src/Makefile
man/Makefile
])
AC_OUTPUT

41
man/Makefile.am Normal file
View File

@@ -0,0 +1,41 @@
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
drivermandir = $(DRIVER_MAN_DIR)
driverman_PRE = @DRIVER_NAME@.man
driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA)
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
.man.$(DRIVER_MAN_SUFFIX):
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@

View File

@@ -1,4 +1,4 @@
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.man,v 1.3 2001/05/29 22:24:06 dawes Exp $
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.man,v 1.2 2001/01/27 18:20:55 dawes Exp $
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
.TH V4L __drivermansuffix__ __vendorversion__
@@ -13,13 +13,13 @@ v4l \- video4linux driver
.fi
.SH DESCRIPTION
.B v4l
is an XFree86 driver for video4linux cards. It provides a Xvideo
extention port for video overlay. Just add the driver to the module
list within the module section of your XF86Config file if you want
is an __xservername__ driver for video4linux cards. It provides a Xvideo
extension port for video overlay. Just add the driver to the module
list within the module section of your __xconfigfile__ file if you want
to use it. There are no config options.
.P
Note that the the extmod module is also required for the Xvideo
support (and lots of other extentions too).
Note that the extmod module is also required for the Xvideo
support (and lots of other extensions too).
.SH SUPPORTED HARDWARE
The
.B v4l
@@ -30,10 +30,10 @@ overlay.
bt848/bt878-based TV cards are the most popular hardware these
days.
.SH CONFIGURATION DETAILS
Please refer to XF86Config(__filemansuffix__) for general configuration
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
details. This section only covers configuration details specific to this
driver.
.SH "SEE ALSO"
XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(__miscmansuffix__)
__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__)
.SH AUTHORS
Authors include: Gerd Knorr <kraxel@bytesex.org>

33
src/Makefile.am Normal file
View File

@@ -0,0 +1,33 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = $(BASE_CFLAGS) $(XORG_CFLAGS)
v4l_drv_la_LTLIBRARIES = v4l_drv.la
v4l_drv_la_LDFLAGS = -module -avoid-version
v4l_drv_ladir = @moduledir@/drivers
v4l_drv_la_SOURCES = \
v4l.c \
videodev2.h

1583
src/v4l.c

File diff suppressed because it is too large Load Diff

View File

@@ -1,255 +0,0 @@
#ifndef __LINUX_VIDEODEV_H
#define __LINUX_VIDEODEV_H
/* Linux V4L API, Version 1
* videodev.h from v4l driver in Linux 2.2.3
*
* Used here with the explicit permission of the original author, Alan Cox.
* <alan@lxorguk.ukuu.org.uk>
*/
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/v4l/videodev.h,v 1.8 2001/03/03 22:46:31 tsi Exp $ */
#include "Xmd.h"
#define VID_TYPE_CAPTURE 1 /* Can capture */
#define VID_TYPE_TUNER 2 /* Can tune */
#define VID_TYPE_TELETEXT 4 /* Does teletext */
#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */
#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */
#define VID_TYPE_CLIPPING 32 /* Can clip */
#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */
#define VID_TYPE_SCALES 128 /* Scalable */
#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
struct video_capability
{
char name[32];
int type;
int channels; /* Num channels */
int audios; /* Num audio devices */
int maxwidth; /* Supported width */
int maxheight; /* And height */
int minwidth; /* Supported width */
int minheight; /* And height */
};
struct video_channel
{
int channel;
char name[32];
int tuners;
CARD32 flags;
#define VIDEO_VC_TUNER 1 /* Channel has a tuner */
#define VIDEO_VC_AUDIO 2 /* Channel has audio */
CARD16 type;
#define VIDEO_TYPE_TV 1
#define VIDEO_TYPE_CAMERA 2
CARD16 norm; /* Norm set by channel */
};
struct video_tuner
{
int tuner;
char name[32];
unsigned long rangelow, rangehigh; /* Tuner range */
CARD32 flags;
#define VIDEO_TUNER_PAL 1
#define VIDEO_TUNER_NTSC 2
#define VIDEO_TUNER_SECAM 4
#define VIDEO_TUNER_LOW 8 /* Uses KHz not MHz */
#define VIDEO_TUNER_NORM 16 /* Tuner can set norm */
#define VIDEO_TUNER_STEREO_ON 128 /* Tuner is seeing stereo */
CARD16 mode; /* PAL/NTSC/SECAM/OTHER */
#define VIDEO_MODE_PAL 0
#define VIDEO_MODE_NTSC 1
#define VIDEO_MODE_SECAM 2
#define VIDEO_MODE_AUTO 3
CARD16 signal; /* Signal strength 16bit scale */
};
struct video_picture
{
CARD16 brightness;
CARD16 hue;
CARD16 colour;
CARD16 contrast;
CARD16 whiteness; /* Black and white only */
CARD16 depth; /* Capture depth */
CARD16 palette; /* Palette in use */
#define VIDEO_PALETTE_GREY 1 /* Linear greyscale */
#define VIDEO_PALETTE_HI240 2 /* High 240 cube (BT848) */
#define VIDEO_PALETTE_RGB565 3 /* 565 16 bit RGB */
#define VIDEO_PALETTE_RGB24 4 /* 24bit RGB */
#define VIDEO_PALETTE_RGB32 5 /* 32bit RGB */
#define VIDEO_PALETTE_RGB555 6 /* 555 15bit RGB */
#define VIDEO_PALETTE_YUV422 7 /* YUV422 capture */
#define VIDEO_PALETTE_YUYV 8
#define VIDEO_PALETTE_UYVY 9 /* The great thing about standards is ... */
#define VIDEO_PALETTE_YUV420 10
#define VIDEO_PALETTE_YUV411 11 /* YUV411 capture */
#define VIDEO_PALETTE_RAW 12 /* RAW capture (BT848) */
#define VIDEO_PALETTE_YUV422P 13 /* YUV 4:2:2 Planar */
#define VIDEO_PALETTE_YUV411P 14 /* YUV 4:1:1 Planar */
#define VIDEO_PALETTE_YUV420P 15 /* YUV 4:2:0 Planar */
#define VIDEO_PALETTE_YUV410P 16 /* YUV 4:1:0 Planar */
#define VIDEO_PALETTE_PLANAR 13 /* start of planar entries */
#define VIDEO_PALETTE_COMPONENT 7 /* start of component entries */
};
struct video_audio
{
int audio; /* Audio channel */
CARD16 volume; /* If settable */
CARD16 bass, treble;
CARD32 flags;
#define VIDEO_AUDIO_MUTE 1
#define VIDEO_AUDIO_MUTABLE 2
#define VIDEO_AUDIO_VOLUME 4
#define VIDEO_AUDIO_BASS 8
#define VIDEO_AUDIO_TREBLE 16
char name[16];
#define VIDEO_SOUND_MONO 1
#define VIDEO_SOUND_STEREO 2
#define VIDEO_SOUND_LANG1 4
#define VIDEO_SOUND_LANG2 8
CARD16 mode;
CARD16 balance; /* Stereo balance */
CARD16 step; /* Step actual volume uses */
};
struct video_clip
{
INT32 x,y;
INT32 width, height;
struct video_clip *next; /* For user use/driver use only */
};
struct video_window
{
CARD32 x,y; /* Position of window */
CARD32 width,height; /* Its size */
CARD32 chromakey;
CARD32 flags;
struct video_clip *clips; /* Set only */
int clipcount;
#define VIDEO_WINDOW_INTERLACE 1
#define VIDEO_CLIP_BITMAP -1
/* bitmap is 1024x625, a '1' bit represents a clipped pixel */
#define VIDEO_CLIPMAP_SIZE (128 * 625)
};
struct video_capture
{
CARD32 x,y; /* Offsets into image */
CARD32 width, height; /* Area to capture */
CARD16 decimation; /* Decimation divder */
CARD16 flags; /* Flags for capture */
#define VIDEO_CAPTURE_ODD 0 /* Temporal */
#define VIDEO_CAPTURE_EVEN 1
};
struct video_buffer
{
void *base;
int height,width;
int depth;
int bytesperline;
};
struct video_mmap
{
unsigned int frame; /* Frame (0 - n) for double buffer */
int height,width;
unsigned int format; /* should be VIDEO_PALETTE_* */
};
struct video_key
{
CARD8 key[8];
CARD32 flags;
};
#define VIDEO_MAX_FRAME 32
struct video_mbuf
{
int size; /* Total memory to map */
int frames; /* Frames */
int offsets[VIDEO_MAX_FRAME];
};
#define VIDEO_NO_UNIT (-1)
struct video_unit
{
int video; /* Video minor */
int vbi; /* VBI minor */
int radio; /* Radio minor */
int audio; /* Audio minor */
int teletext; /* Teletext minor */
};
#define VIDIOCGCAP _IOR('v',1,struct video_capability) /* Get capabilities */
#define VIDIOCGCHAN _IOWR('v',2,struct video_channel) /* Get channel info (sources) */
#define VIDIOCSCHAN _IOW('v',3,struct video_channel) /* Set channel */
#define VIDIOCGTUNER _IOWR('v',4,struct video_tuner) /* Get tuner abilities */
#define VIDIOCSTUNER _IOW('v',5,struct video_tuner) /* Tune the tuner for the current channel */
#define VIDIOCGPICT _IOR('v',6,struct video_picture) /* Get picture properties */
#define VIDIOCSPICT _IOW('v',7,struct video_picture) /* Set picture properties */
#define VIDIOCCAPTURE _IOW('v',8,int) /* Start, end capture */
#define VIDIOCGWIN _IOR('v',9, struct video_window) /* Set the video overlay window */
#define VIDIOCSWIN _IOW('v',10, struct video_window) /* Set the video overlay window - passes clip list for hardware smarts , chromakey etc */
#define VIDIOCGFBUF _IOR('v',11, struct video_buffer) /* Get frame buffer */
#define VIDIOCSFBUF _IOW('v',12, struct video_buffer) /* Set frame buffer - root only */
#define VIDIOCKEY _IOR('v',13, struct video_key) /* Video key event - to dev 255 is to all - cuts capture on all DMA windows with this key (0xFFFFFFFF == all) */
#define VIDIOCGFREQ _IOR('v',14, unsigned long) /* Set tuner */
#define VIDIOCSFREQ _IOW('v',15, unsigned long) /* Set tuner */
#define VIDIOCGAUDIO _IOR('v',16, struct video_audio) /* Get audio info */
#define VIDIOCSAUDIO _IOW('v',17, struct video_audio) /* Audio source, mute etc */
#define VIDIOCSYNC _IOW('v',18, int) /* Sync with mmap grabbing */
#define VIDIOCMCAPTURE _IOW('v',19, struct video_mmap) /* Grab frames */
#define VIDIOCGMBUF _IOR('v', 20, struct video_mbuf) /* Memory map buffer info */
#define VIDIOCGUNIT _IOR('v', 21, struct video_unit) /* Get attached units */
#define VIDIOCGCAPTURE _IOR('v',22, struct video_capture) /* Get frame buffer */
#define VIDIOCSCAPTURE _IOW('v',23, struct video_capture) /* Set frame buffer - root only */
#define BASE_VIDIOCPRIVATE 192 /* 192-255 are private */
#define VID_HARDWARE_BT848 1
#define VID_HARDWARE_QCAM_BW 2
#define VID_HARDWARE_PMS 3
#define VID_HARDWARE_QCAM_C 4
#define VID_HARDWARE_PSEUDO 5
#define VID_HARDWARE_SAA5249 6
#define VID_HARDWARE_AZTECH 7
#define VID_HARDWARE_SF16MI 8
#define VID_HARDWARE_RTRACK 9
#define VID_HARDWARE_ZOLTRIX 10
#define VID_HARDWARE_SAA7146 11
#define VID_HARDWARE_VIDEUM 12 /* Reserved for Winnov videum */
#define VID_HARDWARE_RTRACK2 13
#define VID_HARDWARE_PERMEDIA2 14 /* Reserved for Permedia2 */
#define VID_HARDWARE_RIVA128 15 /* Reserved for RIVA 128 */
#define VID_HARDWARE_PLANB 16 /* PowerMac motherboard video-in */
#define VID_HARDWARE_BROADWAY 17 /* Broadway project */
#define VID_HARDWARE_GEMTEK 18
#define VID_HARDWARE_TYPHOON 19
#define VID_HARDWARE_VINO 20 /* Reserved for SGI Indy Vino */
/*
* Initialiser list
*/
struct video_init
{
char *name;
int (*init)(struct video_init *);
};
#endif

1929
src/videodev2.h Normal file

File diff suppressed because it is too large Load Diff