PowerVR Midas 3 review

From arcades to PC

PowerVR made big waves in 1996, claiming impressive 3d performance figures and unique approach removing "memory bandwidth bottleneck". PowerVR was a 3d technology developed by VideoLogic, British company which in the middle of the 90's had strong position among multimedia and graphics products for personal computers. While VideoLogic's 3d team was developing own rendering techniques and logical design, they also needed a company which would translate it into real silicon and they found such partner in Japanese NEC.
First PowerVR product targeted arcade systems and big names like Namco and Sega were developing games for it. Probably strong ties to Japanese games were created thanks to their close relationship with NEC, but that does not mean the hardware didn't have to be good. In fact screenshots from some games like Rave Racer are amazing and there were plans for a system more powerful than Real3D monsters. Early hardware design split the graphics pipeline into two chips: Image Synthesis Processor (ISP, codename Sabre, don't want to guess what it stands for) and Texture and Shading Processor (TSP, TexAS) and combined them with one surprisingly big bridge chip. This allowed ISP scalability, up to four chained in one machine, though the arcade hardware I've seen so far used only two ISPs. The basic single ISP and TSP configuration was first to be made available for PC gamers. It was not a retail product, Compaq used it for Presario line in second half 1996. It is codenamed Midas 3, and there is early SGL and DirectX 3 driver available.

The card

There are three chips in huge packages, probably because of their high pin count. Single chip solution was probably out of NEC's possibilities until later that year. All the memory chips came from NEC as well. Clock is sourced directly from 66 MHz crystal. Pair of SDRAM in upper left corner is connected through narrow 32 bit memory bus. That is one megabyte capacity available for textures. Below these is additional pair of 512kB 16 bit chips to store geometry data, but this time it is Fast Page Mode DRAM. Deferred renderer needs to receive all the geometry before drawing begins, to perform their depth sorting. No display output is needed since images are sent to primary card over PCI bus and can be combined in frame buffer by controlled overlay. While it means lower cost, easier installation and no signal concerns like with Voodoo dongles this also makes PowerVR solution somewhat more sensitive to PCI bandwidth and primary card capabilities. PowerVR's hardware abstraction layer adds 3d acceleration features to primary card, making it virtually single device. Since the primary card serves as a framebuffer, available 3d modes are dependent on amount of video memory of primary card. Maximum resolution of Midas 3 is 1024x1024, and since PowerVR advertised besides 16 bit also native 24 bit output, double buffered rendering at maximal resolution would require primary card with at least 6MB of memory. Even if Midas 3 does not have the power to actually push games in that resolution, it would not be found in systems with weak display adapters. Steep CPU demands would restrict its usage to high end PC's anyway.

Unlike younger PowerVR cards this one eats some watts and needs heatsink for power regulating transistor.

Question is how to calculate bandwidth of local memory. There is obvious 240 MB/s peak for the texturing buffer, but additionally the geometry memory, also with 32 bit bus and 66 MHz clock. In Fast Page operation latency is 45ns, making it potentially big addition. If I am right and it only serves as a buffer for PCI communication, then it should not be added to the texturing bandwidth.

Architecture

The chip's features has three main highlights: Infinite Planes, "tiled deferred" rendering and on-chip "Z-buffering" equivalent to 32 bit precision. What is "tile rendering"? Rectangle of visible pixels is called a tile, and the tiles are processed one by one in ISP. When whole tile is drawn, it is dumped into the primary card and the ISP moves onto rasterizing another tile. Final frame is composed of these small tiles. To enable on-chip depth calculations Midas 3 first gathers all the geometry for given frame in memory connected to the control chip. ISP contains 32 processor elements working on one pixel each. It discards hidden pixels and for those visible finds closest surface from which color will be determined. Z-buffer in local memory with its hassles is completely eliminated.


Plentiful artifacts may be good for exposing tile size- 32x32 pixels.

Tiles are small enough to fit into fast 12 kB cache of ISP where hidden pixel can be quickly rejected from rendering. Thus only visible surfaces are textured, shaded and lit, greatly reducing needed amount of graphics operation and memory transfers. By eliminating overdraw the PowerVR approach is insensitive to scene complexity. If the surface is translucent, color values are stored in an accumulation buffer which can store up to 16 values for operations determining final pixel color. This leads to coarse alpha blending accuracy, but outside of smooth transitions can go unnoticed. And with hardware of this age, any alpha blending is a plus. This technique, which traces depth of scene per pixel, goes well in hand with infinite planes special effects, since calculation of volume for effects needs such tracing as well. More about infinite planes will be said in PCX1 review. The TSP applies textures onto pixels produced by the ISP. It has own 4kB parameter cache and performs true perspective correction by per pixel division. Supported are square texture sizes from 32x32 to 256x256 pixels, and RGB(A) color formats of 232, 555 and 4444. This means texture translucency is limited to 16 levels, just like whole objects. Otherwise color calculations are done in 24 bit precision. Fog is calculated logarithmically with programmable color. Finished tiles are sent to primary card over PCI, Midas 3 is happy with minimalistic 32 bit memory bus used quite exclusively for texturing. On the negative side of this approach is the extra capacity of locally stored display list. Also data for triangles overlapping more tiles have to be sent to the chip multiple times, but the additional traffic is much lower than what deferred tiling saves. Shading abilities under direct3d are most basic. Specular highlights are not supported, and only SGL demos show what the architecture is capable of:


Only proprietary API unleashes possibilities of Midas 3.

