Commit Graph

101 Commits

Author SHA1 Message Date
Adam Jackson
8c6b4a8276 DDC: Redo extended device probe slightly.
We'll now only mention the E-EDID segment register if the device is
actually E-EDID-capable.  While we're here, check for DDC/CI and
standard EEPROM support too.
2009-02-27 12:45:19 -05:00
Rémi Cardona
1badeb78b0 Include Xmd.h from edid.h 2009-01-07 09:31:17 -05:00
Paulo Cesar Pereira de Andrade
b1dac41fb3 Use libtool convenience libraries and better "symbol" table.
All .a libraries were converted to .la, and instead of linking the
Xorg binary with a mix of .a and .la, and adding some libraries more
then once in the command line, etc, now it generates a single libxorg.la
from all the required convenience libraries, and links with a dummy
xorg.c (that should usually be the file with the main function...).
This removes the requirement of some things like libosandcommon and
libinit, that existed to circumvent problems when linking multiple
.a and .la in the final Xorg binary.

  The "symbol table" is now generated dynamically, by a shell script,
with an embedded gawk parser that parses cpp output. The new file
sdksyms.sh is generated by hand by analyzing all Makefile.am's and
making it create a sdksyms.c file, that includes all sdk headers that
will add symbols for the Xorg binary. Module headers aren't read, and
a in 2 files it was required to add a "<hash>ifndef XorgLoader" around
declarations shared between the Xorg binary and libextmod. A few
other changes were added to other sdk headers, like preventing
multiple inclusion, or including other headers to satisfy dependencies.

  This should be a lot more portable, and better (hopefully properly)
using libtool to generate convenience libraries.
2008-12-07 02:22:19 -02:00
Alan Coopersmith
027ff97a13 Make sure _X_EXPORT is defined in edid.h
Fixes build error in xf86-video-intel utilities
2008-12-05 12:01:31 -08:00
Paulo Cesar Pereira de Andrade
49f77fff14 Rework symbol visibility for easier maintenance
Save in a few special cases, _X_EXPORT should not be used in C source
files. Instead, it should be used in headers, and the proper C source
include that header. Some special cases are symbols that need to be
shared between modules, but not expected to be used by external drivers,
and symbols that are accessible via LoaderSymbol/dlopen.

  This patch also adds conditionally some new sdk header files, depending
on extensions enabled. These files were added to match pattern for
other extensions/modules, that is, have the headers "deciding" symbol
visibility in the sdk. These headers are:
o Xext/panoramiXsrv.h, Xext/panoramiX.h
o fbpict.h (unconditionally)
o vidmodeproc.h
o mioverlay.h (unconditionally, used only by xaa)
o xfixes.h (unconditionally, symbols required by dri2)

  LoaderSymbol and similar functions now don't have different prototypes,
in loaderProcs.h and xf86Module.h, so that both headers can be included,
without the need of defining IN_LOADER.

  xf86NewInputDevice() device prototype readded to xf86Xinput.h, but
not exported (and with a comment about it).
2008-12-03 05:43:34 -02:00
Paulo Cesar Pereira de Andrade
d6cbd4511e Export symbols defined in the sdk.
This is the biggest "visibility" patch. Instead of doing a "export"
symbol on demand, export everything in the sdk, so that if some module
fails due to an unresolved symbol, it is because it is using a symbol
not in the sdk.

  Most exported symbols shouldn't really be made visible, neither
advertised in the sdk, as they are only used by a single shared object.

  Symbols in the sdk (or referenced in sdk macros), but not defined
