Age | Commit message (Collapse) | Author |
|
Autodetect libdrm version, disable new memory manager on older libraries.
Move new M_T_ defines from i830.h to i830_xf86Crtc.h. Add many system
headers to define functions. Use i830PipeSetBase at end of mode setting
code to set DSP*BASE and flush changes. Don't duplicate PipeSetBase call
from screen init function. Make initial RandR configuration code usable on
older versions of extension so the server doesn't start in a panning mode.
Use xfree instead of free in i830_tv.c.
|
|
Where two modes would produce precisely the same crtc settings and have the
same name, remove the latter mode from the mode list.
|
|
This file retained the old MIT license with the embedded author name.
Replace that with the version that uses generic 'copyright holders' instead.
|
|
This file retained the old MIT license with the embedded author name.
Replace that with the version that uses generic 'copyright holders' instead.
|
|
Pick out the EDID max clock value and use that to elide default modes which
are too fast.
|
|
|
|
Move output connection status detection from RandR code up to ProbeModes so
it is done before mode sets are built. Otherwise, the mode building code
will elide all modes the first time through as it ignores outputs that are
disconnected.
Most get_modes functions fetch EDID data; make sure that any
EDID changes are used in the ProbeModes filtering of default modes.
Otherwise, stale EDID data will be used.
Allow outputs to advertise support for interlaced and double scan modes;
prune such modes from the default mode list when outputs do not support them.
|
|
For the 965, we can tile with the pitch at any integer multiple of a tile size
(128 or 512B), up to 128KB.
|
|
Missing check for missing monitor configuration would result in segfault.
|
|
Limit the effect of sync ranges so that sync ranges found via EDID will not
eliminate modes explicitly added by the user. Limit default sync range to
eliminating only default modes, not configured or EDID modes.
|
|
Belinea 10 15 55 model monitor reports a preferred mode of 640x350, when in
fact it wants a 1024x768 mode @ 60Hz. Add an edid quirk that selects the
largest size mode, preferring those closer to 60hz among equal sized modes.
|
|
With modern monitors and increased XV and EXA memory requirements, these small
limits were resulting in DRI and other initialization failures because we
wouldn't allow them enough memory. Instead, allow each piece of the system
(DRI, EXA, XAA, etc) to request as much memory as it wants, and choose the
actual videoRam to be used for laying out the memory afterwards.
With this change, in the absence of a VideoRam option, 32MB will be allocated
for textures.
|
|
|
|
|
|
|
|
Add the modelines specified in the per-output monitor and all of the default
modes to the list to each output. Prune the resulting list to specified sync
limits and virtual sizes. Sort the resulting mode list on
preferred/size/refresh.
|
|
|
|
Currently, when the backing pixmap is not in framebuffer, we just BadAlloc
rather than drawing garbage to the front buffer. This can be fixed with EXA.
|
|
|
|
It is not currently hooked up as it hasn't been tested. The hardware that this
was written for decided to stop working.
|
|
|
|
The documentation states that GPIOB is (generally) used for devices on DVOA
on the motherboard, which appears to be the case on the laptop we have with
LVDS on the motherboard.
This patch is probably not entirely accurate, as there was apparently an LVDS
DVO card sold that could be put in desktop machines, which would likely be on
GPIOE like other ADD cards. Given that we couldn't find one of these cards for
purchase, I'm not worrying about it.
|
|
Every new person touching this file hits this trap, so it's now removed.
|
|
|
|
|
|
The XAA allocator returned an offset from the beginning of the frontbuffer
allocation (where the linear allocations come from), while EXA returned one
from the start of framebuffer. Now, both of them use the start of framebuffer
as the reference.
|
|
|
|
|
|
|
|
|
|
|
|
With this, we no longer allocate XV through the XF86 linear allocator in the
EXA case. We also no longer allocate extra space for the XF86 2D allocator
that we don't use in EXA mode, or space for the EXA allocator in XAA mode.
The EXA offscreen allocator now gets enough space for several screenfuls of
pixmaps plus one 1920x1088 movie.
A large duplicated section of code for allocating each framebuffer in the old
dual-screen mode was also factored out.
|
|
Monitors without detailed modes, or those which do not bother to set a
physical size in their detailed modes may still have physical size in the
global data.
|
|
|
|
This larger model reported different (but still incorrect)
sync polarities, so instead of flipping them, just set them to the right
value.
|
|
The default I2C timeouts are very short, and while most
modern monitors have no trouble responding at that rate,
some older ones cannot manage.
|
|
When removing the very last mode for a monitor, move the ->Last pointer to
the previous list element.
|
|
For EDID with known errors, add a quirk mechanism to automatically
compensate. The first quirk is for a Belinea 1440x900 monitor which
incorrectly specifies sync polarities in the detailed mode.
|
|
m2 was ranging from min <= m2 < max instead of <= max resulting in
inaccurate PLL frequencies for some modes.
|
|
Extract correct color conversion values for all video formats from
documentation. Use those, with appropriate conversions, for the color
conversion register values.
|
|
The constants provided in the documentation for the subcarrier DDA values
assumed the clock was programmed to precisely 108MHz, but the PLL can't hit
that value exactly (or our PLL computation can't, in any case). The
result was an incorrect subcarrier frequency which resulted in synthetic
subcarrier phase shift and a lovely rainbow effect on the screen.
Unfortunately, the documentation didn't exactly describe the function
performed by the subcarrier clock hardware, so a bit of detective work was
needed. New constants were computed using the code in tv.5c and those, along
with lots of other values from the documentation were inserted into the
necessary tables.
The result appears to generate stable NTSC video on the svideo connector.
|
|
DGA has a copy of the current mode list (yes, this is broken).
Regenerate it whenever the ddx mode list changes.
|
|
TV output private type field was set to I830_OUTPUT_SDVO instead of
I830_OUTPUT_TVOUT. When DGA mode setting occurred, the sdvo output debug
code would be invoked and attempt to dereference sdvo-specific bits of the
private structure leading to a segfault.
|
|
Physical screen size from the config file or DDC will already
be set correctly in the screen structure, unless it was computed from the
virtual size using the -dpi command line option. Recompute physical size as
we reset the screen size if the -dpi option was used.
|
|
|
|
|
|
|
|
|
|
Also, clean up the message if the limitation is hit.
|
|
This bug resulted in broken xinerama, among other issues.
|