Opened 4 years ago

Last modified 3 years ago

#12221 new bug

Refresh rate -setting has no effect. radeon_hd card.

Reported by: anttiv Owned by: kallisti5
Priority: normal Milestone: R1
Component: Drivers/Graphics/radeon_hd Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: x86-64

Description

I have a radeon 4x card (RV710), connected via HDMI to an Acer MT230HM display. When I go and change the resolution and refresh rate, only the resolution -part has any effect, refreshrate changes according to .. something. No matter what I set it at any resolution, it's 100Hz @ 1024x768, 75Hz @ 1360x768 and 1280x1024. When I change to 1920x1080 (And have 60Hz selected in the dropdown), my display goes to "Not Supported" until it resets to the last display mode (which obviously works). My display is capable at 1920x1080@60Hz, which it'll happily do with the same components and connections when dualbooted into Xubuntu 15.x

To clarify: I can boot and everything works - sort of. I can not choose the refresh rate on any resolution.

I used to have the same card working in an earlier Nightly (sadly I forgot which one) and R1A4.

Attachments (4)

drivers.txt (1.3 KB) - added by anttiv 4 years ago.
listimage (drivers)
listdev.txt (2.0 KB) - added by anttiv 4 years ago.
listdev
listusb.txt (16.3 KB) - added by anttiv 4 years ago.
listusb
syslog.txt (172.1 KB) - added by anttiv 4 years ago.
syslog

Download all attachments as: .zip

Change History (20)

Changed 4 years ago by anttiv

Attachment: drivers.txt added

listimage (drivers)

Changed 4 years ago by anttiv

Attachment: listdev.txt added

listdev

Changed 4 years ago by anttiv

Attachment: listusb.txt added

listusb

Changed 4 years ago by anttiv

Attachment: syslog.txt added

syslog

comment:1 Changed 4 years ago by anttiv

Forgot: Running version "Walter (hrev49421)", was using hrev49416 where I noticed the bug. Changing to hrev49421 didn't help.

gcc2hybrid, x86-64 architechture.

comment:2 Changed 4 years ago by diver

Component: Audio & VideoDrivers/Graphics/radeon_hd
Keywords: refresh rate radeon removed
Milestone: UnscheduledR1
Owner: changed from nobody to kallisti5

comment:3 Changed 4 years ago by anttiv

Just confirming that with the same system (with nothing changed but boot partition) booted to R1A4, everything is working perfectly. I can set videomode 1920x1080@60Hz via Screen applet (using the radeon_hd driver) and it works.

comment:4 Changed 4 years ago by kallisti5

oddly, everything looks "ok" from the syslogs:

================================
1920x1080

2938	KERN: radeon_hd: radeon_set_display_mode: pll 1 selected for connector 1
2939	KERN: radeon_hd: pll_setup_flags: CRTC: 0, PLL: 1
2940	KERN: radeon_hd: pll_adjust: table 1.2
2941	KERN: radeon_hd: pll_adjust: was: 172798, now: 172790
2942	KERN: radeon_hd: pll_compute_post_divider: vco = 600000
2943	KERN: radeon_hd: pll_compute_post_divider: postDiv = 3
2944	KERN: radeon_hd: pll_compute: using minimum reference divider
2945	KERN: radeon_hd: pll_compute: performing fractional feedback calculations
2946	KERN: radeon_hd: pll_compute: Calculated pixel clock of 172800 based on:
2947	KERN: radeon_hd: pll_compute:   referenceFrequency: 27000; referenceDivider: 5
2948	KERN: radeon_hd: pll_compute:   feedbackDivider: 96; feedbackDividerFrac: 0
2949	KERN: radeon_hd: pll_compute:   postDivider: 3
2950	KERN: radeon_hd: pll_compute: pixel clock 172790 was changed to 172800
2951	KERN: radeon_hd: pll_set: table 1.3
2952	KERN: radeon_hd: pll_set: set adjusted pixel clock 172800 (was 172798)
2953	KERN: radeon_hd: display_crtc_ss
2954	KERN: radeon_hd: display_crtc_set_dtd called to do 1920x1080
2955	KERN: radeon_hd: display_crtc_fb_set: Framebuffer at: 0x0
2956	KERN: radeon_hd: display_crtc_fb_set: Set SurfaceAddress High: 0x0
2957	KERN: radeon_hd: display_crtc_fb_set: Set SurfaceAddress: 0x0
2958	KERN: radeon_hd: display_crtc_fb_set: fb: 1920x1080 (32 bpp)
2959	KERN: radeon_hd: display_crtc_fb_set: fb pitch: 1920
2960	KERN: radeon_hd: display_avivo_crtc_load_lut: crtcID 0

