Hi Jay,
I missed one thing in the psuedo code.
pan_display()
{
1. gets the yoffset(0/480) and updates the display base address in
a global variable
2. enables the interuppt on vertical sync
3. waits for event
}
isr()
{
1. clears the interrupt
2. gets the base address from global
Hi Manish,
My point is, if you disable/enable irq at each pan display, you will
encounter that kernel resend the interrupt.
Not the real hardware vsync triggers.
So, if you check your waveform, you will find you send out data
between two vsync interval.
If you cross the next vsync, you will get
Hi Jay,
I tried disabling CONFIG_HARDIRQS_SW_RESEND but still the situation
is same.
I agree with you if the data is sent between two vsync it will produce
tearing.
In my case out of below 5 applications only Translucent
GLSurfaceView is giving tearing other applications are working fine.
The code below assumes that the change in the display base address
happens immediately. If you have an architecture that provides shadow
registers, then you want to set them in pan_display and not in the isr
and just wait for the VSYNC.
Manish wrote:
Hi Jay,
I missed one thing in the
Hi,
I am assuming you are working on ARM, and the vsync is edge triggered.
Looks like your vsync is trigged at a constant rate.
In kernel, it will re-trigger the interrupt in resend.c right after
enable_irq.
So, you may encounter tearing because of this. (At this case, it is
not real hardware