On Wednesday, 2017-10-18 06:06:45 +0000, Harish Krupo wrote: > Hi Eric, > > Eric Engestrom <e...@engestrom.ch> writes: > > I might need to double check the spec, but I thought "no damage hint" > > meant "no way to reduce the update, redraw the whole screen"? > > > > If that's the case, then SwapBuffers() and SwapBuffersWithDamages(NULL, 0) > > should have the same effect: not setting any damage region. > > > > You can therefore drop the `with_damage` bool and just use `n_rects > 0`. > > > > Quoting from the swap buffers with damage spec: > If <n_rects> is 0 then <rects> is ignored and the entire > surface is implicitly damaged and the behaviour is equivalent > to calling eglSwapBuffers. > > If we were to use n_rects, then the code would be something like this: > if (n_rects > 0) { // with_damage case > if (!try_damage_buffer(dri2_surf, rects, n_rects)) > wl_surface_damage(dri2_surf->wl_surface_wrapper, > 0, 0, INT32_MAX, INT32_MAX); > } > else { > // if (!dri2_surf->base.SetDamageRegionCalled) > wl_surface_damage(dri2_surf->wl_surface_wrapper, > 0, 0, INT32_MAX, INT32_MAX); > } > > The problem here is when n_rects is zero, then according the > swap_buffers spec the damage should be set to maximum which it will. > This code will also be executed by SwapBuffers. In this case the maximum > damage should be set only when no previous damage has already been set by > SetDamageRegion otherwise the previous SetDamageRegion call would be in > vain. (Also wayland requires that some buffer damage is set otherwise > there will be no damage at all.)
That last sentence is the bit I was missing: I thought if no damage was set in WL it meant the whole screen was damaged, ie. the same way it's defined in EGL. Can you point me to the WL spec where this is mentioned, or some documentation? If I can confirm this, then I was wrong and I apologise :] > > Thank you > > Regards > Harish Krupo _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev