I poked around in R600OverlapCopy() and noticed that in the case where the offset between src and dst is horizontal, the simple all-at-once copy seems to work correctly. For the case where the offset is only vertical, I've modified the line-by-line copy to instead copy in chunks equal to height of the non-overlapping area. The patch has only been tested on a RV770, so I will claim nothing regarding other GPUs. At least for this particular machine, EXA is now snappy and corruption free. -- Yang Zhao http://yangman.ca
On Fri, Feb 6, 2009 at 3:55 AM, Yang Zhao
I poked around in R600OverlapCopy() and noticed that in the case where the offset between src and dst is horizontal, the simple all-at-once copy seems to work correctly.
For the case where the offset is only vertical, I've modified the line-by-line copy to instead copy in chunks equal to height of the non-overlapping area.
The patch has only been tested on a RV770, so I will claim nothing regarding other GPUs. At least for this particular machine, EXA is now snappy and corruption free.
Thanks! pushed. Alex -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org
Take two. Copy is done in chunks, and the diagonal overlap case is actually handled. Applies to current HEAD of r6xx-r7xx-support (cb78b480). -- Yang Zhao http://yangman.ca
Round 2. Diagonal overlapping copies can now be reduced to horizontal- or vertical-only. The one that results in fewer R600DoCopy() calls is picked. This should be as good as it can get for segmented copying. -- Yang Zhao http://yangman.ca
participants (2)
-
Alex Deucher
-
Yang Zhao