Commit Graph

124 Commits

Author SHA1 Message Date
Keith Packard
2c7111235c modesetting: Enable Xv when using glamor
This just calls the existing function to create the relevant Xv
adaptor and hook it up.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2014-12-19 18:09:15 -08:00
Keith Packard
5a541bd5e7 modesetting: [v2] Don't re-enable the cursor when loading the image
Hidden cursors also have their image updated; re-enabling the cursor
each time the image is set will cause it to re-appear.

 * Unifies the code that was in  drmmode_load_cursor_argb and
  drm_mode_show_cursor and moves it to a new drmmode_set_cursor

 * Add a new boolean, 'cursor_up', to the per-crtc
   private data to track whether the cursor should be displayed.

 * Call drmmode_set_cursor from drm_mode_show_cursor and, if
   the cursor should be displayed, from drm_mode_load_cursor_argb.

v2: Call drmModeSetCursor2 when loading a new cursor image if the
    cursor should be displayed.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2014-12-18 10:04:48 -08:00
Kenneth Graunke
7b784df51b modesetting: Use GBM for buffer allocations if Glamor supports it.
For performance, Glamor wants to render to tiled buffers, not linear
ones.  Using GBM allows us to pick the 3D driver's preferred tiling
modes.

v2: Declare drmmode->gbm as void * if !GLAMOR_HAS_GBM.
v3: Just use a forward declaration of struct gbm_device.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Kenneth Graunke
980535757d modesetting: Create a drmmode_bo wrapper; use it for front_bo.
This code is going to be extended to support GBM BOs soon.  This small
abstraction removes a lot of direct dumb_bo access, so we can add that
support in one place, rather than putting conditionals at every
pitch/handle/etc access.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Kenneth Graunke
c6388964b0 modesetting: Drop dumb_bo::map_count field and dead unmap code.
The drm kernel API for dumb BOs apparently doesn't include an unmap
ioctl, so we can't do much here.  It looks like this code was copied
from libkms, which was also unfinished.

