Leif,
On 2002.05.30 02:02 Jos� Fonseca wrote:
> ... Tomorrow I'll take a look more carefully to see if I find anything
> suspicious. ...
I've been analyzing the diff very carefully and what I've found so far are
just some details which can be taken care later (i.e., no bugs sorry) :
- This code in the OUT_RING macro
+ if (idx > 3) idx = 0; \
+ if (idx == DMA_COMMAND) { \
+ last_cmd = (x) & ~DMA_EOL; \
+ last_cmd_ofs = write; \
+ } \
+ ring[write++] = cpu_to_le32( x ); \
+ idx++; \
+ write &= tail_mask; \
seems unnecessary and inefficient. We dont need to bookkeep idx,
last_cmd ans last_cmd_ofs when writing to the ring. We just need to make a
copy of the tail in the begining, and can get everything info we need from
that in COMMIT_RING.
- I think mach64_flush_write_combine is excessive and creates an excessive
penalty as it calls mb(). We just need to make sure that everything we
write goes to the physical memory, i.e., call wb() - which in the x86
platform is a null macro since there is no write cache. And this should be
only necessary in COMMIT_RING, as no-one else will read what we are
writing until toggle the continuation bit of the last descriptor.
- the RING* macros shouldn't work in number of DWORDS, but in number of
entries, and the OUT_RING macro should take 3 (or four?) arguments.
- ADVANCE_RING and COMMIT_RING should be one.
- Why do you call mach64_do_dma_flush( dev_priv ) in COMMIT_RING?
- In general I have the idea that we are bookkeeping to much redundant
variables related with the ring, and that's prone to bugs.
...but I did found something that annoyed the most:
- I want to play with the nice stuff you've been making! Can you commit,
plz! Pretty please! ;-)
Jos� Fonseca
_______________________________________________________________
Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel