https://bugs.freedesktop.org/show_bug.cgi?id=28800 --- Comment #21 from Marek OlÅÃk <maraeo@xxxxxxxxx> 2010-12-16 07:00:56 PST --- (In reply to comment #20) > Created an attachment (id=41170) View: https://bugs.freedesktop.org/attachment.cgi?id=41170 Review: https://bugs.freedesktop.org/review?bug=28800&attachment=41170 > r300g_multitexturing.diff > > I played around with the tmu texture cache region assignment code, read the > corresponding part of the r3xx register manual, and deduced the following: > - you must assign different region for different textures > - assigned regions must not overlap > The existing code guarantees none of these, especially if there are partial > updates (which are quite common). The texture corruption is the result of the > tmu loading different textures into the same cache area (possibly in different > formats), and only one of them won't be garbage. Thanks a lot for looking into this, but let's discuss it a bit. Could you give me a prove that the current code is wrong? At least one case where the assignment of texture cache regions is done wrong. Currently it should assign the regions as follows: 1 texture: R300_TX_CACHE_WHOLE 2 textures: R300_TX_CACHE_HALF_0 R300_TX_CACHE_HALF_1 3 textures: R300_TX_CACHE_HALF_1 R300_TX_CACHE_FOURTH_0 R300_TX_CACHE_FOURTH_1 4 textures: R300_TX_CACHE_FOURTH_0 R300_TX_CACHE_FOURTH_1 R300_TX_CACHE_FOURTH_2 R300_TX_CACHE_FOURTH_3 5 textures: R300_TX_CACHE_FOURTH_1 R300_TX_CACHE_FOURTH_2 R300_TX_CACHE_FOURTH_3 R300_TX_CACHE_EIGHTH_0 R300_TX_CACHE_EIGHTH_1 6 textures: R300_TX_CACHE_FOURTH_2 R300_TX_CACHE_FOURTH_3 R300_TX_CACHE_EIGHTH_0 R300_TX_CACHE_EIGHTH_1 R300_TX_CACHE_EIGHTH_2 R300_TX_CACHE_EIGHTH_3 7 textures: R300_TX_CACHE_FOURTH_3 R300_TX_CACHE_EIGHTH_0 R300_TX_CACHE_EIGHTH_1 R300_TX_CACHE_EIGHTH_2 R300_TX_CACHE_EIGHTH_3 R300_TX_CACHE_EIGHTH_4 R300_TX_CACHE_EIGHTH_5 8 textures: R300_TX_CACHE_EIGHTH_0 R300_TX_CACHE_EIGHTH_1 R300_TX_CACHE_EIGHTH_2 R300_TX_CACHE_EIGHTH_3 R300_TX_CACHE_EIGHTH_4 R300_TX_CACHE_EIGHTH_5 R300_TX_CACHE_EIGHTH_6 R300_TX_CACHE_EIGHTH_7 And so on. I can't see any overlapping regions. It always divides the whole texture cache between all the textures. The code assumes each region can be divided to two of half the size of the original one. E.g. the case with 2 textures is: R300_TX_CACHE_HALF_0 R300_TX_CACHE_HALF_1 And when you add the 3rd texture, the first region will get divided evenly like this: R300_TX_CACHE_FOURTH_0 R300_TX_CACHE_FOURTH_1 R300_TX_CACHE_HALF_1 Does it look wrong to you? Do you think that the hardware doesn't like so _tight_ configuration of the regions? -- Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel