cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

hax666
Journeyman III

Radeon 1600, DirectX 9, resolving MSAA z-buffer with StretchRect() works very slow

DirectX 9, we are resolving MSAA z-buffer to non-MSAA zbuffer, and then using it for rendering with RenderTarget texture. This helps us to lower fillrate during postprocessing (some of our postprocessing effects require z-compare). All surfaces have same width/height, zbuffer is not discardable, StretchRect() is called between EndScene()/BeginScene().
FPS is 3-4. Works fine on nVidia cards.
Is this driver issue, or hardware just can't handle this efficiently?
0 Likes
9 Replies
avk
Adept III

A RV530/535 chips has very limited texture pipes - 4, which is significally lower than on many nVidia chips of the same price range. BTW, what nVidia cards you use to compare?
0 Likes
hax666
Journeyman III

I don't see how copying between video surfaces are connected to texture pipes.

Works fine on gf6600-8800.
0 Likes
avk
Adept III

I think that it will be useful to test another Radeon chips to find out the source of the problem. Who knows how exactly performs operation you mentioned...
0 Likes
hax666
Journeyman III

Radeon 1600: FPS is 3-4, dest Zbuffer contains garbage.
Radeon 2600: FPS is 30, dest Zbuffer contains garbage.
I suppose this functionality was never tested.
0 Likes
avk
Adept III

Different chips, different characteristics (pipes, cache ...). BTW, which resultions and drivers were used during testing?
0 Likes
hax666
Journeyman III

Radeon 1600 - Catalyst 7.1 and Catalyst 8.3. Radeon 2600 - Catalyst 8.3. In any case, dest zbuffer contains garbage. How exactly resolving MSAA zbuffer should happen is not well defined in DX docs, but it is legal. Just first sample or samples average is ok for our case.
0 Likes
avk
Adept III

... And what about screen resolutions?
0 Likes
hax666
Journeyman III

1024x768x32 fullscreen, 800x600x32 in window. I think resolution does not affect this.
0 Likes
avk
Adept III

Who knows... Radeon 1600 is a low-level card, so it can have a very little on-die cache, which can lead to low performance on high resolutions, especially with MSAA enabled.
0 Likes