screen update problems with Intel HD 4600 + virtual screen

Krzysztof Halasa khc at pm.waw.pl
Mon Jun 23 02:33:52 PDT 2014


Chris Wilson <chris at chris-wilson.co.uk> writes:

>> switch to mode 1920x1200 at 60.0 on pipe 0 using HDMI1, position (2176, 7), rotation normal
>> 
>> Now I scroll down 1 pixel:
>> switch to mode 1920x1200 at 60.0 on pipe 0 using HDMI1, position (2176, 8), rotation normal
>> 
>> and immediately screen isn't updated correctly. For example, an
>> application window is created normally, but when I move it (the app
>> window) down, the top part of the window, max 8 pixels, is left on the
>> screen (the moved window is ok). It almost looks like the code somewhere
>> adds the vertical screen offset twice.
>
> 8 is significant as it is the tile row height. The kernel tries to be
> smart and extract the panning from the surface address so that we can
> display a larger virtual framebuffer than the hardware can actually use.
>
> Can you reproduce the about sequence with drm.debug=6 dmesg (i.e.
> echo 6 > /sys/module/drm/parameters/debug ; xrandr --panning... ;
> dmesg)?

I'm panning with the mouse. Doesn't look like a lot of output:

no problem yet:
[617996.928] (II) intel(0): switch to mode 1920x1200 at 60.0 on pipe 0 using HDMI1, position (2176, 7), rotation normal

[618556.836459] [drm:drm_mode_setcrtc], [CRTC:3]
[618556.836472] [drm:drm_mode_setcrtc], [CONNECTOR:12:HDMI-A-1]
[618556.836478] [drm:intel_crtc_set_config], [CRTC:3] [FB:55] #connectors=1 (x y) (2176 7)
[618556.836484] [drm:intel_set_config_compute_mode_changes], computed changes for [CRTC:3], mode_changed=0, fb_changed=1
[618556.836489] [drm:intel_modeset_stage_output_state], [CONNECTOR:12:HDMI-A-1] to [CRTC:3]
[618556.836500] [drm:ironlake_update_plane], Writing base 013CA000 0000D200 0 7 16384
[618556.836511] [drm:i915_setup_compression], reserved 39583744 bytes of contiguous stolen space for FBC
[618556.836515] [drm:intel_update_fbc], disabling active FBC for update
[618556.836520] [drm:ironlake_disable_fbc], disabled FBC
[618556.836594] [drm:intel_crtc_cursor_set], cursor off
[618556.885876] [drm:gen7_enable_fbc], enabled fbc on plane A
[618565.988566] [drm:intel_crtc_cursor_set], cursor off


problems:
[618016.920] (II) intel(0): switch to mode 1920x1200 at 60.0 on pipe 0 using HDMI1, position (2176, 8), rotation normal

[618576.846085] [drm:drm_mode_setcrtc], [CRTC:3]
[618576.846094] [drm:drm_mode_setcrtc], [CONNECTOR:12:HDMI-A-1]
[618576.846098] [drm:intel_crtc_set_config], [CRTC:3] [FB:55] #connectors=1 (x y) (2176 8)
[618576.846103] [drm:intel_set_config_compute_mode_changes], computed changes for [CRTC:3], mode_changed=0, fb_changed=1
[618576.846106] [drm:intel_modeset_stage_output_state], [CONNECTOR:12:HDMI-A-1] to [CRTC:3]
[618576.846114] [drm:ironlake_update_plane], Writing base 013CA000 FFFFFFFFFFFF1200 0 0 16384
[618576.846122] [drm:i915_setup_compression], reserved 39583744 bytes of contiguous stolen space for FBC
[618576.846125] [drm:intel_update_fbc], disabling active FBC for update
[618576.846128] [drm:ironlake_disable_fbc], disabled FBC
[618576.846181] [drm:intel_crtc_cursor_set], cursor off
[618576.895986] [drm:gen7_enable_fbc], enabled fbc on plane A
[618588.640637] [drm:intel_crtc_cursor_set], cursor off

The kernel is a normal Fedora 20 - Linux 3.14.7-200.fc20.x86_64.

