[Nouveau] [PATCH 2/3] drm/nouveau/kms/nv50-: Report max cursor size to userspace
Uwe Sauter
uwe.sauter.de at gmail.com
Sun Feb 28 17:59:50 UTC 2021
Am 28.02.21 um 18:02 schrieb Ilia Mirkin:
> On Sun, Feb 28, 2021 at 10:10 AM Uwe Sauter <uwe.sauter.de at gmail.com> wrote:
>>
>>
>>
>> Am 27.02.21 um 22:26 schrieb Ilia Mirkin:
>>> On Sat, Feb 27, 2021 at 7:28 AM Uwe Sauter <uwe.sauter.de at gmail.com> wrote:
>>>>
>>>> I can also report that the modesetting ddx that comes with xorg-server 1.20.10-3 (Arch Linux package) shows this kind of
>>>> cursor-cut-into-horizontal-stripes behavior. Changing to xf86-video-nouveau 1.0.17-1 solves this issue. But nouveau has
>>>> issues with Mate 1.24 (as discussed earlier this month).
>>>>
>>>> My hardware:
>>>> # lspci -s 3:0.0 -v
>>>> 03:00.0 VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 710] (rev a1) (prog-if 00 [VGA controller])
>>>> Subsystem: ASUSTeK Computer Inc. GT710-4H-SL-2GD5
>>>> Flags: bus master, fast devsel, latency 0, IRQ 36, IOMMU group 12
>>>> Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
>>>> Memory at fff0000000 (64-bit, prefetchable) [size=128M]
>>>> Memory at fff8000000 (64-bit, prefetchable) [size=32M]
>>>> I/O ports at f000 [size=128]
>>>> Expansion ROM at fc000000 [disabled] [size=512K]
>>>> Capabilities: [60] Power Management version 3
>>>> Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
>>>> Capabilities: [78] Express Legacy Endpoint, MSI 00
>>>> Capabilities: [100] Virtual Channel
>>>> Capabilities: [128] Power Budgeting <?>
>>>> Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
>>>> Capabilities: [900] Secondary PCI Express
>>>> Kernel driver in use: nouveau
>>>> Kernel modules: nouveau
>>>>
>>>>
>>>> If I can help in any way please let me know.
>>>
>>> Thanks, that's good info. Simon - you originally said that everything
>>> looked good on your GK208, so a retest would be super.
>>>
>>> I just double-checked on a GP108 (with an older kernel, but same idea
>>> should apply), and it seems like 256x256 cursors are fine there.
>>> However the display logic has gone through some ideally no-op updates
>>> since that kernel version, but there could very easily be issues.
>>>
>>> Can you try Alex's patch to modetest and confirm that you see issues
>>> with modetest? If so, can you (and maybe Alex as well) try an older
>>> kernel (I'm on 5.6) and see if modetest behaves well there. [The patch
>>> in question was to expose 256x256 as the 'preferred' size, but support
>>> for the larger cursors has been around for a while.] Alex - if you
>>> have time, same question to you.
>>>
>>> You can find the patch here:
>>> https://lists.x.org/archives/nouveau/2021-February/037992.html
>>
>> I had to install a parallel Arch Linux to my existing production system in order to keep it clean from all the
>> development stuff.
>>
>> System summary (most recent):
>> AMD Ryzen 3 3100
>> Gigabyte B550M S2H with BIOS F13c
>> Asus GT710-4H-SL-2GD5 (GK208B [GeForce GT 710] (rev a1)) using nouveau kernel module
>> 32GB DDR4-3200MHz ECC
>>
>> libdrm 2.4.104-1
>> linux 5.11.2.arch1-1
>> mesa 20.3.4-3
>> xf86-video-nouveau 1.0.17-1
>>
>>
>>
>> I built libdrm 2.4.104.r16.ga9bb32cf in order to get modetest.
>>
>> With unmodified kernel / modetest (cw=64, ch=64) I call:
>>
>> $ ./modetest -c |grep '^[0-9]\|preferred'
>> 85 86 connected HDMI-A-1 530x300 40 86
>> #0 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: preferred, driver
>> 87 0 disconnected HDMI-A-2 0x0 0 88
>> 89 0 disconnected HDMI-A-3 0x0 0 90
>> 91 0 disconnected HDMI-A-4 0x0 0 92
>>
>> ./modetest -s 85:1920x1080 -C
>> trying to open device 'i915'...failed
>> trying to open device 'amdgpu'...failed
>> trying to open device 'radeon'...failed
>> trying to open device 'nouveau'...done
>> setting mode 1920x1080-60.00Hz on connectors 85, crtc 50
>> starting cursor
>> ^C
>>
>> This shows several things:
>> * There is a moving gray, half transparent square bouncing around. I believe that this is
>> the mentioned cursor.
>>
>> * The cursor movement happens at various speeds, sometimes staying half a second on the
>> same position to then move quite fast to another, then slowing down.
>>
>> * The cursor is flickering.
>>
>> * When (forcefully) ending the test the screen is not properly reset, leaving the
>> previous content in a state similar to the phenomenon with the mouse cursor that stated
>> this discussion. On my FullHD display the console output is sliced horizontally and
>> offset with about 1/5th of the screen width.
>>
>> This also happens on my other machine with a Xeon E3-1245 v3 with integrated graphics on a ASRock C226 WS, using the
>> i915 kernel module and same software versions as above.
>>
>> Applying Alex' patch with (cw=128, ch=128) shows a cursor that contains the same test pattern as is shown in the
>> background. The behavior is as jumpy and flickery as it was with size 64.
>> When killing the test the last position of the cursor still shows the test pattern while the background is again sliced
>> and shuffled horizontally.
>>
>> Setting the size to 256 shows an even larger cursor. It shows the same jumpy and flickery behavior as the other two. The
>> cursor itself also shows a horizontal sliced in the lower half. After killing the test the cursor's last position still
>> shows the test pattern while the background is sliced.
>>
>> This testing was all conducted with packages from the Arch Linux distribution (but for modetest).
>>
>> Questions:
>>
>> 1) Is this jumpy and flickery behavior expected or should the cursor move smoothly?
>
> Good question. It's definitely jumpy/flickery for me too. I haven't
> looked at why, but I wouldn't worry about it. I suspect it has to do
> with the mechanics of how it causes the cursor to be moved.
>
>>
>> 2) With unmodified modetest, what should the cursor look like? Without further inspection
>> of the code I suspect that the change from UTIL_PATTERN_PLAIN to UTIL_PATTERN_SMPTE
>> changed the cursor's appearance.
>
> The PLAIN pattern is just gray, which isn't necessarily a great test
> to see visual corruption.
>
>>
>> 4) How long is modetest expected to run? On the first run I let it test for over 10min
>> before deciding to kill it.
>
> Until you hit enter (or escape or maybe any key, I forget).
>
>>
>> 5) Is modetest expected to reset the display to the state it was before? Why doesn't it
>> do that when being killed?
>
> No. You can switch vt's back and forth to restore. It's just a test
> application. It's unfortunately not an entirely trivial thing to do.
>
>>
>> 6) Where do you expect this bug to come from? Kernel nouveau driver, modesetting ddx,
>> nouveau ddx?
>
> modetest interacts with the kernel directly. The bug is most likely in
> the hardware, and we should just not use the 256x256 size even though
> allegedly the hw supports it. But perhaps the kernel screws something
> up.
>
>>
>> 7) Any proposal what kernel to test next?
>
> If you could test modetest with 256x256 cursor on a pre-5.9 kernel and
> ensure that you see the same corruption in the cursor image, that'd
> confirm that we didn't just screw something up in the macro rework
> which landed in 5.9, vs a hw issue.
Ok, two more kernels tested.
5.10.19:
* modetest same as 5.11.2
* mouse pointer in X session is ok (both modesetting ddx and nouveau ddx)
* (Mate issue does appear with nouveau ddx but not with modesetting ddx)
5.4.101:
* modetest connector ID changed from 85 to 69
* other than that same as 5.11.2
* mouse pointer in X session is ok (both modesetting ddx and nouveau ddx)
* (Mate issue does appear with nouveau ddx but not with modesetting ddx)
Summary:
5.4.101 | 5.10.19 | 5.11.2
modetest-64 seems ok | seems ok | seems ok
modetest-128 seems ok | seems ok | seems ok
modetest-256 sliced | sliced | sliced
X mouse pointer ok | ok | sliced
(modesetting ddx)
X mouse pointer ok | ok | ok
(nouveau ddx)
Really strange that the issue only appears on 5.11 on my hardware.
>
> Presumably the corruption you refer to in the cursor image at 256x256
> is similar to what you see with Xorg + modesetting?
In X the mouse pointer is sliced and somehow wraps in vertical direction so that
the tip of the arrow is about 1/3 from the top.
The sclicing in the modetest cursor appears in the area from about 1/2 to 3/4 from
the top of the cursor.
If it is any help I can photos.
Also, if I should test more kernels I can do that.
>
> Thanks for your excellent testing!
You're welcome.
Regards,
Uwe
>
> Cheers,
>
> -ilia
>
More information about the Nouveau
mailing list