summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-11-10Use pRADEONEnt to find both screens of a GPU in radeon_mode_hotplugMichel Dänzer
Fixes misbehaviour when hotplugging DisplayPort connectors on secondary GPUs. Fixes: c801f9f10a5d ("Handle Zaphod mode correctly in radeon_mode_hotplug") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98626 Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-10Refactor radeon_mode_hotplugMichel Dänzer
Preparation for the next change, no functional change intended. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-09Reindent code in radeon_dri2_create_buffer2Michel Dänzer
Fixes warning about misleading indentation from recent versions of gcc: ../../src/radeon_dri2.c: In function ‘radeon_dri2_create_buffer2’: ../../src/radeon_dri2.c:224:2: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (flags & RADEON_CREATE_PIXMAP_TILING_MACRO) ^~ ../../src/radeon_dri2.c:227:6: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’ if (aligned_width == front_width) ^~ No functional change intended. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-01Check Xorg version at runtime instead of build time in two placesMichel Dänzer
This means that all possible paths can be handled as intended, no matter which Xorg version the driver happened to be compiled against. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-27Require xserver 1.10 or newerMichel Dänzer
1.10.0 was released in February 2011. We've been accidentally requiring 1.10 or newer since 121a6de72da5 ("Keep track of damage event related flushes per-client v2"). Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-26Consume all available udev events at onceMichel Dänzer
We get multiple udev events for actions like docking a laptop into its station or plugging a monitor to the station. By consuming as many events as we can, we reduce the number of output re-evalutions. It depends on the timing how many events can be consumed at once. (Inspired by xserver commit 363f4273dd4aec3e26cc57ecb6c20f27e6c813d8) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-26PRIME: Fix swapping of provider sink / source capabilitiesHans de Goede
When a card has import capability it can be an offload _sink_, not a source and vice versa for export capability. This went unnoticed sofar because most gpus have both import and export capability. Signed-off-by: Hans de Goede <hdegoede@redhat.com> (Ported from xserver commit 94a1c77259ce39ba59ad87615df39b570ffab435) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-26Always call PixmapStopDirtyTracking in drmmode_set_scanout_pixmapMichel Dänzer
Otherwise, we may leak screen->pixmap_dirty_list entries if drmmode_set_scanout_pixmap is called repatedly with ppix != NULL, which can happen from RRReplaceScanoutPixmap. (Inspired by xserver commit b773a9c8126222e5fed2904d012fbf917a9f22fd) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-25Don't rely on randr_crtc->scanout_pixmap in drmmode_set_scanout_pixmapMichel Dänzer
RRReplaceScanoutPixmap may set randr_crtc->scanout_pixmap = NULL before we get here. (Inspired by xserver commit f4c37eeee7953df1fe0e3196eda452acf0078e61) v2: Always return TRUE in the if (!ppix) block. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
2016-10-19Remove PCI IDs and bus type from ati_pciids.csvMichel Dänzer
This cleans up the list of unique chipsets a little further. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-19Order unique chipsets according to first appearance in ati_pciids.csvMichel Dänzer
Instead of lexically. This makes it more likely for similar generations to be close to each other in the list of unique chipsets. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-19Enable HW cursor support with PRIME slave output & Xorg > 1.18.99.901Michel Dänzer
Supported since Xorg 1.18.99.2, but buggy until 1.18.99.901. (Ported from amdgpu commit 7cc04035c55788261cda89a915c433c2add6cad9) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-13Restore location of radeon_set_pixmap_bo call in drmmode_create_bo_pixmapMichel Dänzer
radeon_set_pixmap_bo sets the tiling flags, so it needs to be called before radeon_get_pixmap_tiling_flags. Fixes a regression with EXA and TearFree. Fixes: 8523a733b6a5 ("Propagate failure from radeon_set_pixmap_bo") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98097 Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-10-06Rotate and reflect cursor hotspot position for drmModeSetCursor2Michel Dänzer
We were always passing the hotspot position in the X screen coordinate space, but drmModeSetCursor2 needs it in the CRTC coordinate space. The wrong hotspot position would cause the kernel driver to adjust the HW cursor position incorrectly when the hotspot position changed. (Ported from amdgpu commit d42773eb45baff5933730e26878a0b45fcf07b65) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-21Only list each unique chipset family once in the log fileMichel Dänzer
(Ported from amdgpu commit 6a1ba044c2b71081e6060d0c096917d6238f2145)
2016-09-21Clear damage in radeon_scanout_update if it doesn't intersect the CRTCMichel Dänzer
There's no need to test that same damage again. (Ported from amdgpu commit a576430526cbc404de64b30e1377a356644e8024)
2016-09-21Remove w/h parameters from radeon_scanout_extents_intersectMichel Dänzer
We can use the dimensions of the CRTC's mode instead. (Ported from amdgpu commit ede7f2bcae63be65e05e3029bfe7c742e5978932)
2016-09-21Make the dedicated scanout mechanism work with arbitrary transformsMichel Dänzer
This makes TearFree work with arbitrary transforms, and makes transforms work better even without TearFree, with xserver >= 1.12. (Ported from amdgpu commit bf000ea7ef91f5ecb59fc3c1ab8ed9eddcc0841d)
2016-09-21Remove drmmode_load_paletteMichel Dänzer
Not used by any supported version of xserver. (Ported from amdgpu commits 1091f28e1fa239ee1a973d84a8376fa4a95d7247 and 5a4d3267ac3823fe58b51b0b9075b82375d7180c)
2016-09-21present: Separate checks for flips vs unflipsMichel Dänzer
All unflip checks apply to flips as well, but not vice versa. (Ported from amdgpu commit 4d506c23c9a628204fa23607931557b07ada3e31)
2016-09-21dri2: Don't allow flipping when using a dedicated scanout bufferMichel Dänzer
Fixes issues when mixing rotation and page flipping with current xserver Git master. (Ported from amdgpu commit decabd574f90d3df397c80ec931b3fde8a4afb49)
2016-09-21present: Don't allow flipping when using a dedicated scanout bufferMichel Dänzer
Fixes issues when mixing rotation and page flipping with current xserver Git master. (Ported from amdgpu commit 3ed28ce7cd26f89969617ba901ff253091d0d469)
2016-09-21Make sure drmmode_crtc->scanout[] are destroyed when not neededMichel Dänzer
We failed to do this when going back to scanning out directly from the screen pixmap. As a bonus, since we now destroy drmmode_crtc->scanout[] after setting the new scanout buffer, we may avoid the CRTC turning off intermittently in this case. (Ported from amdgpu commit 9c3324715fd395fd486ea341654d78f4f298b97f)
2016-09-21Simplify drmmode_set_mode_major error handlingMichel Dänzer
Initialize ret = FALSE and only set it to TRUE when we've succeeded. (Ported from amdgpu commit 3bce0519a4008cf87c0e31a7a579e10f5dcdd2f3)
2016-09-21Only add main fb if necessaryHans de Goede
If we're doing reverse-prime; or doing rotation the main fb is not used, and there is no reason to add it in this case. Signed-off-by: Hans de Goede <hdegoede@redhat.com> (Ported from xserver commit 4313122dea0df9affc280ee698e929489061ccc6) (Ported from amdgpu commit a3ca1500703837cbb8d49c554199a25dea7d5e1e)
2016-09-21Remove unnecessary fb addition from drmmode_xf86crtc_resizeHans de Goede
drmmode_set_mode_major() is the only user of drmmode->fb_id and will create it if necessary. Signed-off-by: Hans de Goede <hdegoede@redhat.com> (Ported from xserver commit 877453212166fdc912e0d687cdecee11aba563b5) (Ported from amdgpu commit 9ca1c24235ff5ab2e028333fc326e2eff008c574)
2016-09-21Free priv in amdgpu_set_pixmap_bo also if priv->bo == NULLMichel Dänzer
Fixes memory leak when destroying pixmaps with priv->bo == NULL. Reported-by: Qiang Yu <qiang.yu@amd.com> (Ported from amdgpu commit 7f7f9825caf3983902491da27c16d14cd8bf9b7d)
2016-09-21glamor: Fix leak of pixmap private when replacing BOMichel Dänzer
Reported-by: Qiang Yu <qiang.yu@amd.com> (Ported from amdgpu commit 397aedafee437c125b8ac1feafb1c3b466842aeb)
2016-09-21Propagate failure from radeon_set_pixmap_boMichel Dänzer
(Ported from amdgpu commits c315c00e44afc91a7c8e2eab5af836d9643ebb88 and 0d42082108c264568e2aadd15ace70e72388bc65)
2016-09-21Add support for ScreenPtr::SyncSharedPixmapMichel Dänzer
This allows deferring shared pixmap updates between different drivers. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-21Only define transform_region function for XF86_CRTC_VERSION >= 4Michel Dänzer
We're not using it with older xserver. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-20Use local implementation of RegionDuplicate for older xserverMichel Dänzer
It was only added in xserver 1.15. Fixes build against older xserver. Reported-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-15DRI2: Fix radeon_dri2_exchange_buffers width/height copy'n'paste errorQiang Yu
Signed-off-by: Qiang Yu <Qiang.Yu@amd.com> (Ported from amdgpu commit 73c8dc000ad6b2b53ba3aa7155f5e8f6b55623b7) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-15DRI2: Add interpolated_vblanks in radeon_dri2_get_crtc_mscMichel Dänzer
We need that in radeon_dri2_drawable_crtc as well for priv->vblank_delta to work as intended. radeon_dri2_get_msc was already doing this. Fixes hangs in some cases when using VDPAU via DRI2 and moving the window between CRTCs. (Ported from amdgpu commit abd1a7901c95e4bc78415cf1b7923623b9177152) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-15Fix radeon_mode_hotplug crash on multi GPU platform.Qiang Yu
On multi GPU platform, some screen is created by other GPU DDX. Signed-off-by: Qiang Yu <Qiang.Yu@amd.com> (Ported from amdgpu commit 978242977e5dc905e1d5a46b1b0d34b356c7af26) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-14Destroy all dedicated scanout buffers during CloseScreenMichel Dänzer
Fixes leaking active scanout buffers across a server reset, which also fixes server reset with glamor and active scanout buffers. (Ported from amdgpu commit d96dabc71b1b32dc4b422a9633cdd4e0e95da052) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-14glamor: Reallocate linear pixmap BO if necessary for DRI2 PRIMEMichel Dänzer
Fixes corruption when using DRI2 PRIME render offloading with the master screen using this driver. (Ported from amdgpu commit 0007c2f018ba663303d91d847e7c085269a23062) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-14Move DRI2's local fixup_glamor helper to radeon_glamor_set_pixmap_boMichel Dänzer
So it can be used outside of the DRI2 code. (Ported from amdgpu commit 5518bf5d793439b5bab369e5fc18de9a4a3b9dd6) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-14Consolidate get_drawable_pixmap helperMichel Dänzer
There were two static helpers for the same purpose. Consolidate them into a single inline helper which can be used anywhere. (Ported from amdgpu commit 641f4647b7f51dfd2da330376cd10fa9702b6423) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-12glamor: Fix radeon_glamor_share_pixmap_backing for priv->bo == NULLMichel Dänzer
Fixes crash when running a compositor and DRI_PRIME client via DRI2. Reported-by: Qiang Yu <qiang.yu@amd.com> (Ported from amdgpu commit b36c77695ba77b59a0ccd868454e3af4fc04d5ff) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-06Make TearFree effective with PRIME slave scanoutMichel Dänzer
TearFree can now prevent tearing with any possible display configuration. Note that there may still be inter-GPU tearing if the primary GPU uses a different driver. v2: * Also test dirty->slave_dst in radeon_prime_scanout_do_update Reviewed-by: Alex Deucher <alexander.deucher@amd.com> [v1]
2016-09-06Synchronize scanout pixmaps for TearFreeMichel Dänzer
Copy the damaged areas which are still valid in the other scanout pixmap from there, then only copy the remaining damaged area from the screen pixmap. This is slightly more efficient (only needs one Damage record instead of two, and only needs to copy each screen update across PCIe once with ShadowPrimary and a discrete GPU), and will be significantly more efficient for PRIME with the following change. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-06Move up radeon_scanout_extents_intersectMichel Dänzer
Will be needed higher up by the following changes. No functional change. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-09-02Factor out transform_region helperMichel Dänzer
While we're at it, fix leaking the memory allocated for xRectangles. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-08-30Only copy from screen pixmap to shared pixmap on demand for slave scanoutMichel Dänzer
Only copy once for each time we update the corresponding scanout pixmap. This can significantly reduce the bandwidth usage when there are frequent updates to the screen pixmap. This initial implementation only works when both the master and slave screens use this driver. v2: * Reduce churn in radeon_prime_scanout_update_handler * Clear the correct damage in radeon_dirty_update Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-08-26Fix build against xserver < 1.13Michel Dänzer
pScreen->isGPU was only introduced in 1.13. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97490 Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-08-26Also handle disabled CRTCs in drmmode_clear_pending_flipMichel Dänzer
If disabling a CRTC had to be deferred due to a pending flip in drmmode_crtc_dpms, there may no longer be any outputs associated with the CRTC when we get here. So we have to check for !crtc->enabled and call drmmode_crtc_dpms in that case as well. Fixes: 9090309e057d ("Wait for pending flips to complete before turning off an output or CRTC") Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-08-26Don't override crtc parameter value in drmmode_flip_handler/abortMichel Dänzer
When overriding the crtc parameter value of the last pending CRTC, drmmode_clear_pending_flip would work on the wrong CRTC, and the last pending CRTC's flip_pending flag might never get cleared. This would prevent that CRTC from properly turning off and back on again. Fixes: 9090309e057d ("Wait for pending flips to complete before turning off an output or CRTC") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97392 Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-08-25Also call drmmode_clear_pending_flip from radeon_scanout_flip_abortMichel Dänzer
Not doing so could break DPMS with TearFree. Reported-and-Tested-by: furkan on IRC Fixes: 9090309e057d ("Wait for pending flips to complete before turning off an output or CRTC") Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-08-23Track damage accurately for RandR 1.4 slave scanoutMichel Dänzer
This further reduces the PCIe bandwidth usage. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>