[Mesa-dev] [PATCH] egl/wayland: Support for KHR_partial_update
Harish Krupo
harish.krupo.kps at intel.com
Wed Oct 18 10:20:01 UTC 2017
Hi Eric,
Eric Engestrom <eric.engestrom at imgtec.com> writes:
> On Wednesday, 2017-10-18 06:06:45 +0000, Harish Krupo wrote:
>> Hi Eric,
>>
>> Eric Engestrom <eric at 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 :]
>
Ok, here is the documentation from wayland.xml.
https://cgit.freedesktop.org/wayland/wayland/tree/protocol/wayland.xml#n1389
>>
>> Thank you
>>
>> Regards
>> Harish Krupo
More information about the mesa-dev
mailing list