For broken hardware/bios with incorrect ACPI LID state,
there's machine that can not be fixed in ACPI way, customed
DSDT that reprogram _LID method to read EC state. Although
this is ACPI issue, this quirk can be used to work around that.
For #19115, the root cause is avi_if.u.avi.PR in
i830_sdvo_set_avi_infoframe() belongs to element for
interlaced mode based on CEA_861B, but currently we
don't support interlaced mode. So it should be set as 0.
Because of how fallbacky the uxa rendering core is, and our inability (without
wfb in userland or page faulting in the kernel) to tell the kernel just where
we're going to fall back, the clflush overhead can become outrageous, for
example with emacs and xcompmgr. Instead of using drm_intel_bo_map, pin the
buffer and do the fallback to the aperture mapping. This gets us the bad old
performance that fb is designed for, instead of bad new performance.
drmOpen by name only works on linux after falling back to groping around
in /proc. This doesn't work on other OS.
Signed-off-by: Robert Noland <rnoland@2hip.net>
This avoids prepare/finish_access_gc overhead when we're not changing things
(since GCTile is already handled) and get us the RW flag for the prepare on
of the stipple pixmap so thing will be synced correctly.
In debugging the frame buffer resize code, I needed to see what the server
was doing to the fence registers, so I added this debug code. Seems useful
enough to include it.
Signed-off-by: Keith Packard <keithp@keithp.com>
RandR 1.3 panning support can use the regular mode setting interface, but
that's really slow. Providing set_origin makes it nice and snappy.
Signed-off-by: Keith Packard <keithp@keithp.com>
This one trys to use lid status for LVDS detect,
which works when internal panel is not used as primary
display alone, or there's no internal panel at all.
ACPI button driver's lid state interface is preferred,
and SWF state is also checked if ACPI method failed.
Which is just being tidy. We initially were looking at this code
path due to a report of a crash on server shutdown which started
after this unreference call was added. Setting this to NULL
apparently didn't avoid the crash, but it's a good thing to do
regardless.
Without this change, setting LVDSFixedMode to false is not effective
as i830_bios_init calls i830_parse_panel_data which in turns sets
a fixed_mode. To fix this we still call parse_panel_data to set
the various lvds_options but we return before setting fixed_mode.
This avoids mapping a buffer object which is being referenced
by a batch that has already been flushed, (which is a terribly
expensive operation).
On my machine this brings the performance of x11perf -aa10text
from 85k back to 150k, (where it was before a recent kernel
upgrade). Also, before this patch, when I used my X server
actively performance would drop as low as 15k---hopefully that
bug is gone with this change.
EXA wouldn't create pixmaps for under-8bpp, but UXA does. Fixes
mis-rendering in xfwm, evolution message compose, firefox link
drag'n'drop, and I'm sure more. Big thanks to Pierre Willenbrock for
debugging the issue!
Bug #18050