anywhere include:
XkbBuildCoreState()
XkbInitialMap
XkbXIUnsupported
XkbCheckActionVMods()
XkbSendCompatNotify()
XkbDDXFakePointerButton()
XkbDDXApplyConfig()
_XkbStrCaseCmp()
_XkbErrMessages[]
_XkbErrCode
_XkbErrLocation
_XkbErrData
XkbAccessXDetailText()
XkbNKNDetailMaskText()
XkbLookupGroupAndLevel()
XkbInitAtoms()
XkbGetOrderedDrawables()
XkbFreeOrderedDrawables()
XkbConvertXkbComponents()
XkbWriteXKBSemantics()
XkbWriteXKBLayout()
XkbWriteXKBKeymap()
XkbWriteXKBFile()
XkbWriteCFile()
XkbWriteXKMFile()
XkbWriteToServer()
XkbMergeFile()
XkmFindTOCEntry()
XkmReadFileSection()
XkmReadFileSectionName()
InitExtInput()
xf86CheckButton()
xf86SwitchCoreDevice()
RamDacSetGamma()
RamDacRestoreDACValues()
xf86Bpp
xf86ConfigPix24
xf86MouseCflags[]
xf86SupportedMouseTypes[]
xf86NumMouseTypes
xf86ChangeBusIndex()
xf86EntityEnter()
xf86EntityLeave()
xf86WrapperInit()
xf86RingBell()
xf86findOptionBoolean()
xf86debugListOptions()
LoadSubModuleLocal()
LoaderSymbolLocal()
getInt10Rec()
xf86CurrentScreen
xf86ReallocatePciResources()
xf86NewSerialNumber()
xf86RandRSetInitialMode()
fbCompositeSolidMask_nx1xn
fbCompositeSolidMask_nx8888x0565C
fbCompositeSolidMask_nx8888x8888C
fbCompositeSolidMask_nx8x0565
fbCompositeSolidMask_nx8x0888
fbCompositeSolidMask_nx8x8888
fbCompositeSrc_0565x0565
fbCompositeSrc_8888x0565
fbCompositeSrc_8888x0888
fbCompositeSrc_8888x8888
fbCompositeSrcAdd_1000x1000
fbCompositeSrcAdd_8000x8000
fbCompositeSrcAdd_8888x8888
fbGeneration
fbIn
fbOver
fbOver24
fbOverlayGeneration
fbRasterizeEdges
fbRestoreAreas
fbSaveAreas
composeFunctions
VBEBuildVbeModeList()
VBECalcVbeModeIndex()
TIramdac3030CalculateMNPForClock()
shadowBufPtr
shadowFindBuf()
miRRGetScreenInfo()
RRSetScreenConfig()
RRModePruneUnused()
PixmanImageFromPicture()
extern int miPointerGetMotionEvents()
miClipPicture()
miRasterizeTriangle()
fbPush1toN()
fbInitializeBackingStore()
ddxBeforeReset()
SetupSprite()
InitSprite()
DGADeliverEvent()

  SPECIAL CASES
o defined as _X_INTERNAL
	xf86NewInputDevice()
o defined as static
	fbGCPrivateKey
	fbOverlayScreenPrivateKey
	fbScreenPrivateKey
	fbWinPrivateKey
o defined in libXfont.so, but declared in xorg/dixfont.h
	GetGlyphs()
	QueryGlyphExtents()
	QueryTextExtents()
	ParseGlyphCachingMode()
	InitGlyphCaching()
	SetGlyphCachingMode()