3001	KERN: radeon_hd: D1CRTC_STATUS        Value: 0x20002
3002	KERN: radeon_hd: D2CRTC_STATUS        Value: 0x10009
3003	KERN: radeon_hd: D1CRTC_CONTROL       Value: 0x410311
3004	KERN: radeon_hd: D2CRTC_CONTROL       Value: 0x400310
3005	KERN: radeon_hd: D1GRPH_ENABLE        Value: 0x1
3006	KERN: radeon_hd: D2GRPH_ENABLE        Value: 0x1
3007	KERN: radeon_hd: D1SCL_ENABLE         Value: 0x0
3008	KERN: radeon_hd: D2SCL_ENABLE         Value: 0x0
3009	KERN: radeon_hd: D1CRTC_BLANK_CONTROL Value: 0x0
3010	KERN: radeon_hd: D2CRTC_BLANK_CONTROL Value: 0x0



================================
1360x768

3033	KERN: radeon_hd: radeon_set_display_mode: pll 1 selected for connector 1
3034	KERN: radeon_hd: pll_setup_flags: CRTC: 0, PLL: 1
3035	KERN: radeon_hd: pll_adjust: table 1.2
3036	KERN: radeon_hd: pll_adjust: was: 85478, now: 85470
3037	KERN: radeon_hd: pll_compute_post_divider: vco = 600000
3038	KERN: radeon_hd: pll_compute_post_divider: postDiv = 7
3039	KERN: radeon_hd: pll_compute: using minimum reference divider
3040	KERN: radeon_hd: pll_compute: performing fractional feedback calculations
3041	KERN: radeon_hd: pll_compute: Calculated pixel clock of 85628 based on:
3042	KERN: radeon_hd: pll_compute:   referenceFrequency: 27000; referenceDivider: 5
3043	KERN: radeon_hd: pll_compute:   feedbackDivider: 111; feedbackDividerFrac: 0
3044	KERN: radeon_hd: pll_compute:   postDivider: 7
3045	KERN: radeon_hd: pll_compute: pixel clock 85470 was changed to 85628
3046	KERN: radeon_hd: pll_set: table 1.3
3047	KERN: radeon_hd: pll_set: set adjusted pixel clock 85628 (was 85478)
3048	KERN: radeon_hd: display_crtc_ss
3049	KERN: radeon_hd: display_crtc_set_dtd called to do 1360x768
3050	KERN: radeon_hd: display_crtc_fb_set: Framebuffer at: 0x0
3051	KERN: radeon_hd: display_crtc_fb_set: Set SurfaceAddress High: 0x0
3052	KERN: radeon_hd: display_crtc_fb_set: Set SurfaceAddress: 0x0
3053	KERN: radeon_hd: display_crtc_fb_set: fb: 1360x768 (32 bpp)
3054	KERN: radeon_hd: display_crtc_fb_set: fb pitch: 1408
3055	KERN: radeon_hd: display_avivo_crtc_load_lut: crtcID 0


3096	KERN: radeon_hd: D1CRTC_STATUS        Value: 0x20002
3097	KERN: radeon_hd: D2CRTC_STATUS        Value: 0x10009
3098	KERN: radeon_hd: D1CRTC_CONTROL       Value: 0x410311
3099	KERN: radeon_hd: D2CRTC_CONTROL       Value: 0x400310
3100	KERN: radeon_hd: D1GRPH_ENABLE        Value: 0x1
3101	KERN: radeon_hd: D2GRPH_ENABLE        Value: 0x1
3102	KERN: radeon_hd: D1SCL_ENABLE         Value: 0x0
3103	KERN: radeon_hd: D2SCL_ENABLE         Value: 0x0
3104	KERN: radeon_hd: D1CRTC_BLANK_CONTROL Value: 0x0
3105	KERN: radeon_hd: D2CRTC_BLANK_CONTROL Value: 0x0

