[Bug 76130] Radeon HD 4570 set dpm state fails after suspend
https://bugs.freedesktop.org/show_bug.cgi?id=76130 Evgeny Grechnikov <diamondaz+fdb at yandex.ru> changed: What|Removed |Added CC||diamondaz+fdb at yandex.ru --- Comment #15 from Evgeny Grechnikov <diamondaz+fdb at yandex.ru> --- Same issue on Debian 8 stable, kernel 3.16: two *ERROR*s in kernel log and a notable performance degradation in some games after suspend/resume. I have tried the proposed patch, it does not help (the recompiled driver still has the same behavior). -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/7886c724/attachment.html>
[Bug 92858] AMD Radeon GPU Acceleration Disabled Under Kernels 4.2.x and later versions
https://bugs.freedesktop.org/show_bug.cgi?id=92858 --- Comment #4 from Christian König --- Well you are already doing quite fine and as far as I understand you are capable to build your own kernel from source and that's everything you need. I will try to explain the rest step by step in detail and what the commands do. First of all the long strings of text like "c11d716218910c3aa2bac1bb641e6086ad649555" are hash code, which identify a patch or change in the history of the kernel development. Each change the developers did between 4.1 and 4.2 has such a hash code which is basically just a fingerprint of the whole source code at that moment. When you initially clone a source repository using "git clone" it indeed checks out the latest version by default. Now you already did "git bisect start v4.2 v4.1" in the newly created source directory which tells git that version 4.2 is bad and version 4.1 is good. This command than takes a look at all the changes between version 4.1 and 4.2 and then jumps into the middle of this list. In your case that is commit "[c11d716218910c3aa2bac1bb641e6086ad649555] Merge tag 'armsoc-cleanup' of...". This commit is now checked out and you can build, install and test the kernel. Then you go into the directory again and do "git bisect good" if the newly build kernel works and if it doesn't work you do "git bisect bad". Git will then look at the list of changes again and jumps either toward the direction of version 4.1 or 4.2 (depends on if you said good or bad) and then checks out the next change to test. This repeats roughly 13 times until git found the change which caused your problems. All you need to do is making sure you always boot the latest installed kernel. By default grub for example will boot the kernel with the highest version number. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/182187fd/attachment.html>
[Bug 92858] AMD Radeon GPU Acceleration Disabled Under Kernels 4.2.x and later versions
https://bugs.freedesktop.org/show_bug.cgi?id=92858 --- Comment #3 from Darren --- I downloaded the kernel source via git, using "git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git,; then I changed directory into the folder it created, called "linux." I then ran "git bisect start v4.2 v4.1" and the output was: "Bisecting: 7353 revisions left to test after this (roughly 13 steps) [c11d716218910c3aa2bac1bb641e6086ad649555] Merge tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc" I'm not to up to speed on git bisect, but don't I need to declare a good revision first so bisect has somewhere to start? Also, in order to declare a good revision, I'd need to compile the whole kernel again starting with the initial git commit during the 4.2 merge window, wouldn't I? The above "git clone" command checks out the source for the latest kernel (not sure about which if any kernel history it downloads,) no? And if I compile using it, wouldn't it build 4.3.0 instead of an earlier revision? To summarize, I'm very much a newcomer to git--if I needed to install a kernel before, I would use AUR packages, or in the case of beginner friendly distributions like Ubuntu, would simply grab the latest kernel from a PPA. I can copy and paste commands, learned what "--depth=X" does-in the event I needed to download without history-while building the nouveau kernel tree back when I had a nVidia GPU, but I'm not otherwise too experienced. Can you point me to the best resource/s on learning git and how to identify what those long strings of text like "c11d716218910c3aa2bac1bb641e6086ad649555" indicate and what to do to isolate a good revsion so bisect can start at it? Thanks! -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/82dbbb6b/attachment.html>
[Bug 92300] 0 A.D. 100% reproduceable AMD Hawaii (R390X) GPU lockup after a few seconds of running Sicilia map
https://bugs.freedesktop.org/show_bug.cgi?id=92300 MC Return changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #1 from MC Return --- Fixed with recent driver updates. Cannot reproduce this anymore. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/1c6451c9/attachment.html>
[Bug 92858] AMD Radeon GPU Acceleration Disabled Under Kernels 4.2.x and later versions
https://bugs.freedesktop.org/show_bug.cgi?id=92858 --- Comment #2 from Darren --- (In reply to Christian König from comment #1) > (In reply to Darren from comment #0) > > The section pasted above of the dmesg from kernel 4.3-rc-7 indicates the > > driver is failing on the "drm:r600_ringtest"...however, this is not a r600 > > card but a Southern Islands. > > Yeah, indeed the very basic test if the command process is up and running > didn't worked. Because of this the driver pretty much disables itself, > except for bringing up a picture to the screen. > > That r600_ringtest is used for a Verde is perfectly normal, we only got > r100_ringtest, r300_ringtest and r600_ringtest for the different hardware > generations. > > > Steps taken while attempting to resolve the issue: I'd initiallly thought it > > could be a firmware issue, with the linux-firmware package in the distro > > perhaps not having been updated to support the latest kernels, but even when > > I installed linux-firmware-git from the AUR to replace the standard > > linux-firmware package and then booted linux 4.3-rc7, mesa was still using > > llvmpipe instead of radeonsi, due to no GPU accel. I've also compiled the > > 4.3.0 kernel using the tarball directly from kernel.org, and a default > > kernel configuration file from ubuntu. When I booted into the 4.3.0 upstream > > kernel, GPU acceleration was still disabled. As neither the source nor the > > kernel config were from Manjaro, doesn't this rule out a distro bug and > > indicate the issue is upstream? > > Yes that sounds like somewhere between 4.1 and 4.2 a patch broke the support > for Verde. > > As far as I know we didn't changed anything related to Verde between 4.1 and > 4.2. > > Can you get the kernel source using git and then run "git bisect start v4.2 > v4.1" to figure out which patch exactly caused the regression? -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/25ccd245/attachment-0001.html>
[Bug 92858] AMD Radeon GPU Acceleration Disabled Under Kernels 4.2.x and later versions
https://bugs.freedesktop.org/show_bug.cgi?id=92858 Christian König changed: What|Removed |Added Status|NEW |ASSIGNED --- Comment #1 from Christian König --- (In reply to Darren from comment #0) > The section pasted above of the dmesg from kernel 4.3-rc-7 indicates the > driver is failing on the "drm:r600_ringtest"...however, this is not a r600 > card but a Southern Islands. Yeah, indeed the very basic test if the command process is up and running didn't worked. Because of this the driver pretty much disables itself, except for bringing up a picture to the screen. That r600_ringtest is used for a Verde is perfectly normal, we only got r100_ringtest, r300_ringtest and r600_ringtest for the different hardware generations. > Steps taken while attempting to resolve the issue: I'd initiallly thought it > could be a firmware issue, with the linux-firmware package in the distro > perhaps not having been updated to support the latest kernels, but even when > I installed linux-firmware-git from the AUR to replace the standard > linux-firmware package and then booted linux 4.3-rc7, mesa was still using > llvmpipe instead of radeonsi, due to no GPU accel. I've also compiled the > 4.3.0 kernel using the tarball directly from kernel.org, and a default > kernel configuration file from ubuntu. When I booted into the 4.3.0 upstream > kernel, GPU acceleration was still disabled. As neither the source nor the > kernel config were from Manjaro, doesn't this rule out a distro bug and > indicate the issue is upstream? Yes that sounds like somewhere between 4.1 and 4.2 a patch broke the support for Verde. As far as I know we didn't changed anything related to Verde between 4.1 and 4.2. Can you get the kernel source using git and then run "git bisect start v4.2 v4.1" to figure out which patch exactly caused the regression? -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/c16c78d5/attachment.html>
[Bug 92858] AMD Radeon GPU Acceleration Disabled Under Kernels 4.2.x and later versions
https://bugs.freedesktop.org/show_bug.cgi?id=92858 Christian König changed: What|Removed |Added Attachment #119469|text/plain |application/binary mime type|| -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/5e2e150b/attachment.html>
[Bug 92860] [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved
https://bugs.freedesktop.org/show_bug.cgi?id=92860 --- Comment #5 from Shawn Starr --- I should also note, this has *significantly* boosted FPS and reduced stalls in game. This has fixed a bottleneck somewhere -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/ee1cb8b8/attachment.html>
[Bug 92860] [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved
https://bugs.freedesktop.org/show_bug.cgi?id=92860 --- Comment #4 from Shawn Starr --- Confirmed: [Mesa-dev] [PATCH] mesa/copyimage: allow width/height to not be multiples of block Fixed issue in apitrace/in game. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/f92e54b7/attachment.html>
[Bug 92860] [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved
https://bugs.freedesktop.org/show_bug.cgi?id=92860 --- Comment #3 from Ilia Mirkin --- The problem is that it creates a mip-mapped compressed texture (DXT1) and copies in each level. However DXT1 has a block size of 4x4, so mesa refuses to copy in the last 2 levels. I need to go back and look at the spec, but I believe that's bogus behaviour... we should be allowing this. 521945 glBindTexture(target = GL_TEXTURE_2D, texture = 2714) 521946 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_WRAP_S, param = GL_REPEAT) 521947 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_WRAP_T, param = GL_REPEAT) 521948 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_WRAP_R, param = GL_REPEAT) 521949 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_MAG_FILTER, param = GL_NEAREST) 521950 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_MIN_FILTER, param = GL_NEAREST) 521951 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_MAX_ANISOTROPY_EXT, param = 1) 521952 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_BASE_LEVEL, param = 0) 521953 glTexParameteri(target = GL_TEXTURE_2D, pname = GL_TEXTURE_MAX_LEVEL, param = 11) 521954 glTexStorage2D(target = GL_TEXTURE_2D, levels = 12, internalformat = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, width = 2048, height = 2048) 521955 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 0, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXT URE_2D, dstLevel = 5, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 64, srcHeight = 64, srcDepth = 1) 521956 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 1, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXT URE_2D, dstLevel = 6, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 32, srcHeight = 32, srcDepth = 1) 521957 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 2, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXT URE_2D, dstLevel = 7, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 16, srcHeight = 16, srcDepth = 1) 521958 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 3, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXT URE_2D, dstLevel = 8, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 8, srcHeight = 8, srcDepth = 1) 521959 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 4, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXT URE_2D, dstLevel = 9, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 4, srcHeight = 4, srcDepth = 1) 521960 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 5, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXTURE_2D, dstLevel = 10, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 2, srcHeight = 2, srcDepth = 1) 521961 glCopyImageSubData(srcName = 2672, srcTarget = GL_TEXTURE_2D, srcLevel = 6, srcX = 0, srcY = 0, srcZ = 0, dstName = 2714, dstTarget = GL_TEXTURE_2D, dstLevel = 11, dstX = 0, dstY = 0, dstZ = 0, srcWidth = 1, srcHeight = 1, srcDepth = 1) -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/81b9dc92/attachment.html>
[Bug 92518] Radeon 7870 XT Stalling Between Ring 0 and Ring 3
https://bugs.freedesktop.org/show_bug.cgi?id=92518 benli1392 at gmail.com changed: What|Removed |Added Attachment #119389|0 |1 is obsolete|| Attachment #119390|0 |1 is obsolete|| --- Comment #15 from benli1392 at gmail.com --- Created attachment 119475 --> https://bugs.freedesktop.org/attachment.cgi?id=119475=edit xorg log with newer version of xf86-video-ati. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/31b7025e/attachment-0001.html>
[Bug 92518] Radeon 7870 XT Stalling Between Ring 0 and Ring 3
https://bugs.freedesktop.org/show_bug.cgi?id=92518 --- Comment #14 from benli1392 at gmail.com --- Created attachment 119474 --> https://bugs.freedesktop.org/attachment.cgi?id=119474=edit dmesg log with newer version of xf86-video-ati. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/d5295a77/attachment.html>
[Bug 92518] Radeon 7870 XT Stalling Between Ring 0 and Ring 3
https://bugs.freedesktop.org/show_bug.cgi?id=92518 --- Comment #13 from benli1392 at gmail.com --- I followed your recommendations and created a xorg.conf in /etc/X11/ and removed 20-radeon.conf from /etc/X11/xorg.conf.d/. DRI3 is also enabled when I added a repo with xf86-video-ati that is much more up to date: http://download.opensuse.org/repositories/home:/pontostroy:/X11/openSUSE_Tumbleweed/ It has gotten better, but it still does not work with a newer version of the driver. dmesg seems to have dumped a lot of information on the radeon driver. I am attaching an updated dmesg and xorg log. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/b142a78b/attachment.html>
[Bug 92860] [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved
https://bugs.freedesktop.org/show_bug.cgi?id=92860 --- Comment #2 from Shawn Starr --- >From a corrupted apitrace it spits out this: 521960: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 521960: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 521961: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 521961: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 521998: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 521998: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 521999: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 521999: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957720: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957720: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957721: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957721: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957750: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957750: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957751: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957751: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957780: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957780: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957781: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957781: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957810: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957810: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957811: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957811: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957840: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957840: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957841: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957841: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957870: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957870: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957871: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957871: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957900: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957900: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957901: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957901: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957930: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957930: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957931: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957931: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957960: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957960: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957961: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957961: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957990: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) 957990: warning: glGetError(glCopyImageSubData) = GL_INVALID_VALUE 957991: message: major api error 2: GL_INVALID_VALUE in glCopyImageSubData(unaligned src rectangle) The APItrace can be found here: https://drive.google.com/open?id=0Bze7CJKD12nObEZmVkxlclZwbjA Video of game rendering frames OK with ARB_copy_image reverted: https://www.youtube.com/watch?v=_sNCykCtcns Video of game rendering frames BAD with ARB_copy_image implemented: https://www.youtube.com/watch?v=GNMR6NoiCBg -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/d611c878/attachment.html>
[Bug 92860] [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved
https://bugs.freedesktop.org/show_bug.cgi?id=92860 Shawn Starr changed: What|Removed |Added Attachment #119470|0 |1 is obsolete|| --- Comment #1 from Shawn Starr --- Created attachment 119471 --> https://bugs.freedesktop.org/attachment.cgi?id=119471=edit Corruption seen in game (Screenshot #1) -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/6243ebb3/attachment.html>
[Bug 92860] [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved
https://bugs.freedesktop.org/show_bug.cgi?id=92860 Bug ID: 92860 Summary: [radeonsi][bisected] st/mesa: implement ARB_copy_image - Corruption in ARK Survival Evolved Product: Mesa Version: unspecified Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/radeonsi Assignee: dri-devel at lists.freedesktop.org Reporter: shawn.starr at rogers.com QA Contact: dri-devel at lists.freedesktop.org Created attachment 119470 --> https://bugs.freedesktop.org/attachment.cgi?id=119470=edit Corruption seen in game (Screenshot #1) I noticed certain textures were corrupted in color or for water, corrupted in reflection from light. Reverting this extension resolves corruption, the Game is OpenGL 3.3 and it seems this extension broke for OpenGL 3.3 backwards compat? Attached is a screenshot of the corruption seen -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20151108/12f39c55/attachment-0001.html>
[PATCH] drm/nouveau: Fix pre-nv50 pageflip events
Sorry for the late reply! Looking into it... -mario On 11/06/2015 06:19 PM, Thierry Reding wrote: > Cc += Mario Kleiner, Mario, can you take a look whether this proposed > solution makes sense and fixes the issues you were seeing back when you > posted the patch in commit: > > commit af4870e406126b7ac0ae7c7ce5751f25ebe60f28 > Author: Mario Kleiner > Date: Tue May 13 00:42:08 2014 +0200 > > drm/nouveau/kms/nv04-nv40: fix pageflip events via special case. > > Cards with nv04 display engine can't reliably use vblank > counts and timestamps computed via drm_handle_vblank(), as > the function gets invoked after sending the pageflip events. > > Fix this by defaulting to the old crtcid = -1 fallback path > on <= NV-50 cards, and only using the precise path on NV-50 > and later. > > Signed-off-by: Mario Kleiner > Signed-off-by: Ben Skeggs > Cc: # 3.13+ > > Do you happen to still have the setup around where you saw this? > > Thierry > > On Fri, Oct 30, 2015 at 10:55:40PM +0100, Daniel Vetter wrote: >> Apparently pre-nv50 pageflip events happen before the actual vblank >> period. Therefore that functionality got semi-disabled in >> >> commit af4870e406126b7ac0ae7c7ce5751f25ebe60f28 >> Author: Mario Kleiner >> Date: Tue May 13 00:42:08 2014 +0200 >> >> drm/nouveau/kms/nv04-nv40: fix pageflip events via special case. >> >> Unfortunately that hack got uprooted in >> >> commit cc1ef118fc099295ae6aabbacc8af94d8d8885eb >> Author: Thierry Reding >> Date: Wed Aug 12 17:00:31 2015 +0200 >> >> drm/irq: Make pipe unsigned and name consistent >> >> Trigering a warning when trying to sample the vblank timestamp for a >> non-existing pipe. There's a few ways to fix this: >> >> - Open-code the old behaviour, which just enshrines this slight >>breakage of the userspace ABI. >> >> - Revert Mario's commit and again inflict broken timestamps, again not >>pretty. >> >> - Fix this for real by delaying the pageflip TS until the next vblank >>interrupt, thereby making it accurate. >> >> This patch implements the third option. Since having a page flip >> interrupt that happens when the pageflip gets armed and not when it >> completes in the next vblank seems to be fairly common (older i915 hw >> works very similarly) create a new helper to arm vblank events for >> such drivers. >> >> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=106431 >> Cc: Thierry Reding >> Cc: Mario Kleiner >> Cc: Ben Skeggs >> Cc: Ilia Mirkin >> Signed-off-by: Daniel Vetter >> --- >> >> Note that due to lack of hw this is completely untested. But I think >> it's the right way to fix this. >> -Daniel >> --- >> drivers/gpu/drm/drm_irq.c | 56 >> ++- >> drivers/gpu/drm/nouveau/nouveau_display.c | 16 - >> include/drm/drmP.h| 4 +++ >> 3 files changed, 66 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c >> index 46dbc34b81ba..b3e1f58666a6 100644 >> --- a/drivers/gpu/drm/drm_irq.c >> +++ b/drivers/gpu/drm/drm_irq.c >> @@ -972,7 +972,8 @@ static void send_vblank_event(struct drm_device *dev, >> struct drm_pending_vblank_event *e, >> unsigned long seq, struct timeval *now) >> { >> -WARN_ON_SMP(!spin_is_locked(>event_lock)); >> +assert_spin_locked(>event_lock); >> + >> e->event.sequence = seq; >> e->event.tv_sec = now->tv_sec; >> e->event.tv_usec = now->tv_usec; >> @@ -985,6 +986,59 @@ static void send_vblank_event(struct drm_device *dev, >> } >> >> /** >> + * drm_arm_vblank_event - arm vblanke event after pageflip >> + * @dev: DRM device >> + * @pipe: CRTC index >> + * @e: the event to prepare to send >> + * >> + * A lot of drivers need to generate vblank events for the very next vblank >> + * interrupt. For example when the page flip interrupt happens when the page >> + * flip gets armed, but not when it actually executes within the next vblank >> + * period. This helper function implements exactly the required vblank >> arming >> + * behaviour. >> + * >> + * Caller must hold event lock. Caller must also hold a vblank reference >> for the >> + * event @e, which will be dropped when the next vblank arrives. >> + * >> + * This is the legacy version of drm_crtc_arm_vblank_event(). >> + */ >> +void drm_arm_vblank_event(struct drm_device *dev, unsigned int pipe, >> + struct drm_pending_vblank_event *e) >> +{ >> +struct timeval now; >> +unsigned int seq; >> + >> +assert_spin_locked(>event_lock); >> + >> +e->pipe = pipe; >> +list_add_tail(>base.link, >vblank_event_list); >> +} >> +EXPORT_SYMBOL(drm_arm_vblank_event); >> + >> +/** >> + * drm_arm_vblank_event - arm vblanke event after pageflip >> + * @crtc: the source CRTC of the vblank event >> + * @e: the event to send >> + * >> + * A lot of drivers need to generate vblank events for the very next