From: Rune P. <ru...@me...> - 2006-06-29 18:06:35
|
Tilman Sauerbeck wrote: > Tilman Sauerbeck [2006-06-11 12:35]: >> Tilman Sauerbeck [2006-05-22 19:42]: >>> [...] >>> >>> I found out that the buffer in question was allocated by >>> r300BufferData(). Now, the proper call to radeon_mm_free() would have >>> been made by r300DeleteBuffer(), but that function was never called. >>> >>> From looking at the code I think this means that it's an application >>> error. >>> Now the question is, should Mesa call the "DeleteBuffer" callback for >>> all buffers that are still alive when the context is destroyed or should >>> r300 be able to cope with it the way it currently is? >> Here's a patch that deletes all VBOs that are still alive when the >> context is destroyed. >> >> Because r300DeleteBuffer() calls radeon_mm_free(), which depends on >> ctx->DriverCtx, we now cannot set DriverCtx to NULL before destroying >> the Mesa context however. >> >> Is this a problem? There's lots of driver calls in free_share_state() >> that might depend on DriverCtx not being NULL, so I don't think I'm >> adding new evil code here. > > Can anyone please comment on that patch? > Other than it fixes the problem for me with no regressions, no sorry. Rune Petersen |