[Mesa-dev] r600g on rv635 and broken mipmaps

Fredrik Höglund fredrik at kde.org
Sat Apr 30 06:41:45 PDT 2011


On Saturday 30 April 2011, Mathias Fröhlich wrote:
> Hi,
> 
> Since the lazy gpu flush changes for r600g about two weeks ago, I get broken 
> mipmaps on my notebooks rv635.
> I am not sure if my analysis is right, but it appears to me that flushing the 
> destination caches like it is done in r600_context_flush_dest_caches is not 
> sufficient for my rv635. Since then, I need the attached patch to get correct 
> automatically generated mipmaps.
> The important callpath for my observed breakage is when 
> r600_context_flush_dest_caches is called from r600_set_framebuffer_state, which 
> is called on each new mipmap level. With the attached change it is sufficient 
> for flushing the previously rendered level that is used as a sampler source for 
> rendering the next level. Without that flush, I get garbage in the smaller 
> mipmap levels.
> 
> So, I know that this patch is not applicable, since it does not account for 
> sufficient cs space for this additional flush. Also it is probably too croase in 
> face of the finegrained bo flush logic.

Actually I think it should be fine, since this event type is about the
destination and smx caches if I'm reading the documentation right.

There's also a small margin in the dwords reserved for context_flush;
it only uses 10 of the 16 dwords reserved for it.

> Also I cannot hear so much people screaming, so I guess the rv635 is about the 
> only chip that suffers from this problem.
> But I failed to find that finegrained bo flush with the apropriate flush flags that 
> makes mipmaps work again.
>
> May be this does ring some bell which flush is missing?
> If not, does somebody have any clue which chips do suffer from this prolem?

I think it's rv6xx that's a bit special. There is a also a bug report about
random GPU lockups with those chipsets since the cache flush changes:

https://bugs.freedesktop.org/show_bug.cgi?id=36525

I thought adding this event write might fix that, but apparently it didn't.
My patch wrote the packet before flushing the buffers though.

Have you or anyone else with an rv6xx seen anything like this?

Regards,
Fredrik



More information about the mesa-dev mailing list