When we have unset channels (color for a8, or alpha for x8*), force them
to the appropriate value in the texture combiner rather than relying on getting
the desired results from teture mapping. Performance is the same on 865, so
multiple paths aren't necessary and we can use the less friendly texture
formats everywhere.
This fixed the crash appearing for Xv buffer memory, which appears
allocation and free happening in stolen memory. We should always
try to bind for stolen memory for correct protect setup, otherwise
we might get fault that stolen memory protect reverted to non-r/w
after previous free and unbind.
Credit goes to Lukas Hejtmanek to identify the real problem of Xv
crash!
This lets us get better sanity asserts, and avoid mysterious braces when you
do two BEGIN_LP_RING()s in a single function. Potential minor performance
loss isn't too exciting, as ring access is about to become a compat path
anyway. This change also removes the requirement for ring emits to be aligned
to dwords.
Unbind and bind a DRM BO may change the buffer offset, thus
crtc may reference a wrong rotated memory after a VT switch cycle.
Destroying it here will cause its reallocation when entering VT.
Whoa, gcc got a lot smarter about warnings. If iXXX_get_dest_format()
doesn't support the picture format passed in it won't initialize the
uint32_t pointed to by dst_format and return FALSE.
What gcc now can detect is if dst_format is used without checking the
return value, it might be used uninitialized. This patch makes sure
we always check the return value before using dst_format.
This should keep the backlight value reported by xrandr --prop & xbacklight
consistent with changes by other software in the system (like the hotkey driver
or kernel backlight driver).
This simplifies the memory allocation code and fixes a number of bugs.
Prior to this change, some flags may have been set after memory
allocation occurred, meaning they had no effect. It should also make
the allocation logic clearer.
The following patch fixes the display problem on internal development machines.
The code in commit 3c22ed633b (Jesse's force pipe
A enable patch) broke DPLL programming. Moving the DPLL set back up in the
function solves the problem.
Fix for internal bug #309.
Use the "immediate idle" mode for FBC. Rather than waiting for the current
compression pass to finish before signalling to the CPU that it's idle, this
mode should stop any current compression pass and tell the CPU that the GPU is
idle right away.
Seems to fix#13326.
We failed to include the pciaccess header flags in our build. Even if the
server was to include those flags for us, it would leave us broken for the
tools-only case, and it's easier to just put the flags everywhere so we avoid
future copy'n'paste mistakes.
The GMBUS was being left in SDVO pin access mode, which blocked our bit-banging
access to those pins. Thanks to Peter Jones for quick debugging turnaround
in getting this fixed.
Some machines want DVOA, some DVOB. We can use this quirk to differentiate
them until we come up with a better solution. Patch from Hong Liu.
Fixes#13722.
The VGA register dumping code was leaving ARX in data mode rather than index
mode, which could cause problems for later software accessing AR* registers.
Fix it to make sure it's in index mode when we're done.
Fixes#14434.
When checking which pipe a given plane was associated with, we weren't properly
masking the pipe selection bits. Fixes#14481 and should allow the driver to
work with vesafb again.