We may as well delete the dead variable that simply gets incremented
and never read.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Kenneth Graunke
87cc0c0d31 modesetting: Move dumb_bo into its own source files.
Eventually, drmmode_display will be able to use GBM for handling
buffers, and won't need dumb_bo.  Keeping the display related logic
and buffer object abstraction in separate files seems a bit tidier.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Kenneth Graunke
af4f94b08e modesetting: Create helper for glamor_egl_create_textured_screen call.
This will need to change when we add GBM support; by pulling it into a
helper function, we should only have to edit one place.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Kenneth Graunke
b4324c6a23 modesetting: Move ModifyPixmapHeader calls out of if/else branches.
Both branches called ModifyPixmapHeader with essentially the same
parameters.  By using new_pixels in the shadowfb case, we can make
them completely the same, and move them out a level, for simplicity.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Kenneth Graunke
35e9924484 modesetting: Stop using glamor_egl_create_textured_screen_ext().
The _ext variant takes an additional pointer argument, which it now
ignores, thanks to Keith's recent patches.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-12-11 11:26:19 -08:00
Daniel Martin
32ca85c9e0 modesetting: Remove unused params from drmmode_output_init()
drmmode_output_init() doesn't touch (the int*) num_dvi and num_hdmi.
Remove both parameters.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
2014-12-08 15:49:46 -08:00
Daniel Martin
c0ea476b9b modesetting: Fix ifdefs s/HAVE_UDEV/CONFIG_UDEV_KMS/
We don't define HAVE_UDEV, that's a remnant from xf86-video-modesetting.
But, we have CONFIG_UDEV_KMS.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
2014-12-08 15:49:42 -08:00
Daniel Martin
8a16620dcd modesetting: Create new EGL screen in drmmode_xf86crtc_resize
If we don't glamor_egl_create_textured_screen_ext() in
drmmode_xf86crtc_resize() we end up with a black screen and no client
window(s) visible.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
2014-12-08 15:49:38 -08:00
Daniel Martin
0d63fa5850 modesetting: Move Bool glamor into drmmode struct
Move the boolean glamor from struct modesetting into struct drmmode for
later re-use in drmmode_display.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2014-12-08 15:49:33 -08:00
Peter Hutterer
732fd7e571 Drop trailing whitespaces
sed -i "s/[ ]\+$//g" **/*.(c|h)

happy reviewing...
git diff -w is an empty diff.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-11-12 10:25:00 +10:00
Keith Packard
5adc20179e modesetting: Skip kernel work-around on error in crtc to kernel msc
ms_crtc_msc_to_kernel_msc attempts to work around kernel
inconsistencies in reporting msc values by comparing the expected
value with the reported value. If the kernel fails to
actually provide its current values, then just skip the work around
steps as there's really nothing better we can do.

Signed-off-by: Keith Packard <keithp@keithp.com>
2014-10-27 15:28:14 -07:00
Eric Anholt
cac4b064f9 modesetting: Add support for DRI2 with glamor.
This is derived from the intel driver DRI2 code, with swapchain and
pageflipping dropped, functions renamed, and vblank event management
shared code moved to a vblank.c for reuse by Present.

This allows AIGLX to load, which means that you get appropriate
visuals exposed in GL, along with many extensions under
direct-rendering that require presence in GLX (which aren't supported
in glxdriswrast.c).

v2: Drop unused header includes in pageflip.c, wrap in #ifdef GLAMOR.
    Drop triple-buffering, which was totally broken in practice (I'll
    try to fix this later).  Fix up some style nits.  Document the
    general flow of pageflipping and why, rename the DRI2 frame event
    type enums to reflect what they're for, and handle them in a
    single switch statement so you can understand the state machine
    more easily.
v3: Drop pageflipping entirely -- it's unstable on my Intel laptop
    (not that the normal 2D driver is stable with pageflipping for
    me), and I won't get it fixed before the merge window.  It now
    passes all of the OML_sync_control tests from Jamey and Theo
    (except for occasional warns in timing -fullscreen -divisor 2).
v4: Fix doxygen at the top of vblank.c

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2014-10-27 13:16:43 -07:00
Eric Anholt
7064b00d47 modesetting: Export two functions I want to reuse from DRI2/Present.
This renames dumb_get_bo_from_handle(), since it wasn't using a handle
(GEM terminology) but a dmabuf fd.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2014-10-27 13:16:35 -07:00
Eric Anholt
aaf5e2d643 modesetting: Add support for rendering using glamor.
By default modesetting now tries to enable X acceleration using
glamor, but falls back to normal shadowfb if GL fails to initialize.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-10-09 09:48:51 +02:00
Eric Anholt
6d41bdb23c modesetting: Deduplicate some scrn setup.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-10-09 09:48:48 +02:00
Eric Anholt
20a3b48219 modesetting: Fix some weird formatting after x-indent-all.sh.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-10-09 09:48:45 +02:00
Eric Anholt
3119acdab9 modesetting: Run x-indent-all.sh.
As I was editing code, the top-level .dir-locals.el was making my new
stuff conflict with the existing style.  Make it consistently use the
xorg style, instead.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-10-09 09:48:42 +02:00
Eric Anholt
b84d25fd53 modesetting: Drop remaining old-xserver compatibility.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-16 16:28:50 -07:00
Eric Anholt
7b0965a826 modesetting: Drop use of compat-api.h
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-16 16:28:50 -07:00
Eric Anholt
2feda3b6b5 modesetting: Connect the driver to the build.
v2: Fix libdrm version check, and use XORG_VERSION_* instead of a
    static 1.0.0 version for the driver module.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-16 16:28:42 -07:00
Eric Anholt
6d6aa8ab6b modesetting: Update for the platform device API change.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-15 12:47:19 -07:00
Eric Anholt
9c080f4496 modesetting: Drop use of "pointer" for "void *"
The xserver doesn't have that typedef.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-15 12:47:12 -07:00
Eric Anholt
a10ea01475 modesetting: xserver already checks XEXTPROTO >= 7.2.99.901.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-15 12:47:06 -07:00
Eric Anholt
c7e8d4a6ee modesetting: unifdef MODESETTING_OUTPUT_SLAVE_SUPPORT
The server will always have it.

v2: Clean up some weird formatting from the unifdeffing.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-15 12:46:43 -07:00
Eric Anholt
0c07bfb38e modesetting: Merge modesetting's COPYING into the xserver's.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2014-09-15 12:46:02 -07:00
Adam Jackson
042bae0b49 Use own thunk function instead of shadowUpdatePackedWeak
I plan to remove the Weak functions from a future server.

Signed-off-by: Adam Jackson <ajax@redhat.com>
2014-05-21 10:17:02 -04:00
Dave Airlie
219ce9e6c3 modesetting: fix build regression against older servers.
Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-05-02 13:16:05 +10:00
Dave Airlie
795af9ff01 modesetting: fix use after free.
Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-05-02 13:14:30 +10:00
Hans de Goede
f073b5e582 Add support for server managed fds
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2014-04-28 13:08:55 +02:00
Dave Airlie
98f59a33df modesetting: fix cursor rendering with hotspots.
older kernels report EINVAL not ENOSYS, doh.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-02-28 12:04:30 +10:00
Adam Jackson
2029c028fc modesetting: Don't (brokenly) double-track software cursor
Signed-off-by: Adam Jackson <ajax@redhat.com>
2014-02-25 13:37:20 -05:00
Dave Airlie
fac2bcf1da modesetting: try and use hotspot cursor support
Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-02-21 12:54:37 +10:00
Dave Airlie
4aab7aa7c1 modesetting: move closing fd to after we check outputs
On something like cirrus, start X, then attempt to start a second
X while the first is running, if fbdev is installed it'll fail
hard.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-02-21 12:49:23 +10:00
Alex Deucher
02fbae85e7 modesetting: query cursor size from the kernel
Use new drm caps.  This allows hw cursors to work
correctly on gpus with non-64x64 cursors.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2014-02-12 13:16:53 -05:00
Thierry Reding
59e324abd7 Properly identify DSI outputs
Newer Linux kernels support DSI outputs. To be able to identify them
properly, add DSI to the list of output names.

Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2013-12-03 16:59:21 +01:00
Thierry Reding
190289f639 Staticise and constify output names
This array isn't used anywhere outside this file, so it can be made
static. While at it, make the array const as well.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
2013-12-03 16:58:57 +01:00
Keith Packard
a307ac2738 Handle new DamageUnregister API which has only one argument
API change in 1.15

Signed-off-by: Keith Packard <keithp@keithp.com>
2013-11-15 13:39:52 +09:00
Keith Packard
d6ffce4b0e Clean up compiler warnings.
Add const to any immutable string pointers.
Rename 'range' to 'prop_range' to avoid redefined warning.
Eliminate some unused return values.

Signed-off-by: Keith Packard <keithp@keithp.com>
2013-11-15 13:38:49 +09:00
Dave Airlie
836daf4c7a modesetting: change output names for secondary GPUs
if we are a secondary GPU modify the output name to avoid clashes.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2013-07-31 11:24:48 +10:00
Maarten Lankhorst
525ac7fb9a modesetting: probe only succeeds if connectors are detected
This will prevent modesetting being used for outputless intel or nvidia cards.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-06-12 14:07:36 +02:00
Dave Airlie
d4791dd97b modesetting: fix adjust frame crash
When SDL called this it was totally broken, actually hook
up to the underlying drmmode function.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=64808

Thanks to Peter Wu <lekensteyn@gmail.com> for harassing me.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2013-06-11 10:29:25 +10:00
Maarten Lankhorst
c64fa9a296 support 32 bpp pixmaps when 24 bpp fb is used.
Fixes background corruption in ubuntu.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-04-03 12:09:30 +02:00
Maarten Lankhorst
862bc28368 modesetting: return null for get_modes if output could not be retrieved
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-03-26 15:19:52 +01:00
Maarten Lankhorst
6b79a8791d modesetting: clean up leaks
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
2013-03-26 15:19:44 +01:00
Aaron Plattner
1754973206 modesetting: match PCI class 3, any subclass
If a device is not primary, the PCI device match fails because the
xf86-video-modesetting driver looks specifically for a PCI class match of
0x30000 with a mask of 0xffffff.  This fails to match, for example, a
non-primary Intel VGA device, because it is reported as having a class of
0x38000.

Fix that by ignoring the low 16 bits of the class in the pci_id_match table.

Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
Reviewed on IRC by Adam Jackson <ajax@redhat.com>
2013-03-21 11:10:35 -07:00
Chris Wilson
75815dbb37 Add missing GTF modes
A fixed-mode output device like a panel will often only inform of its
preferred mode through its EDID. However, the driver will adjust user
specified modes for display through use of a panel-fitter allowing
greater flexibility in upscaling. This is often used by games to set a
low resolution for performance and use the panel fitter to fill the
screen.

v2: Use the presence of the 'scaling mode' connector property as an
indication that a panel fitter is attached to that pipe.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55564
2013-02-25 12:12:53 +00:00