Age | Commit message (Collapse) | Author |
|
struct_mutex cannot be held while blocking on DRM lock.
|
|
Idea being if you want to add new crtc/output/encoder dynamically later,
you just increase the generation counter and userspace should re-read
all the resources
|
|
|
|
|
|
|
|
|
|
|
|
Move TTM code into the driver
|
|
This compares the clocks after converting to fb pico timings so we
get the same answer if the X and fb modes are the same.
|
|
Without kernel modesetting, this requires cooperation of the userspace
modesetting driver. We may have to leave the vblank interrupt enabled otherwise
to avoid problems.
|
|
Only compensate when the driver counter actually appears to have moved
backwards.
The compensation deltas need to be incremental instead of absolute; drop the
vblank_offset field and just use atomic_sub().
|
|
Turns out the radeon driver is affected by the same problem that prompted i915
to revert to less useful counter flipping at the end of the vblank interval. In
the long term, we can hopefully implement more reliable methods to achieve
counter flipping at the beginning of vblank, but otherwise this should be an
acceptable workaround.
|
|
|
|
This reverts commit 6671ad1917698b6174a1af314b63b3800d75248c.
The vblank ioctl needs to update the userspace parameters when interrupted by
a signal, which was prevented by this. Let's see if this breaks other ioctls...
|
|
This should be pci_map_page not pci_map_single
|
|
Just renaming this function and related parameters to match terminology used
elsewhere in the driver.
|
|
set_domain can block waiting for rendering to complete. If that process is
interrupted by a signal, it can return -EINTR. Catch this error in all
callers and correctly deal with the result.
|
|
|
|
|
|
This creates a default group attached to the legacy drm minor nodes.
It covers all the objects in the set. make set resources only return
objects for this set. Need to fix up other functions to only work on
objects in their allowed set.
|
|
handle crtc/encoders/connectors/fb/mode/property/blob using this system.
|
|
Not 100% sure this is a good idea, but I think I'd rather things
communicate with bo handles not fb ids.
|
|
|
|
|
|
|
|
This asks the driver to suggest the best encoder for the connector
during the pick crtcs stage.
Need to also do this during mode setting stages
|
|
Migrated the output mode collection into the helper.
|
|
|
|
Move dpms into the helper functions.
Move crtc into the encoder.
Move disable unused functions into the helper.
|
|
Conflicts:
linux-core/Makefile.kernel
shared-core/i915_drv.h
shared-core/nouveau_state.c
|
|
The problem was revealed where on 965, the display list vertex buffer would see:
create -> (CPU, CPU)
set_domain (CPU, CPU) -> (CPU, CPU)
set_comain (CPU, 0) -> (CPU, 0) (no clflush occurred)
execbuf (GPU, 0) -> (CPU+GPU, 0) (still no clflush)
instead of:
create -> (CPU, CPU)
set_domain (CPU, CPU) -> (CPU, CPU)
set_comain (CPU, 0) -> (CPU, CPU)
execbuf (GPU, 0) -> (CPU+GPU, 0) (clflushed)
|
|
|
|
|
|
|
|
Okay we have crtc, encoder and connectors.
No more outputs exposed beyond driver internals
I've broken intel tv connector stuff.
Really for TV we should have one TV connector, with a sub property for the
type of signal been driven over it
|
|
Time to do some renaming on the connectors I think
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Use subclassing from the drivers to allocate the objects. This saves
two objects being allocated for each crtc/output and generally makes
exit paths cleaner.
|
|
Otherwise, 965 constant state buffers get re-relocated every exec. Ouch.
|
|
|
|
This splits a lot of the core modesetting code out into a file of
helper functions, that are only called from themselves and/or the driver.
The driver gets called into more often or can call these functions from itself
if it is a helper using driver.
I've broken framebuffer resize doing this but I didn't like the API for that
in any case.
|
|
as I'm going to break it.
|
|
modesetting-101
Conflicts:
shared-core/i915_dma.c
shared-core/i915_drv.h
|
|
At the moment, we only read it at startup time, so we can just unmap it there
when we're done.
|