[dg2] [A770] slow buffers isl_gfx125_buffer_fill_state_s and mi_copy_no_unref
Sys Info
- linux 6.1-rc8 (drm-tip - void linux)
- wine 7.20
- dxvk 2.0 (and 1.10.3)
- mesa 22.3.1
- Intel Arc A770 (
0a:00.0 VGA compatible controller: Intel Corporation Device 56a0 (rev 08)
)
Issue
In several games there can be hiccups when loading new assets/buffers. But this is particularly bad in re2 where the fps goes from 70 in a 'bad' area to 25 in the station main lobby. Turning the camera seems to make it worse. No combinations of video settings I've tried fix this.
Using AMDuProf shows these functions taking up most of CPU time. (Some of them move around or change but the top 2 are always the same.) I'm not too familiar with tools like uProf/vTune - but removing a 'offending' line moves the CPU time that was taken up to the next section above.
--- mesa/src/intel/isl/isl_surface_state.c
isl_gfx125_buffer_fill_state_s : 951
-- mesa/src/intel/common/mi_builder.h
_mi_copy_no_unref : 528
--- mesa/src/intel/vulkan/anv_descriptor_set.c
anv_descriptor_set_write_buffer : 1523
--- mesa/src/intel/vulkan/genX_cmd_buffer.c
gfx125_cmdDrawIndexedIndirect : 4452
--- mesa/src/intel/vulkan/gfx8_cmd_buffer.c
gfx125_cmd_buffer_flush_dynamic_state : 776
There do not seem to be any indicators in dmesg
or card0's error
.
Dmesg repeats these lines over, mostly the drm_mode_addfb2
lines with FB 286 and 291, but I see this in other titles as well and they run fine.
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:skl_compute_wm [i915]] [PLANE:31:plane 1A] blocks 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -> 21, 169, 253, 295, 568, 694,1114, 0, 35, 0, 0
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:skl_compute_wm [i915]] [PLANE:31:plane 1A] min_ddb 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -> 25, 187, 280, 326, 626, 765,1227, 0, 36, 0, 0
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_bw_atomic_check [i915]] [CRTC:80:pipe A] data rate 2274880 num active planes 1
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_bw_atomic_check [i915]] QGV point 0: max bw 50000 required 2389
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_bw_atomic_check [i915]] No SAGV, using single QGV point 0
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_plane_calc_min_cdclk [i915]] [PLANE:31:plane 1A] min cdclk (284360 kHz) > [CRTC:80:pipe A] min cdclk (0 kHz)
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_bw_calc_min_cdclk [i915]] new bandwidth min cdclk (44432 kHz) > old min cdclk (0 kHz)
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_modeset_calc_cdclk [i915]] Can change cdclk via squashing
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_modeset_calc_cdclk [i915]] New cdclk calculated to be logical 571200 kHz, actual 571200 kHz
[Wed Dec 14 15:40:23 2022] i915 0000:0a:00.0: [drm:intel_modeset_calc_cdclk [i915]] New voltage level calculated to be logical 3, actual 3
...
...
[Wed Dec 14 15:40:25 2022] i915 0000:0a:00.0: [drm:drm_mode_addfb2] [FB:286]
[Wed Dec 14 15:40:25 2022] i915 0000:0a:00.0: [drm:drm_mode_rmfb_work_fn] Removing [FB:291] from all active usage due to RMFB ioctl
...
...
[Wed Dec 14 15:40:31 2022] i915 0000:0a:00.0: [drm:skl_compute_wm [i915]] [PLANE:76:cursor A] level wm0, wm1, wm2, wm3, wm4, wm5, wm6, wm7, twm, swm, stwm -> *wm0,*wm1,*wm2,*wm3,*wm4,*wm5,*wm6,*wm7,*twm, swm, stwm