Re: info-performer Mar 26 2001

New Message Reply Date view Thread view Subject view Author view

From: Jean-Francois Panisset (panisset++at++discreet.com)
Date: 03/27/2001 16:38:57


> From: Angus Dorbie <dorbie++at++sgi.com>
> Date: Mon, 26 Mar 2001 22:01:39 -0800
> Subject: Re: IR2 + 4096 x 4096 texture...
>
>It is possible to figure this out from first principals.
>
>TRAM is split into two banks for MIP mapping, alternate levels of MIP
>are stored in opposite banks. This means that a 32 MB bank is available
>for storing level 0, 2, 4, 6, 8 etc. The other 32 MB bank stores level
>1, 3, 5, 7 etc.
>
>The other info you need is that a texel must be stored in multiples of 2
>bytes, this is the word size of TRAM memory. This means that an RGB 555
>image texel will occupy 2 bytes and an RGB 888 texel will occupy 4 bytes
>(not 3 as you otherwise might assume).
>
>So, a 4k by 4k image will be 16777216 texels or 33554432 bytes or 32 MB
>if the internal format is RGB 555, it will therefore NOT fit in TRAM if
>MIP mapped because there will be no space in the bank for level 2 once
>level 0 is loaded. If you do not MIP map it it will fit, and infact I
>think an 8k by 4k non MIP mapped image would be possible.
>
>A 4k by 2k RGB 555 MIP mapped texture would be possible. The largest
>square MIP mapped RGB 555 texture would be 2k x 2k.
>
>If you need larger images the latest RM's have more TRAM (256 MB) and
>can therefore support larger MIP mapped images without using
>cliptexture.
>

Except that RM10 brings some extra surprises. Although in theory it
should give you two banks of 128MB each, in practice if you try to load
a 128MB texture level it will render incorrectly (try to create
a 4096x4096 GL_RGBA, GL_UNSIGNED_SHORT non-mipmapped texture and
map it to a polygon, you will get some weird horizontal shift in the
texture). If you limit yourself to 64MB levels, the rendering works
OK, but the OpenGL texture memory manager gets confused. For instance,
try the following sequence of non-mipmapped texture definitions:

64MB - 32MB - 64MB - 32MB - 64MB

In theory, this should fit in 256MB, in practice you will find that one
or more of your textures are no longer resident after you have done this.
To avoid all problems, you want to stick to 32MB texture levels.

BTW, the texture proxy mechanism on IR3 claims that 128MB texture levels
is fine, so you can't trust it. For the gory details, you can see
case 2096918.

JF


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Tue Mar 27 2001 - 16:39:16 PST

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.