Hi Thomas, > > > - if (helper->funcs->fb_dirty) { > > > - drm_fb_helper_memory_range_to_clip(info, pos, ret, &damage_area); > > > - drm_fb_helper_damage(helper, damage_area.x1, damage_area.y1, > > > - drm_rect_width(&damage_area), > > > - drm_rect_height(&damage_area)); > > > - } > > > > The generated helpers do not have the if (helper->funcs->fb_dirty) > > check. > > Is this implemented somewhere else that I missed? > > It's not needed any longer. We used to test if the fbdev code needs damage > handling by looking for a fb_dirty callback. If so, we ran the damage > handling code. > > With the patchset applied, the fbdev code that does not need damage handling > calls fb_{io,sys}_write() directly. The fbdev code that needs damage > handling (generic, i915, msm) uses the generator macro that creates > necessary the calls unconditionally. We know each case at build time. > > (I think I have to move the msm patch after patch 10/13 to make it > bisectable.) > > AFAICT the missing test for fb_dirty is also one of the reasons why there's > a difference in performance. > > Hopefully, this answers your question? Makes perfect sense - thanks. That also implies that my conditional r-b's are now OK. Sam