comment:5 Changed 4 years ago by kallisti5

could you get the mode-line of 1920x1080 under linux?

grep Modeline /var/log/Xorg.0.log

comment:6 Changed 4 years ago by anttiv

Can you see from that what refresh rate it should be applying? I'm asking for it to do 60Hz on both occasions, but I know for sure it does 75Hz on the 1360x768 one. To add mode the 'screenmode' command shows 60Hz on the 1360x768, although my display then comes up as 75Hz.

Yes I can do that. I can get you any information from R1A4 also (where everything IS working).

comment:7 Changed 4 years ago by anttiv

Here's paste of the output from that under Xubuntu 15:

http://pastebin.com/NgZCeu6C

Do note though: Although under Xubuntu that resolution is working, I need to force my display (since it is a TV) to "Underscan", or the image area is wrong.

Under Haiku R1A4, I can keep it on "Auto" and it works fine when using 1920x1080 resolution.

comment:8 Changed 4 years ago by kallisti5

Keep in mind that R1A4 was likely using vesa and not radeon_hd for your card... so any tests on R1A4 are irrelevant.

With vesa, if your display wants a modeline that the card's vesa bios ROM isn't aware of mode setting will never work. If it did work under vesa you lucked out ;-)

comment:9 Changed 4 years ago by anttiv

I never managed to get 1920x1080 under VESA, sadly. (because that would be enough for me, Haiku's VESA driver is quite good for my purposes.)

Anyway, under R1A4 (as I have it installed here, on a different partition), listimage | grep radeon produces:

1022 /boot/system/add-ons/kernel/drivers/dev/graphics/radeon_hd 0x81136000 0x8113c000 0 0 1039 /boot/system/add-ons/accelerants/radeon_hd.accelerant 0x22a5000 0x22bf000 0 0

so I *think* the radeon_hd driver is in use here.

comment:10 Changed 4 years ago by kallisti5

interesting... there were some changes to how Haiku calculates best modelines (outside of radeon_hd)... I wonder if that was a factor.

Here are the 1920x1080 modelines your display is offering over EDID:

Modeline "1920x1080"x60.0  172.80  1920 2040 2248 2576  1080 1081 1084 1118 -hsync +vsync (67.1 kHz e)
Modeline "1920x1080"x0.0   74.25  1920 2558 2602 2750  1080 1084 1089 1125 +hsync +vsync (27.0 kHz e)
Modeline "1920x1080"x0.0   74.25  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (33.8 kHz e)

We're choosing the first one because it is the closest to 60.

Lets see which one Linux is choosing:

grep _active /var/log/Xorg.0.log

comment:11 Changed 4 years ago by anttiv

Ok, here's the output:

[    29.824] (II) RADEON(0): h_active: 1280  h_sync: 1344  h_sync_end 1472 h_blank_end 1664 h_border: 0
[    29.824] (II) RADEON(0): v_active: 768  v_sync: 771  v_sync_end 778 v_blanking: 798 v_border: 0
[    29.824] (II) RADEON(0): h_active: 1360  h_sync: 1424  h_sync_end 1536 h_blank_end 1792 h_border: 0
[    29.824] (II) RADEON(0): v_active: 768  v_sync: 771  v_sync_end 777 v_blanking: 795 v_border: 0
[    29.824] (II) RADEON(0): h_active: 1920  h_sync: 2008  h_sync_end 2052 h_blank_end 2200 h_border: 0
[    29.824] (II) RADEON(0): v_active: 1080  v_sync: 1084  v_sync_end 1089 v_blanking: 1125 v_border: 0
[    29.824] (II) RADEON(0): h_active: 1920  h_sync: 2448  h_sync_end 2492 h_blank_end 2640 h_border: 0
[    29.824] (II) RADEON(0): v_active: 540  v_sync: 542  v_sync_end 547 v_blanking: 562 v_border: 0
[    29.824] (II) RADEON(0): h_active: 1920  h_sync: 2008  h_sync_end 2052 h_blank_end 2200 h_border: 0
[    29.824] (II) RADEON(0): v_active: 540  v_sync: 542  v_sync_end 547 v_blanking: 562 v_border: 0
[    29.824] (II) RADEON(0): h_active: 1280  h_sync: 1720  h_sync_end 1760 h_blank_end 1980 h_border: 0
[    29.824] (II) RADEON(0): v_active: 720  v_sync: 725  v_sync_end 730 v_blanking: 750 v_border: 0
[    29.824] (II) RADEON(0): h_active: 1280  h_sync: 1390  h_sync_end 1430 h_blank_end 1650 h_border: 0
[    29.824] (II) RADEON(0): v_active: 720  v_sync: 725  v_sync_end 730 v_blanking: 750 v_border: 0

comment:12 Changed 4 years ago by kallisti5

yup. Linux is choosing the last mode line. i'd bet if you set the first mode line on Linux you would get the same result as Haiku.

Now... why Linux chooses the last one.. no clue. However if the display advertises mode-lines that it doesn't support, that would be a bug in the tv's firmware.

comment:13 Changed 4 years ago by anttiv

That would be weird for the display to do alright :)