The sequence:
echo 6 > /sys/module/drm/parameters/debug; xrandr --output HDMI1 --panning 4096x2404; dmesg
(i.e., only panning setup but no actual panning) produces:

[619598.009625] [drm:drm_mode_getconnector], [CONNECTOR:9:?]
[619598.009631] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:9:VGA-1]
[619598.009634] [drm:intel_crt_detect], [CONNECTOR:9:VGA-1] force=1
[619598.009638] [drm:intel_ironlake_crt_detect_hotplug], ironlake hotplug adpa=0xf40000, result 0
[619598.009639] [drm:intel_crt_detect], CRT not detected via hotplug
[619598.009807] [drm:gmbus_xfer], GMBUS [i915 gmbus vga] NAK for addr: 0050 r(1)
[619598.009810] [drm:drm_do_probe_ddc_edid], drm: skipping non-existent adapter i915 gmbus vga
[619598.009812] [drm:intel_crt_get_edid], CRT GMBUS EDID read failed, retry using GPIO bit-banging
[619598.009814] [drm:intel_gmbus_force_bit], enabling bit-banging on i915 gmbus vga. force bit now 1
[619598.010186] [drm:drm_do_probe_ddc_edid], drm: skipping non-existent adapter i915 gmbus vga
[619598.010188] [drm:intel_gmbus_force_bit], disabling bit-banging on i915 gmbus vga. force bit now 0
[619598.010189] [drm:intel_crt_detect_ddc], CRT not detected via DDC:0x50 [no valid EDID found]
[619598.010191] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:9:VGA-1] disconnected
[619598.010202] [drm:drm_mode_getconnector], [CONNECTOR:12:?]
[619598.010204] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:12:HDMI-A-1]
[619598.010208] [drm:intel_hdmi_detect], [CONNECTOR:12:HDMI-A-1]
[619598.060006] [drm:drm_edid_to_eld], ELD monitor EA241WM
[619598.060008] [drm:drm_edid_to_eld], ELD size 7, SAD count 0
[619598.060022] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:12:HDMI-A-1] probed modes :
[619598.060024] [drm:drm_mode_debug_printmodeline], Modeline 21:"1920x1200" 60 154000 1920 1968 2000 2080 1200 1203 1209 1235 0x48 0x9
[619598.060025] [drm:drm_mode_debug_printmodeline], Modeline 26:"1920x1080" 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x40 0x5
[the list of modes]
[619598.060060] [drm:drm_mode_debug_printmodeline], Modeline 40:"720x400" 70 28320 720 738 846 900 400 412 414 449 0x40 0x6
[619598.060070] [drm:drm_mode_getconnector], [CONNECTOR:12:?]
[619598.060087] [drm:drm_mode_getconnector], [CONNECTOR:16:?]
[619598.060088] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:16:DP-1]
[619598.060090] [drm:intel_dp_detect], [CONNECTOR:16:DP-1]
[619598.060091] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:16:DP-1] disconnected
[619598.060093] [drm:drm_mode_getconnector], [CONNECTOR:17:?]
[619598.060094] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:17:HDMI-A-2]
[619598.060095] [drm:intel_hdmi_detect], [CONNECTOR:17:HDMI-A-2]
[619598.060270] [drm:gmbus_xfer], GMBUS [i915 gmbus dpc] NAK for addr: 0050 r(1)
[619598.060271] [drm:drm_do_probe_ddc_edid], drm: skipping non-existent adapter i915 gmbus dpc
[619598.060272] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:17:HDMI-A-2] disconnected
[619598.060274] [drm:drm_mode_getconnector], [CONNECTOR:19:?]
[619598.060275] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:19:HDMI-A-3]
[619598.060276] [drm:intel_hdmi_detect], [CONNECTOR:19:HDMI-A-3]
[619598.060453] [drm:gmbus_xfer], GMBUS [i915 gmbus dpd] NAK for addr: 0050 r(1)
[619598.060453] [drm:drm_do_probe_ddc_edid], drm: skipping non-existent adapter i915 gmbus dpd
[619598.060454] [drm:drm_helper_probe_single_connector_modes_merge_bits], [CONNECTOR:19:HDMI-A-3] disconnected
[619598.066673] [drm:drm_mode_addfb], [FB:55]
[619598.066687] [drm:drm_mode_setcrtc], [CRTC:3]
[619598.066690] [drm:drm_mode_setcrtc], [CONNECTOR:12:HDMI-A-1]
[619598.066691] [drm:intel_crtc_set_config], [CRTC:3] [FB:55] #connectors=1 (x y) (1394 0)
[619598.066693] [drm:intel_set_config_compute_mode_changes], computed changes for [CRTC:3], mode_changed=0, fb_changed=1
[619598.066694] [drm:intel_modeset_stage_output_state], [CONNECTOR:12:HDMI-A-1] to [CRTC:3]
[619598.082984] [drm:ironlake_update_plane], Writing base 013CA000 FFFFFFFFFFFF75C8 114 0 16384
[619598.092913] [drm:i915_setup_compression], reserved 39583744 bytes of contiguous stolen space for FBC
[619598.092915] [drm:intel_update_fbc], disabling active FBC for update
[619598.092916] [drm:ironlake_disable_fbc], disabled FBC
[619598.093139] [drm:drm_mode_setcrtc], [CRTC:3]
[619598.093141] [drm:drm_mode_setcrtc], [CONNECTOR:12:HDMI-A-1]
[619598.093142] [drm:intel_crtc_set_config], [CRTC:3] [FB:55] #connectors=1 (x y) (2176 1204)
[619598.093143] [drm:intel_set_config_compute_mode_changes], computed changes for [CRTC:3], mode_changed=0, fb_changed=1
[619598.093144] [drm:intel_modeset_stage_output_state], [CONNECTOR:12:HDMI-A-1] to [CRTC:3]
[619598.093146] [drm:ironlake_update_plane], Writing base 013CA000 00001200 0 4 16384
[619598.093149] [drm:i915_setup_compression], reserved 39583744 bytes of contiguous stolen space for FBC
[619598.093149] [drm:intel_cancel_fbc_work], cancelling pending FBC enable
[619598.093236] [drm:drm_mode_setcrtc], [CRTC:3]
[619598.093238] [drm:drm_mode_setcrtc], [CONNECTOR:12:HDMI-A-1]
[619598.093238] [drm:intel_crtc_set_config], [CRTC:3] [FB:55] #connectors=1 (x y) (0 0)
[619598.093239] [drm:intel_set_config_compute_mode_changes], computed changes for [CRTC:3], mode_changed=0, fb_changed=1
[619598.093240] [drm:intel_modeset_stage_output_state], [CONNECTOR:12:HDMI-A-1] to [CRTC:3]
[619598.093242] [drm:ironlake_update_plane], Writing base 013CA000 00000000 0 0 16384
[619598.093244] [drm:i915_setup_compression], reserved 39583744 bytes of contiguous stolen space for FBC
[619598.093245] [drm:intel_cancel_fbc_work], cancelling pending FBC enable
[619598.093805] [drm:drm_mode_setcrtc], [CRTC:3]
[619598.093808] [drm:drm_mode_setcrtc], [CONNECTOR:12:HDMI-A-1]
[619598.093809] [drm:intel_crtc_set_config], [CRTC:3] [FB:55] #connectors=1 (x y) (2127 0)
[619598.093810] [drm:intel_set_config_compute_mode_changes], computed changes for [CRTC:3], mode_changed=0, fb_changed=1
[619598.093812] [drm:intel_modeset_stage_output_state], [CONNECTOR:12:HDMI-A-1] to [CRTC:3]
[619598.097471] [drm:ironlake_update_plane], Writing base 013CA000 FFFFFFFFFFFF213C 79 0 16384
[619598.097474] [drm:i915_setup_compression], reserved 39583744 bytes of contiguous stolen space for FBC
[619598.097475] [drm:intel_cancel_fbc_work], cancelling pending FBC enable
[619598.146986] [drm:gen7_enable_fbc], enabled fbc on plane A


Thanks for looking into this.
-- 
Krzysztof Halasa


More information about the xorg mailing list