Infinite planes or n-sided polygons were not part of Open APIs and full capabilities of PowerVR can be exploited only through proprietary SGL API. It is high-level object oriented API used by approximately 20 games and of course PowerVR's demos. The API also supported data instancing to save memory by avoiding duplicates of materials, transformations and objects.

Experience

Midas 3 is compatible with PowerVR driver versions 3.x and latest I found was 3.1c3 from spring 1997. I would like to test performance differences with various primary cards, but at first it seemed to me Midas 3 was working pretty much only with Virge cards. Guess that is what the Presario line was using. Actually the Virge /GX2 used in the beginning brought me more problems than the Midas actually have. With Verite as primary adapter it works much better (thanks Vetz). I used 2200 AGP 8MB model hoping that is the fastest choice for PowerVR.


Nightmare Creatures in glorious 1024x768 resolution- example of PowerVR Extreme title.
View PowerVR screenshot gallery

While PowerVR's demos are working, most of SGL games will reject Midas 3. The version 3.x SGL libraries do not support features that PCX enjoyed. MDK, Tomb Raider or Unreal are among such games, along with minigl libraries for PCX. Direct3d compatibility is also somewhat reduced, talk about baseline. Specular highlights are possibly supported, but anything else than d3dtest will crash the system. When using Virge as primary adapter newer d3d games will usually end in black screen after first frame is rendered, and you can just blindly restart your computer. Let's go over games that run nonetheless. First CartX racing, full of polygons popping into track, invisible cars, sky filled with random garbage and broken transparency. Daytona USA Deluxe with first driver run without fog, car textures randomly disappearing and soon froze. With last driver the Midas 3 tried to render fog, but even more artifacts occurred, making the game unplayable even if it did not freeze in the same place like reference driver. Flight Simulator 98 is a keeper, but framerate and stability were insufficient.


Flight Simulator 98 is one of those games that gives a chance to any d3d accelerator.
View Midas 3 screenshot gallery

In Heavy Gear shots occluded by the mech makes the first texture in tile transparent. Interstate 76 suffers from wrong texture colors and broken transparency. MDK with d3d renderer has also broken transparency but will start, however it freezes right after Kurt enters the scene. Mechwarrior 2 suffers from broken transparency and disappearing dynamic lighting. Monster Truck Madness 2 was game prepared for PowerVR, and Midas 3 is even trying to perform environmental mapping here, but failing, just like in few other features. Sub Culture is another title with PowerVR in mind, but fogging is not working, underwater light rays are crude white lines, so there is not much left from the atmosphere. Take No Prisoners looked just fine. Wind Commander Prophecy turned out quite good, only big disadvantage is inability to texture space. I tried other d3d games that aren't benchmarked, only Dungeon Keeper was somewhat playable. That and Hyperblade:


One of the first Direct3d games released, it plays just fine on Midas 3 without any visual anomalies. Using the Verite as primary adapter opened more possibilities. Battlezone ran substantially correct. Transparent parts of Formula 1 textures were rendered purple. Transparencies in Forsaken were a bit better, but on some projectiles with obvious black tint. Smoke in Incoming was always rendered in front of everything, buildings were not textured and explosions missed lens flares. Space in Homeworld was just black without any color and mothership was glitchy. Mortal Kombat 4 ran without video textures, but with familiar transparency issues. Sky in Motoracer is a big glitch. Motoracer 2 on the other hand had only minor issues, though a switch for limited texture size had to be used. The shadows of characters in Resident Evil are fully black. Shogo without fog was recognizable, but the game was locking up after an intense firefight, so revshogo demo cannot be completed. Tomb Raider 2 has minor Z issues. Advanced effects of Ultimate Race Pro do not work properly. Even without them, the game was too unstable to complete a demo in 640x480 resolution. Well, there was the one track version of the original Ultimate Race distributed with Midas 3. It might be the most impressive SGL game, but with this first card, performance is so so. Speaking of which..

Performance

Finally, what do those DirectX games Midas3 handles say about its performance? It falls quite far behind theoretical values, and probably not only drivers are to blame. Even in SGL, to me rather surprisingly, Midas 3 is obviously slower than PCX1. POD for example, with it's unmodifiable PowerVR preset, has troubles reaching 20 frames per second.


Click on the image to see minimal framerates.

Here is comparison with Permedia-Ti by 3DLabs. While the Permedia had own bunch of issues with color blending and bilinear texture filtering, it undoubtedly produced better image quality. Uneven match up at first look, even when the one result from d3d emulation layer is excluded. The poor performance in Carmageddon II, albeit still higher than NV1 by the way, thus should not be counted. Midas 3 offered around 90% average framerate of this particular Permedia-Ti. By extrapolation of the result we get speed parity with first Permedia produced by IBM, which was also closer to market availability of Midas 3. The minimal framerates are disappointing, Midas 3 dives by whole third lower than Permedia. This PowerVR chipset did not offer much of the declared revolutionary 3d performance. Only upside is little to no performance decrease in true color modes.

Conclusion

Midas 3 was a rather short lived product, not much better than first consumer 3d accelerators. It is partially dictated by limited hardware abilities under open APIs, small texture memory, but also by interrupted driver support. It is not hard to see why, the following single chip product was a lot more efficient solution. But if I was a gamer owning Midas 3, I would probably be dissapointed and look for upgrade elsewhere than VideoLogic/NEC. Perhaps fortunately for them, it was limited deal and not many people spent money on unproven accelerator. There is but a handful of SGL and D3D games this card can start, let alone play properly. And it promised so much more. However, PowerVR delivered more mature PCX1 chip long before the limitations of Midas 3 could become obvious.

continue to PCX1 review