xf86CrtcDamageShadow ?
Thomas Hellström
thomas at tungstengraphics.com
Wed Apr 11 11:47:27 PDT 2007
Eric Anholt wrote:
> On Wed, 2007-04-11 at 08:53 +0200, Thomas Hellström wrote:
>
>> Eric Anholt wrote:
>>
>>> On Tue, 2007-04-10 at 21:45 +0200, Thomas Hellström wrote:
>>>
>>>
>>>>> On Tue, 2007-04-10 at 19:09 +0200, Thomas Hellström wrote:
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I have a couple of questions related to the xf86CrtcDamageShadow
>>>>>> function:
>>>>>>
>>>>>> The current version may damage regions which is not part of the
>>>>>> framebuffer.
>>>>>> For example, if a rotated (90) buffer has dimensions 1024x768, and the
>>>>>> unrotated framebuffer has the
>>>>>> same dimensions, xf86CrtcDamageShadow will call DamageDamageRegion with
>>>>>> a 768x1024 region, which is larger than the
>>>>>> original 1074x768 pixmap.
>>>>>>
>>>>>>
>>>>> Sounds like it's ignoring rotation?
>>>>>
>>>>>
>>>> This happens with an original non-rotated setup. Framebuffer (resizable)
>>>> is 1024x768. When "xrandr -o 1" (90 degrees) is called, a rotated buffer
>>>> (1024x768) is allocated using the crtc callbacks, and xf86CrtcDamageShadow
>>>> calls DamageDamageRegion with a 768x1024 region, but the buffer
>>>> intersection is only 768x768.
>>>>
>>>> I'm not sure whether the framebuffer should have been resized to 768x1024
>>>> in this case, but since rotation is set up per output, I guess not.
>>>>
>>>>
>>> Yeah, that bug should have been fixed yesterday -- we had a situation in
>>> the classic randr path where we were theoretically scanning out an area
>>> not part of the framebuffer, which should never happen.
>>>
>>>
>> OK, I'll update and check. Thanks.
>>
>>> That said, your Render hooks should have dealt with the silly requests
>>> it got appropriately, by only rendering the 768x768 region (since the
>>> source picture didn't have repeating turned on).
>>>
>>>
>>>
>> Yes, I suspected that. Is there a reason EXA is not performing composite
>> area validation?
>> If the responsibility is left to the driver hooks the validation code
>> will be duplicated across
>> drivers.
>>
>
> No, you don't need any validation code -- you have to be able to program
> your hardware to source from pixels inside or outside the pixmap in the
> way the protocol requires. Think about having the normal no-repeat
> setting, bilinear filtering, and trying to draw the full source image
> rotated 45 degrees -- you can't trim away accesses outside of the source
> pixmap because of the filtered edges.
>
>
Yes, OK, I see what you mean.
/Thomas
More information about the xorg
mailing list