Anyway, if these are any help, I made pastebins of syslog from R1A4 (obviously on the same hardware), where everything is working:

pastebin.com/5KCqG4UK

and a 'grep MODE: syslog' if that'll help:

pastebin.com/H7Ptf08X

EDIT: Just installed Nightly hrev47002 and refresh rate DOES work on this build. Currently running at 1920x1080@60Hz just fine.

Here's a syslog of this version: http://pastebin.com/YGph5BNw

Last edited 4 years ago by anttiv (previous) (diff)

comment:14 Changed 4 years ago by anttiv

I've been reading a *bunch* of syslogs.. :) And installing/re-installing a bunch of nightlies... These are all x86-gcc2-hybrid builds (As is the R1A4), so the problem appears also there, and not only on that one x86-64 build.

Anyway, all builds that I tested: hrev47002 - working hrev47204 - working hrev47253 - working hrev47259 - working hrev47314 - not working hrev47380 - not working hrev47479 - not working hrev47902 - not working

so something happened betweehn 259 and 314 that broke the refreshrate selection (at least on my system). As you well know hrev47270 included 'Rework PLL picking code' and there's some radeon stuff edited in 260-ish, plus a modification to display modes in 304.

I can't download any builds between 259 and 314, but I'd bet a great deal that one of those (I'd bet hrev47270 ) is the one "responsible".

Unfortunately I have no idea how to fix it, now why it is happening here. I just know that on 259 everything (regarding to resolutions and refresh rates, obviously) works fine and on 314 it doesn't anymore.

I can provide any number of logs and outputs you require, just tell me what you want (And if it's obscure, maybe tell me how to get it :) I know my way around the normal *nix installations and have basic knowledge of where Haiku stores stuff, but I'm still a user, not a developer. [sadly, I'd like to be, but hey..]. Anyways, although I don't exactly NEED this functionality, I'd still like to have it and really want to help Haiku in any way).

So, anything you need, just tell. Also noteworthy: this is a testing/goofing around machine which isn't really used in anything important (Minecraft server being the most :D ) so if you need me to run any programs, I'm up for it. I don't need to worry if something happens to this system, I can always just reinstall everything. (heck, I've been wiping and installing multiple versions of Haiku just today...)

comment:15 Changed 4 years ago by anttiv

Just to confirm / Add info: Issue still exist with entirely different computer running hrev49548 (x86_gcc2_hybrid)

Radeon HD3650, BenQ 21" 1920x1080-capable monitor. Intel Core2 CPU.

Can provide logs and outputs from any needed Haiku builds, or relevant logs from a linux bootable usb (computer in question only has Haiku installed, no other OSes).

comment:16 Changed 3 years ago by kallisti5

Please provide logs. The chances that it is the exact same issue on a completely different card / monitor are minimal.

Note: See TracTickets for help on using tickets.