Matrox Millennium P650

Zvekan

Newcomer
I recently had a chance to benchmark Millennium P650 graphic card and have some questions regarding numbers I'm getting.

This is what MDolenc fillrate tester gives:

Fillrate Tester
--------------------------
Display adapter: Matrox Millennium P650 - English
Driver version: 6.13.1.1262
Display mode: 1024x768 A8R8G8B8 85Hz
Z-Buffer format: D15S1
--------------------------

FFP - Pure fillrate - 368.880432M pixels/sec
FFP - Z pixel rate - 368.835175M pixels/sec
FFP - Single texture - 368.843658M pixels/sec
FFP - Dual texture - 346.906036M pixels/sec
FFP - Triple texture - 254.664734M pixels/sec
FFP - Quad texture - 253.798920M pixels/sec
PS 1.1 - Simple - 368.864014M pixels/sec
PS 1.4 - Simple - Failed!
PS 2.0 - Simple - Failed!
PS 2.0 PP - Simple - Failed!
PS 2.0 - Longer - Failed!
PS 2.0 PP - Longer - Failed!
PS 2.0 - Longer 4 Registers - Failed!
PS 2.0 PP - Longer 4 Registers - Failed!
PS 2.0 - Per Pixel Lighting - Failed!
PS 2.0 PP - Per Pixel Lighting - Failed!

And this is fillrate reported by 3DMark03:

singletexturing - 237,7 Mtexel
multitexturing - 912,7 Mtexela

Now I know that P650 is 2x4 (pipes x TMU's), so 3DMarks03 numbers are quite logical as multitexturing is roughly 4-times faster. But what about MDolenc numbers, how to interpred them?

Single and Double texturing fillrates are basically the same (there is variation as a result of some bottlenecks possibly), but why there is such a large drop when going to three and four textures?

Zvekan
 
Not enough bandwidth? It has a very low clock combined with 128bit bus and a lack of any occlusion culling.
 
Zvekan said:
Now I know that P650 is 2x4 (pipes x TMU's), so 3DMarks03 numbers are quite logical as multitexturing is roughly 4-times faster. But what about MDolenc numbers, how to interpred them?

3dmarks's numbers are in MTexels/sec.
MDolenc's numbers are in MPixels/sec.

Eg.: Triple texture - 254.664734 Mpixels/sec = 763.994202 MTexels/sec

Actually the term "Texel" is seriously misused there (in 3dmark).
What that actually mean is Texture lookups.
Texture lookups can acquire multiple texels 4 with bilinear (what there tests use), 8 with trilinear, and that can be more with anisotropic filtering.
 
Hyp-X said:
Actually the term "Texel" is seriously misused there (in 3dmark).
What that actually mean is Texture lookups.
Texture lookups can acquire multiple texels 4 with bilinear (what there tests use), 8 with trilinear, and that can be more with anisotropic filtering.

But Texture lookups don't have to be capable of acquireing 8 texels with trilinear filtering? Like in FX5900 that has 2 texure lookups per pipe (I know that FX architecture doesn't have pipes, but we can use that term loosely here :) ), and both have to be combined to be able to do trilinear per clock?

With anisotropic it depends on degree selected in drivers and their decision how much samples to use? Is 16x max anizotropy really 16 max texels acquired?

Sorry about so many questions :)

Zvekan
 
Zvekan said:
But Texture lookups don't have to be capable of acquireing 8 texels with trilinear filtering?

Most actual texture units needs 2 cycle to do that.
(Or more in bandwidth limited scenarios.)

Like in FX5900 that has 2 texure lookups per pipe (I know that FX architecture doesn't have pipes, but we can use that term loosely here :) ), and both have to be combined to be able to do trilinear per clock?

Let's say 2 texture units. Whether the 2 is combined for trilinear or the trilinear needs 2 cycles in one of the units is usually an irrelevant detail (performance wise).
I certanly don't know which one it does.
I know R300 does more cycles due to the lack of other options. ;)

With anisotropic it depends on degree selected in drivers and their decision how much samples to use?

No the driver only sets the maximum degree of anisotropy.
The hardware calculates 4 pixels similtaneously. This is used to calculate the partial derivates of the texture coordinates (du/dx, du/dy, dv/dx, dv/dy).
These are in turn used to select the mipmap and the required degree of anisotropy (within the limits set by the driver).

Is 16x max anizotropy really 16 max texels acquired?

16x max anisotropy is 64 max texels acquired with bilinear, and 128 max texels acquired with trilinear.
Fortunately the worst case tend to appear at a relatively small part of the rendered screen.
 
No the driver only sets the maximum degree of anisotropy.
The hardware calculates 4 pixels similtaneously. This is used to calculate the partial derivates of the texture coordinates (du/dx, du/dy, dv/dx, dv/dy).
These are in turn used to select the mipmap and the required degree of anisotropy (within the limits set by the driver).

Ok you confused me. U and v are cordinates of the texture? So u=f(x,y) and v=f(x,y)?

How come you have them as functions? Aren't corinates like fixed values whoose derivation is equal to 0?

Don't you have to have the third dimension to see how much anizotropic filtering should be applied as you have to judge the angle of polygon to your viewpoint? (hope it is understandable, as english is not my first language).
 
Zvekan said:
Ok you confused me. U and v are cordinates of the texture? So u=f(x,y) and v=f(x,y)?

Yup.

How come you have them as functions? Aren't corinates like fixed values whoose derivation is equal to 0?

You have texture coordinates for the vertices, they are interpolated accross the triangle, so they are not constant (you'd have a constant color triangle if they were), so they won't all have 0 derivatives.

Also note that the derivatives are not constant in the triangle due to the perspective correction.

Don't you have to have the third dimension to see how much anizotropic filtering should be applied as you have to judge the angle of polygon to your viewpoint? (hope it is understandable, as english is not my first language).

Now, this is a common misconception about anisotropic filtering - it makes no direct use of the polygon orientation!

Anisotropic filtering "corrects" texture distortion - that is when the texture is "squished". That means it's more compressed in some direction than in some other direction.
Whether this is due to the polygon orientation (angle to the viewer) or because the mapping is distorted is irrelevant.
So no, you don't need a third coordinate.

It you have an angle "a" then the step in that direction is:
step(a) = sqrt((du/dx*cos(a) + du/dy*sin(a))^2 + (dv/dx*cos(a) + dv/dy*sin(a))^2)
If there is anisotropy ther always be an "a0" where step(a0) is the maximum value and step(a0+pi/2) is the minimum value.
So step(a0)/step(a0+pi/2) is the degree of anisotropy.

If you do the math you'll find that the degree of anisotropy and the direction vector can be calculated without the use of trigonometric functions, so it's relatively easy to calculate it.
 
Back
Top