summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-12-05Calculate log base 2 in radeon.h based on clz for all platformsJochen Rollwagen
This commit replaces the inline assembler code (for x86 platforms) and loop (for non-x86 platforms) in RADEONLog2 with a one-liner version based on clz (count leading zeroes). Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2016-11-30Call radeon_drm_abort_entry on failure to flip to a scanout pixmapMichel Dänzer
Fixes leaking the corresponding struct radeon_drm_queue list entry in that case. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-30Call ValidateGC after ChangeClip in radeon_sync_scanout_pixmapsMichel Dänzer
The wrong order meant that the clipping region wasn't actually applied, so it always copied the full contents from the other scanout pixmap. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-30Fix radeon_scanout_extents_intersect for GPU screensMichel Dänzer
Fixes incorrect screen updates with TearFree enabled on PRIME slave outputs which are not located at (0, 0). Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-29Take current scanout_id into account everywhere involved with TearFreeMichel Dänzer
Fixes various potential issues with TearFree enabled, e.g. outputs freezing after display configuration changes. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-25Add radeon_is_gpu_screen helperMichel Dänzer
This will hopefully decrease the chance of accidentally breaking the build against xserver < 1.13 in the future. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-25fix build for xserver < 1.13Jochen Rollwagen
same procedure every few patches..... Fixes: 13c6bc5e3827 ("Don't install Flush/EventCallback for GPU screens") Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2016-11-24Pass fb_id into drmmode_page_flip_target_absolute/relativeMichel Dänzer
drmmode->fb_id isn't what we need in the TearFree case. Fixes TearFree freezing with (WW) RADEON(0): flip queue failed in radeon_scanout_flip: No such file or directory in the log file. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98834 Fixes: 1106b2f773ad ("Use DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags when available")
2016-11-22Don't install Flush/EventCallback for GPU screensMichel Dänzer
Their purpose is to flush GPU rendering commands corresponding to damage events, but there can be no damage events corresponding to GPU screen rendering operations. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-22Enable glamor by default with >= R600 and Xorg >= 1.18.3Michel Dänzer
glamor should now perform at least as well as EXA in general, and this allows DRI3 to be enabled by default for >= R600. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-18Use DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE/RELATIVE flags when availableMichel Dänzer
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-11-18Post-release version bumpMichel Dänzer
2016-11-17Bump version for 7.8.0 releasexf86-video-ati-7.8.0Michel Dänzer
2016-11-17Update manpage entry for Option "TearFree"Michel Dänzer
It's now effective for arbitrary transforms as well.
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-20Sayōnara, AM_MAINTAINER_MODE!Michel Dänzer
If --enable-maintainer-mode got lost from config.status for any reason, builds would fail in mysterious ways after changing between different Git commits. There are more reasons for dropping it in the automake manual: https://www.gnu.org/software/automake/manual/html_node/maintainer_002dmode.html I'm not aware of any reason why --disable-maintainer-mode would ever be useful with this project. Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
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>