2008-11-29 23:56:06 -02:00
Paulo Cesar Pereira de Andrade
31285d063e Make visible symbols required by xorg modules.
This patch exports all symbols required by the compilable
(in a x86 linux computer) xorg/driver/* modules.
  Still missing symbols worth mentioning are:

sunleo
	miFindMaxBand no longer available

intel	(uxa/uxa-accel.c)
	fbShmPutImage no longer available (and should have been static)

mga
	MGAGetClientPointer (should come from matrox's libhal)

  This is not a definitive "visibility" patch, as all it does is to
export missing symbols, but the modules that current don't compile,
may require more symbols once fixed, and third party drivers should
also require more symbols exported.
  A "definitive" patch should export symbols defined in the sdk.
2008-11-28 01:55:11 -02:00
Paulo Cesar Pereira de Andrade
74bc792e18 Export symbols required by the vesa and fbdev drivers.
This is a minimal set of patches, to have an usable X Server when
compiling it with symbols hidden by default.
2008-11-27 05:34:14 -02:00
Alex Deucher
6b501d7cc5 Add missing newline when printing edid info 2008-11-13 13:57:30 -05:00
Adam Jackson
4cf2f4172a Add xf86MonitorIsHDMI() helper. 2008-11-03 14:35:03 -05:00
Adam Jackson
bd9c6b3a4d EDID: Catch even more cases of encoding aspect as size.
Very cute, Samsung, not only do you claim to be 16cm by 9cm in the
global size record, you also claim to be 160mm by 90mm in the detailed
timings.  Grrr.
2008-10-14 14:04:01 -04:00
Adam Jackson
f650c1aeb0 Revert "Don't leak EDID_block"
This reverts commit 05cdef18ca.

http://lists.freedesktop.org/archives/xorg/2008-October/039305.html
2008-10-10 14:07:28 -04:00
Adam Jackson
0660dd9d70 EDID: Catch monitors that encode aspect ratio for physical size.
This is not legal in either EDID 1.3 or 1.4, but hey, when did a little
thing like legality stop anyone.
2008-10-10 13:59:08 -04:00
Zhenyu Wang
05cdef18ca Don't leak EDID_block 2008-10-10 13:45:51 +08:00
Adam Jackson
8bfd88ca61 Revert accidental edid changes from previous commit. 2008-09-19 12:13:43 -04:00
Adam Jackson
69b79c1a66 Update to SGI FreeB 2.0.
Under the terms of version 1.1, "once Covered Code has been published
under a particular version of the License, Recipient may, for the
duration of the License, continue to use it under the terms of that
version, or choose to use such Covered Code under the terms of any
subsequent version published by SGI."

FreeB 2.0 license refers to "dates of first publication".  They are here
taken to be 1991-2000, as noted in the original license text:

 ** Original Code. The Original Code is: OpenGL Sample Implementation,
 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
 ** Copyright in any portions created by third parties is as indicated
 ** elsewhere herein. All Rights Reserved.

Official FreeB 2.0 text:

http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf

As always, this code has not been tested for conformance with the OpenGL
specification.  OpenGL conformance testing is available from
http://khronos.org/ and is required for use of the OpenGL logo in
product advertising and promotion.
2008-09-19 12:02:28 -04:00
Adam Jackson
76ed409acd EDID: Publish the whole block on the root window if we've got it. 2008-08-25 10:44:45 -04:00
Xavier Bestel
bb2cacd33e Cosmetic fix to EDID decoding. 2008-07-29 13:06:10 -04:00
Adam Jackson
66d7c9de82 Declare xf86InterpretEEDID() properly. 2008-07-01 10:55:54 -04:00
Adam Jackson
4fc18b5fc3 Hexdump the whole EDID block if extensions present. 2008-06-30 16:04:54 -04:00
Adam Jackson
b4fbc31e10 Actually fetch all blocks of EEDID if asked to. 2008-06-30 16:04:54 -04:00
Peter Hutterer
64677f6a16 xfree86: fix offset error in EDID parsing. #15964
X.Org Bug 15964 <http://bugs.freedesktop.org/show_bug.cgi?id=15964>
2008-05-27 21:18:35 +09:30
Adam Jackson
933ffcdf7d Compile fix. 2008-03-28 17:53:55 -04:00
Adam Jackson
9e8451d869 Add E-EDID segment selection. 2008-03-28 17:43:10 -04:00
Adam Jackson
0b4aef4d6d Refactor DDC2 code to allow for proper segmented addressing. 2008-03-28 17:43:01 -04:00
Adam Jackson
88ece11d6c Start E-EDID support in the DDC module.
Since there's no way to safely know how many blocks xf86DoEDID_DDC2 would
return, add a new xf86DoEEDID entrypoint to do that, and implement the
one in terms of the other.
2008-03-28 17:39:23 -04:00
James Cloos
613852ce6a Fix some documentation typos 2008-03-03 16:11:05 -05:00
George Sapountzis
3d64290547 clean some "unused" warnings 2008-03-01 19:49:24 +02:00
Adam Jackson
b7eb92774a EDID 1.4: Print additional CVT support data in the log. 2008-02-29 16:01:15 -05:00
Adam Jackson
31014d88af EDID 1.4: Decode additional CVT support information.
Table 3.28: Display Range Limits & CVT Support Definition
2008-02-29 16:01:15 -05:00
Adam Jackson
d1c48955f8 Fix CVT abuse in DDCModesFromStandardTiming.
CVT is enough different from GTF that it should not be used on monitors
that aren't expecting it.  This brings us closer to what the spec says
the correct behaviour is.
2008-02-29 16:01:15 -05:00
Adam Jackson
bae459cfc4 Don't carp on EDID 1.4 blocks anymore.
Also whine more loudly when we get something other than 1.x.
2007-12-28 16:53:17 -05:00
Adam Jackson
70b2d6cfeb Check the gamma value, not its address. 2007-12-28 16:53:17 -05:00
Adam Jackson
592d814ee0 EDID 1.4: Additional semantics for display feature bits.
First mode is _always_ preferred in 1.4; the bit that used to mean this
now means that the preferred mode is also the native pixel format.  The
old "is GTF" bit now means "is continuous-frequency" instead.

Section 3.6.4, Table 3.14: Feature Support, Notes 4 and 5.
2007-12-28 16:53:17 -05:00
Adam Jackson
322d0103ae EDID 1.4: Alternate color encodings for digital inputs.
Section 3.6.4, Table 3.14: Feature support.
2007-12-28 16:53:17 -05:00
Adam Jackson
f1f43caf7e EDID 1.4: Allow for gamma definition in extension blocks.
Section 3.6.3, Table 3.13: Display Transfer Characteristics (Gamma)
2007-12-28 16:53:16 -05:00
Adam Jackson
861ee38817 EDID 1.4: Additional aspect ratio semantics for screen size fields.
Section 3.6.2, Table 3.12: Horizontal and Vertical Screen Size or
Aspect Ratio.
2007-12-28 16:53:16 -05:00
Adam Jackson
14b5c8a447 EDID 1.4: Extended support for digital interfaces.
Section 3.6.1, Table 3.11: Video Input Definition.
2007-12-28 16:53:16 -05:00
Adam Jackson
a948216dcc EDID 1.4: Decode CVT 3-byte codes and add them to the mode pool.
Section 3.10.3.8: CVT 3 Byte Code Descriptor Definition.
2007-12-28 16:53:16 -05:00
Adam Jackson
f6df66cc89 EDID 1.4: Trivial support for new detailed sections.
Nothing actually decoded yet, but at least we print what they are.

New in EDID 1.4:
- Color Management Data (0xF9), Section 3.10.3.7
- CVT 3 Byte Code Descriptor (0xF8), Section 3.10.3.8
- Established Timings III Descriptor (0xF7), section 3.10.3.9
- Manufacturer-specified data tag (0x00 - 0x0F), section 3.10.3.12
2007-12-28 16:53:16 -05:00
Adam Jackson
bac3ecde39 EDID 1.4: Allow for sync range offsets.
Table 3.26: Display Range Limits & Timing Descriptor Block Definition
2007-12-28 16:53:16 -05:00
Adam Jackson
1faba797cb Death to libcwrapper.
This has been deprecated since 1.1.  Since we're breaking ABI again anyway,
remove it entirely.
2007-12-03 14:12:58 -05:00
Eric Anholt
988f446fe0 [EDID] Ignore reserved bits in deciding monitor vs detailed timing descriptor.
Even though they're defined to zero by the spec, we've seen an EDID block
where the (empty) ASCII strings were stuffed in a byte early, leading to the
descriptor being considered a detailed timing instead.
2007-09-24 20:26:31 -07:00
Keith Packard
ac979c1651 MakeAtom needs length without trailing NUL. sizeof("string") includes NUL.
I made a mistake in some new code using MakeAtom, passing the size of the
string instead of the length of the string. Figuring there might be other
such mistakes, I reviewed the server code and found four bugs of the same
form.
2007-07-14 12:13:17 -07:00
Adam Jackson
0e1384d831 Delete VDIF support; it was never used anyway. 2007-06-02 16:07:20 -04:00
Adam Jackson
6c8152d6ee Remove old edid_modes.c, it lives in hw/xfree86/modes/ now. 2007-04-26 14:59:04 -04:00
Adam Jackson
5ba4d9eedf Refuse to create tiny modes from EDID detailed timing. 2007-03-28 12:03:19 -04:00
Adam Jackson
2e3cc861f9 Since ddc, i2c, and ramdac are in core now, remove their ModuleData stubs. 2007-03-25 22:01:34 -04:00
Keith Packard
720f302d24 Slow down DDC I2C bus using a RiseFallTime of 20us for old monitors.
This time value makes the bus run slowly enough for even the least reliable
of monitors. Thanks to Pavel Troller for finding the necessary change.
2007-03-17 23:38:53 -07:00
Keith Packard
b5a8a71e64 Remove extra (and wrong) I2C ByteTimeout setting in DDC code.
The DDC code sets the I2C timeouts to VESA standards, except that it had an
extra setting of the ByteTimeout value which was wrong (off by a factor of
50). Removing this should help DDC work on many more monitors. Note that the
Intel driver duplicated these settings, along with the error. Yay for cult
and paste coding.
2007-03-17 23:38:43 -07:00