Performer and VGXT
Last updated: October 30, 1999


Versions of Performer that support VGXT
 

Performer system and feature query for IrisGL and OpenGL
 

How well does VGXT run under Performer?
 


What versions of Performer support VGXT?

The last version of performer that recognises (and thus optimizes) VGXT is version 2.0.4 (performer 2.0 plus patch 1347 and 1392) under Irix 6.2 and version 2.0.2 (performer 2.0 plus patch1414) under Irix 5.3. Later versions of performer (2.2 anyway) fail to identify VGXT (and assume InfiniteReality!) under both IrisGL and OpenGL.

Performer System and Feature Query for IrisGL and OpenGL

The following tables give some information on the capabilities of the VGXT graphics boardset under Performer 2.0 and are derived from the querysys and queryftr programs provided with the performer demo source in /usr/share/Performer/src/pguide/libpr.

GL TYPE: IRISGL                    GL TYPE: OPENGL
 NUM_CPUS:                  1       NUM_CPUS:                   1
 NUM_SCREENS:               1       NUM_SCREENS:                1
 SIZE_PIX_X:                1280    SIZE_PIX_X:                 1280
 SIZE_PIX_Y:                1024    SIZE_PIX_Y:                 1024
 MAX_SNG_RGB_BITS:          8       MAX_SNG_RGB_BITS:           8
 MAX_SNG_ALPHA_BITS:        8       MAX_SNG_ALPHA_BITS:         0
 MAX_DBL_RGB_BITS:          8       MAX_DBL_RGB_BITS:           8
 MAX_DBL_ALPHA_BITS:        8       MAX_DBL_ALPHA_BITS:         0
 MAX_DEPTH_BITS:            24      MAX_DEPTH_BITS:             24
 MAX_STENCIL_BITS:          8       MAX_STENCIL_BITS:           8
 MAX_MS_SAMPLES:            0       MAX_MS_SAMPLES:             0
 MAX_MS_DEPTH_BITS:         24      MAX_MS_DEPTH_BITS:          0
 MAX_MS_STENCIL_BITS:       8       MAX_MS_STENCIL_BITS:        0
 TEXTURE_MEMORY_BYTES:      -1      TEXTURE_MEMORY_BYTES:       -1
 MAX_TEXTURE_SIZE:          -1      MAX_TEXTURE_SIZE:           -1
I'm not sure why the texture memory and size fields are set at -1, however the VGXT definitely supports 256k of texture memory with a largest tile of 256x256 RGBA with 8 bit components. (In actual fact each IE on the RM3 has 640kb of memory for textures. I assume that the remainder is used during texture operations and/or to store additional texture related information).

Here is the output from queryftr for both IrisGL and OpenGL. Clicking on the feature string in the IrisGL column will get you the relevant info about the feature string from the performer 2.0 pfQueryFeature man page. Note that N means the feature is not supported, Y means the feature is supported and FAST means that it is probably reasonable to use this feature in a real time simulation.

GL TYPE: IRISGL                    GL TYPE: OPENGL
 VSYNC =                    FAST    VSYNC =                     N
 VSYNC_SET =                FAST    VSYNC_SET =                 N
 GANGDRAW =                 N       GANGDRAW =                  N
 HYPERPIPE =                N       HYPERPIPE =                 N
 STEREO_IN_WINDOW =         N       STEREO_IN_WINDOW =          N
 MULTISAMPLE =              N       MULTISAMPLE =               N
 MULTISAMPLE_TRANSP =       N       MULTISAMPLE_TRANSP =        N
 MULTISAMPLE_ROUND_POINTS = N       MULTISAMPLE_ROUND_POINTS =  N
 MULTISAMPLE_STENCIL =      N       MULTISAMPLE_STENCIL =       N
 COLOR_ABGR =               FAST    COLOR_ABGR =                FAST
 DISPLACE_POLYGON =         N       DISPLACE_POLYGON =          FAST
 POLYMODE =                 FAST    POLYMODE =                  FAST
 TRANSPARENCY =             Y       TRANSPARENCY =              Y
 MTL_CMODE =                FAST    MTL_CMODE =                 FAST
 FOG_SPLINE =               N       FOG_SPLINE =                N
 ALPHA_FUNC =               FAST    ALPHA_FUNC =                FAST
 ALPHA_FUNC_COMPARE_REF =   FAST    ALPHA_FUNC_COMPARE_REF =    FAST
 BLENDCOLOR =               N       BLENDCOLOR =                FAST
 BLEND_FUNC_SUBTRACT =      N       BLEND_FUNC_SUBTRACT =       FAST
 BLEND_FUNC_MINMAX =        N       BLEND_FUNC_MINMAX =         FAST
 FRAMEZOOM =                N       FRAMEZOOM =                 N
 LMODEL_ATTENUATION =       FAST    LMODEL_ATTENUATION =        N
 LIGHT_ATTENUATION =        N       LIGHT_ATTENUATION =         FAST
 LIGHT_CLR_SPECULAR =       N       LIGHT_CLR_SPECULAR =        FAST
 TEXTURE =                  FAST    TEXTURE =                   FAST
 TEXTURE_16BIT_IFMTS =      N       TEXTURE_16BIT_IFMTS =       FAST
 TEXTURE_SUBTEXTURE =       N       TEXTURE_SUBTEXTURE =        FAST
 TEXTURE_TRILINEAR =        N       TEXTURE_TRILINEAR =         N
 TEXTURE_DETAIL =           N       TEXTURE_DETAIL =            N
 TEXTURE_SHARPEN =          N       TEXTURE_SHARPEN =           N
 TEXTURE_3D =               N       TEXTURE_3D =                FAST
 TEXTURE_PROJECTIVE =       N       TEXTURE_PROJECTIVE =        FAST
 TEXTURE_EDGE_CLAMP =       N       TEXTURE_EDGE_CLAMP =        N
 TEXTURE_CLIPMAP =          N       TEXTURE_CLIPMAP =           N
 READ_MSDEPTH_BUFFER =      N       READ_MSDEPTH_BUFFER =       N
 COPY_MSDEPTH_BUFFER =      N       COPY_MSDEPTH_BUFFER =       N
 READ_TEXTURE_MEMORY =      N       READ_TEXTURE_MEMORY =       N
 COPY_TEXTURE_MEMORY =      N       COPY_TEXTURE_MEMORY =       N
