Bug 26350 - Single corruption (artifacts) on engine reclocking
Single corruption (artifacts) on engine reclocking
Status: NEW
Product: DRI
Classification: Unclassified
Component: DRM/Radeon
unspecified
Other All
: medium normal
Assigned To: Default DRI bug account
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-01-31 09:17 UTC by Rafał Miłecki
Modified: 2010-01-31 09:39 UTC (History)
0 users

See Also:


Attachments
Switch AtomBIOS parser to udelay (518 bytes, patch)
2010-01-31 09:28 UTC, Rafał Miłecki
no flags Details | Splinter Review
Switch engine clock setting to registers operations (7.88 KB, patch)
2010-01-31 09:30 UTC, Rafał Miłecki
no flags Details | Splinter Review
Full results of my speed test (665 bytes, text/plain)
2010-01-31 09:39 UTC, Rafał Miłecki
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rafał Miłecki 2010-01-31 09:17:09 UTC
Engine reclocking is too slow and so artifacts are visible when it happens. We need to make it faster.
Comment 1 Rafał Miłecki 2010-01-31 09:28:14 UTC
Created attachment 32948 [details] [review]
Switch AtomBIOS parser to udelay

Dave noticed we lost a lot of time when sleeping in AtomBIOS. Switching to udelay drastically improves this.
Comment 2 Rafał Miłecki 2010-01-31 09:30:52 UTC
Created attachment 32949 [details] [review]
Switch engine clock setting to registers operations

It may be good idea to perform sensible operations manually, without parsing AtomBIOS commands. Unfortunately it needs rewriting AtomBIOS code for each GPU generation.
Comment 3 Rafał Miłecki 2010-01-31 09:39:33 UTC
Created attachment 32950 [details]
Full results of my speed test

Currently reclocking engine takes averagely .005152s. That's way too long.

Using Dave's patch I went down to averagely .000287s.
With registers patch went down to averagely .000267s.

Using both patches gave even nicer result:  .000185s.
Both + my patch hacked (to use "while" op): .000177s.

In every case corruptions were gone.

About hacked version of my patch, I switched to using "while" (just like AtomBIOS does) instead of waiting in "for" for bit in 0x600.