From: Keith W. <ke...@tu...> - 2003-06-24 15:42:34
|
le...@nt... wrote: > On Tue, Jun 24, 2003 at 03:31:59PM +0100, Keith Whitwell wrote: > >>le...@nt... wrote: >> >>>On Tue, Jun 24, 2003 at 02:13:17PM +0100, Keith Whitwell wrote: >>> >>> >>>>Please try this diff - it may fix the problem in a lot of cases. >>> >>> >>>I'll try it later to see if I'm missing something here, but the first >>>thought >>>is that NEW_BUFFER() isn't called because GET_CURRENT_VB_MAX_ELTS() always >>>returns 300? >> >>Note that there is some redundancy, as ALLOC_ELTS will eventually make a >>check on available space during the allocation, so should get a new buffer >>if there isn't enough space available. Hence the macro shouldn't need to >>be accurate. > > > Yeah, that might cause it to hang though. > > As I said in the reply to Ian, if it's not accurate it'll risk passing the > test, but later flushing the first elt of the triangle fan by itself and > hanging.... but as you say, ALLOC_ELTs works, calling ALLOC_ELTS(nr) should > work, but because emit_elts does the alloc, tri_fan_elts calls it twice effectively doing > ALLOC_ELTS(1), emit one, ALLOC_ELTS(nr-1) emit the rest. OK. I see it again now. I'll put something together - probably a cleanup of t_dd_dmatmp2.h so this splitting can't happen. Keith |