What amazes me (if this info is really correct) is that VGXT appears to support a lot more features under OpenGL than it did under IrisGL! Unfortunately a search through previous messages in the comp.sys.sgi.* hierarchy shows that the OpenGL port to VGXT implements textures in software and is very, very slow. (I suspect the queryftr program is lying through its teeth when it states that texture support is FAST!). Anyway here is the glxinfo information for VGXT as well:
 
display: :0.0
server glx vendor string: SGI
server glx version string: 1.1 Irix 6.2
server glx extensions (GLX_):
    EXT_import_context, EXT_visual_info, EXT_visual_rating,
    SGI_make_current_read, SGI_swap_control, SGI_video_sync, SGIS_multisample,
    SGIX_fbconfig, SGIX_pbuffer, SGIX_video_resize, SGIX_video_source.
client glx version 1.1
client glx extensions (GLX_):
    EXT_import_context, EXT_visual_info, EXT_visual_rating,
    SGI_make_current_read, SGI_swap_control, SGI_video_sync, SGIS_multisample,
    SGIX_fbconfig, SGIX_pbuffer, SGIX_video_resize, SGIX_video_source.
OpenGL vendor string: SGI
OpenGL renderer string: VGXT/10
OpenGL version string: 1.0 Irix 6.2
OpenGL extensions (GL_):
    EXT_abgr, EXT_blend_color, EXT_blend_logic_op, EXT_blend_minmax,
    EXT_blend_subtract, EXT_convolution, EXT_copy_texture, EXT_histogram,
    EXT_packed_pixels, EXT_polygon_offset, EXT_subtexture, EXT_texture,
    EXT_texture3D, EXT_texture_object, EXT_vertex_array, SGI_color_matrix,
    SGI_color_table, SGI_texture_color_table, SGIX_texture_scale_bias.

   visual  x  bf lv rg d st  r  g  b a  ax dp st accum buffs  ms 
 id dep cl sp sz l  ci b ro sz sz sz sz bf th cl  r  g  b  a ns b
-----------------------------------------------------------------
0x20  8 pc  .  8  . c  .  .  .  .  .  .  . 24  8  .  .  .  .  . .
0x2a 12 pc  . 12  . c  .  .  .  .  .  .  . 24  8  .  .  .  .  . .
0x2b 12 pc  . 12  . c  y  .  .  .  .  .  . 24  8  .  .  .  .  . .
0x31 24 tc  . 24  . r  .  .  8  8  8  .  . 24  8 16 16 16 16  . .
0x32 24 tc  . 24  . r  y  .  8  8  8  .  . 24  8 16 16 16 16  . .


How well does Performer run on VGXT?

Unfortunately the usual performer town and village demos do not run at all well on VGXT - however this is not a function of the geometry/imaging speed of the VGXT boardset. The real reason is that performer is bogged down in the draw process with texture paging. The town demo has approx. 6Mb of textures and these have to be swapped in and out of the VGXT 256k TRAM in order to render the scene. This is why varying the LOD range, window size and other settings doesnt improve the frame rate from its misery level of < 1 frame/sec. It is also why gr_osview shows a huge kernel and syscall load on the CPU - indeed the high priority performer processes get so busy that the system bogs down! It's also unfortunate that performer 2.0.4 perfly gfx stats do not show this texture download activity! Perhaps this is related to the mysterious -1 values returned for texture memory and largest texture tile size by querysys above.

Switching perfly from IrisGL to OpenGL and restarting the town demo seems to bear out the software texture implementation rumour for OpenGL on VGXT. Basically textures disappear completely and the frame rate is even worse than before (indeed you cannot even get a number because it seems that the stats arent even collectable from VGXT under OpenGL)

A real performer demo for VGXT will probably have to follow skyfly (ie. just 2-3 small textures) because VGXT has such a small TRAM and (to a lesser extent) lacks the fast_define/subtexture capability in IrisGL. If time permits I may try to reduce the resolution of the performer town demo textures in order to give VGXT a half decent demo (other than skyfly of course).