Windows Vista Tips

Windows Vista Tips > Newsgroups > Windows Vista Drivers > Lack of responsiveness in multitouch driver

Reply
Thread Tools Display Modes

Lack of responsiveness in multitouch driver

 
 
sinosoidal
Guest
Posts: n/a

 
      12-17-2009
Hi,

I'm having a lack of responsiveness problem in the multitouch driver i'm
developing.

in order to have decent feedback i need to move my finger thru the surface
very slowly.

in my test plataform (linux) where I develop the code before putting it in
the device driver (user mode) i have suberb responsiveness,

but when i put it into the kernel, it really goest down.

i think it is somwhow related with the injection of the touch information
because, even in windows, my test plataform needs to get the frames from the
device from the driver, and i can get good performances results this way

the problem is on the touch information that is sent by the driver to the
windows touch subsystem.

can anyone more experienced in this kind of drivers point me out typical
implementation problems?

I currently have a serial mode touch report of 10 contacts in my descriptor

and i'm reporting frames at 30 hertz.

i also thought that this problem could be from the 30 hz but i have tested
for 65 and the problem continues, so i'm dropping the idea that the frame
rate could be a problem.

i have also used kernrate to see how much the driver was spending (6% in a
dual core 2.5 Ghz machine)

is there any way of defining the priority a driver has in kernel?

any ideas?

with my best regards,

Nuno
 
Reply With Quote
 
 
 
 
Pavel A.
Guest
Posts: n/a

 
      12-17-2009
A timer resolution issue again? Do you use delays/time waits somewhere?
--pa



"sinosoidal" <> wrote in message
news:77709963-9F90-4AEA-933F-...
> Hi,
>
> I'm having a lack of responsiveness problem in the multitouch driver i'm
> developing.
>
> in order to have decent feedback i need to move my finger thru the surface
> very slowly.
>
> in my test plataform (linux) where I develop the code before putting it in
> the device driver (user mode) i have suberb responsiveness,
>
> but when i put it into the kernel, it really goest down.
>
> i think it is somwhow related with the injection of the touch information
> because, even in windows, my test plataform needs to get the frames from
> the
> device from the driver, and i can get good performances results this way
>
> the problem is on the touch information that is sent by the driver to the
> windows touch subsystem.
>
> can anyone more experienced in this kind of drivers point me out typical
> implementation problems?
>
> I currently have a serial mode touch report of 10 contacts in my
> descriptor
>
> and i'm reporting frames at 30 hertz.
>
> i also thought that this problem could be from the 30 hz but i have tested
> for 65 and the problem continues, so i'm dropping the idea that the frame
> rate could be a problem.
>
> i have also used kernrate to see how much the driver was spending (6% in a
> dual core 2.5 Ghz machine)
>
> is there any way of defining the priority a driver has in kernel?
>
> any ideas?
>
> with my best regards,
>
> Nuno


 
Reply With Quote
 
sinosoidal
Guest
Posts: n/a

 
      12-21-2009
Hi Pavel,

I don't think so, but I can be wrong....

These are the times i have defined:

VOID
DpxMttFrameArrivalEvtTimerFunction(
IN WDFTIMER Timer
)
{
PDEVICE_EXTENSION devContext =
GetDeviceContext(WdfTimerGetParentObject(Timer));

// this timer handler looks for new frames to process and process them
// the frames come from usb at a 30 hz frame. the timer is at the double of
the //frequency
if (devContext->Context.HasNewFrame == 1)
{
// Process frame

devContext->Context.HasNewFrame = 0;
}

// 66 hz timer

WdfTimerStart(Timer,
WDF_REL_TIMEOUT_IN_MS(15)
);


}

VOID
DpxMttReadReportEvtTimerFunction(
IN WDFTIMER Timer
)
{
PDEVICE_EXTENSION devContext =
GetDeviceContext(WdfTimerGetParentObject(Timer));

// this timer looks for new touch information to inject in windows subsystem
at a 66 hz rate
DpxMttCompleteReadReport(WdfTimerGetParentObject(T imer));

WdfTimerStart(Timer,
WDF_REL_TIMEOUT_IN_MS(15)
);
}

Any ideas?

Thanks,

Nuno

"Pavel A." wrote:

> A timer resolution issue again? Do you use delays/time waits somewhere?
> --pa
>
>
>
> "sinosoidal" <> wrote in message
> news:77709963-9F90-4AEA-933F-...
> > Hi,
> >
> > I'm having a lack of responsiveness problem in the multitouch driver i'm
> > developing.
> >
> > in order to have decent feedback i need to move my finger thru the surface
> > very slowly.
> >
> > in my test plataform (linux) where I develop the code before putting it in
> > the device driver (user mode) i have suberb responsiveness,
> >
> > but when i put it into the kernel, it really goest down.
> >
> > i think it is somwhow related with the injection of the touch information
> > because, even in windows, my test plataform needs to get the frames from
> > the
> > device from the driver, and i can get good performances results this way
> >
> > the problem is on the touch information that is sent by the driver to the
> > windows touch subsystem.
> >
> > can anyone more experienced in this kind of drivers point me out typical
> > implementation problems?
> >
> > I currently have a serial mode touch report of 10 contacts in my
> > descriptor
> >
> > and i'm reporting frames at 30 hertz.
> >
> > i also thought that this problem could be from the 30 hz but i have tested
> > for 65 and the problem continues, so i'm dropping the idea that the frame
> > rate could be a problem.
> >
> > i have also used kernrate to see how much the driver was spending (6% in a
> > dual core 2.5 Ghz machine)
> >
> > is there any way of defining the priority a driver has in kernel?
> >
> > any ideas?
> >
> > with my best regards,
> >
> > Nuno

>

 
Reply With Quote
 
Pavel A.
Guest
Posts: n/a

 
      12-22-2009
Yes this looks like a timer resolution issue.
Will the behavior change if you increase resolution (by a simple way already
discussed here or on NTDEV:
run either media player or messenger)?
--pa


"sinosoidal" <> wrote in message
news:ADBF6020-FC4A-462A-86AC-...
> Hi Pavel,
>
> I don't think so, but I can be wrong....
>
> These are the times i have defined:
>
> VOID
> DpxMttFrameArrivalEvtTimerFunction(
> IN WDFTIMER Timer
> )
> {
> PDEVICE_EXTENSION devContext =
> GetDeviceContext(WdfTimerGetParentObject(Timer));
>
> // this timer handler looks for new frames to process and process them
> // the frames come from usb at a 30 hz frame. the timer is at the double
> of
> the //frequency
> if (devContext->Context.HasNewFrame == 1)
> {
> // Process frame
>
> devContext->Context.HasNewFrame = 0;
> }
>
> // 66 hz timer
>
> WdfTimerStart(Timer,
> WDF_REL_TIMEOUT_IN_MS(15)
> );
>
>
> }
>
> VOID
> DpxMttReadReportEvtTimerFunction(
> IN WDFTIMER Timer
> )
> {
> PDEVICE_EXTENSION devContext =
> GetDeviceContext(WdfTimerGetParentObject(Timer));
>
> // this timer looks for new touch information to inject in windows
> subsystem
> at a 66 hz rate
> DpxMttCompleteReadReport(WdfTimerGetParentObject(T imer));
>
> WdfTimerStart(Timer,
> WDF_REL_TIMEOUT_IN_MS(15)
> );
> }
>
> Any ideas?
>
> Thanks,
>
> Nuno
>
> "Pavel A." wrote:
>
>> A timer resolution issue again? Do you use delays/time waits somewhere?
>> --pa
>>
>>
>>
>> "sinosoidal" <> wrote in message
>> news:77709963-9F90-4AEA-933F-...
>> > Hi,
>> >
>> > I'm having a lack of responsiveness problem in the multitouch driver
>> > i'm
>> > developing.
>> >
>> > in order to have decent feedback i need to move my finger thru the
>> > surface
>> > very slowly.
>> >
>> > in my test plataform (linux) where I develop the code before putting it
>> > in
>> > the device driver (user mode) i have suberb responsiveness,
>> >
>> > but when i put it into the kernel, it really goest down.
>> >
>> > i think it is somwhow related with the injection of the touch
>> > information
>> > because, even in windows, my test plataform needs to get the frames
>> > from
>> > the
>> > device from the driver, and i can get good performances results this
>> > way
>> >
>> > the problem is on the touch information that is sent by the driver to
>> > the
>> > windows touch subsystem.
>> >
>> > can anyone more experienced in this kind of drivers point me out
>> > typical
>> > implementation problems?
>> >
>> > I currently have a serial mode touch report of 10 contacts in my
>> > descriptor
>> >
>> > and i'm reporting frames at 30 hertz.
>> >
>> > i also thought that this problem could be from the 30 hz but i have
>> > tested
>> > for 65 and the problem continues, so i'm dropping the idea that the
>> > frame
>> > rate could be a problem.
>> >
>> > i have also used kernrate to see how much the driver was spending (6%
>> > in a
>> > dual core 2.5 Ghz machine)
>> >
>> > is there any way of defining the priority a driver has in kernel?
>> >
>> > any ideas?
>> >
>> > with my best regards,
>> >
>> > Nuno

>>

 
Reply With Quote
 
 
 
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
What's the different for PNPDTest between WLK 1.5 and WLK 1.2 Wayne Windows Vista Drivers 2 01-18-2010 08:32 PM
Slow Vista startup Jedi940 Windows Vista Performance 1 01-13-2008 08:50 PM
crcdisk.sys start up problem (with boot log) Jimmy Windows Vista Hardware 2 08-13-2007 07:22 PM
Missing VGA driver rh0000 Windows Vista Hardware 14 06-13-2007 10:21 AM
Unable to get network working due to lack of network driver... Phillip Pi Windows Vista General Discussion 12 03-09-2006 06:37 PM



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59