[PATCH xserver] damage: Add screen func called before damage event delivery
Michel Dänzer
michel at daenzer.net
Fri Sep 16 09:21:17 UTC 2016
On 16/09/16 06:14 PM, Hans de Goede wrote:
> On 16-09-16 10:59, Michel Dänzer wrote:
>> On 16/09/16 05:37 PM, Hans de Goede wrote:
>>> On 16-09-16 08:26, Michel Dänzer wrote:
>>>> On 16/09/16 01:37 PM, Keith Packard wrote:
>>>>> @@ -1943,3 +1948,13 @@ DamageReportDamage(DamagePtr pDamage,
>>>>> RegionPtr pDamageRegion)
>>>>> break;
>>>>> }
>>>>> }
>>>>> +
>>>>> +void
>>>>> +DamageFlushDrawable(DrawablePtr pDrawable)
>>>>> +{
>>>>> + ScreenPtr pScreen = pDrawable->pScreen;
>>>>> + damageScrPriv(pScreen);
>>>>> +
>>>>> + if (pScrPriv->funcs.Flush)
>>>>> + (*pScrPriv->funcs.Flush)(pDrawable);
>>>>> +}
>>>>
>>>> FWIW, this will do nothing for GPU screens. I'm not sure whether or not
>>>> GPU screens need to be flushed for damage events, what are others'
>>>> thoughts on that?
>>>
>>> With render offloading I do think we want to flush,
>>
>> Do you have a specific scenario in mind where a GPU screen needs to be
>> flushed before damage events are sent to a client?
>
> If a client is somehow tracking a pixmap which gets rendered
> by a secondary GPU, but I did not think about the copy that
> involves, so thinking about this again in that scenario we
> will have:
>
> 1) Rendering on secondary GPU (aka a GPU screen)
> 2) We need a flush here, but that should already be taken care of
> 3) Copy to buffer/pixmap on primary GPU
> 4) The copy will do damage to the pixmap, but then we're already
> on the primary GPU
>
>> I've actually almost convinced myself that it's not necessary, because
>> damage events can't refer to any pixmaps directly rendered to by GPU
>> screens?
>
> See above I think you're right. Following the same logic though
> I do not think the code this patch adds will ever get called on
> a GPU screen, so no need to check for that ?
Right, I merely pointed out that the code in this patch won't do
anything for GPU screens, because I wasn't sure yet if GPU screens need
to be flushed for damage events or not. Sorry if that was confusing.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-devel
mailing list