VOGONS


Reply 100 of 239, by Gona

User metadata
Rank Member
Rank
Member

I have bought a rare Permedia NT card (Permedia + Delta): Leadtek WinFast 3D L2200.
Although the card works without problems in 2D and Direct3D but not works with CGL.
The DTDTEST writes: Init Screen Device Unsuccesful
I have tested two "IR" type CGL games too (Battle Arena Toshinden and Rebel Moon/PCI) but both are crashed.
The Leadtek card has 3Dlabs Permedia chip (vendor 3D3D; device 0004) so I have tested with original PDLTB170.CGL.
But this card has not IBM DAC (like the Creative prototype and the Diamond card) but has Ti DAC, might this is why it is not compatible.

Last edited by Gona on 2020-08-28, 05:35. Edited 1 time in total.

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 101 of 239, by Montaron

User metadata
Rank Newbie
Rank
Newbie

Amazing work guys, I have a Creative 3d Blaster PCI and the Fire GL 1000 Permedia NT card if you want me to do any testing.

Might have to walk me though it I'm not caught up on all your CGL work.

Ye already be disturbed; now leave me be. Yer company be toil enough as is.

Reply 102 of 239, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

You're doing God's work, furan. Please keep up the good work! 😀 I am sure MAMEdev and PCem-dev will be interested in all of the hardware info you can glean and put together in a dossier at the completion of your reverse engineering.

There was a demoscene demo which used Creative CGL. It's a long shot, but I once thought about identifying and reaching out to the members of that demoscene group on the off chance that one of them might still have the Creative CGL Software Development Kit, which as far as I can remember has yet to be leaked. Re: Fun with CGL (Creative Graphics Library) on 3D Blaster

PS. I have thought about merging that thread with this one, furan, lemme know what you think?

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 103 of 239, by furan

User metadata
Rank Member
Rank
Member
Stiletto wrote on 2020-08-28, 03:57:

You're doing God's work, furan. Please keep up the good work! 😀 I am sure MAMEdev and PCem-dev will be interested in all of the hardware info you can glean and put together in a dossier at the completion of your reverse engineering.

Thanks!

Stiletto wrote on 2020-08-28, 03:57:

There was a demoscene demo which used Creative CGL. It's a long shot, but I once thought about identifying and reaching out to the members of that demoscene group on the off chance that one of them might still have the Creative CGL Software Development Kit, which as far as I can remember has yet to be leaked. Re: Fun with CGL (Creative Graphics Library) on 3D Blaster

Yeah I had tried looking around for them a bit but didn't have much luck.

Stiletto wrote on 2020-08-28, 03:57:

PS. I have thought about merging that thread with this one, furan, lemme know what you think?

If you want to sure - I wasn't sure if someone would grump about me posting on an old thread, but I am fine merging them.

Reply 104 of 239, by furan

User metadata
Rank Member
Rank
Member
Gona wrote on 2020-08-26, 14:21:

But this card has not IBM DAC (like the Creative prototype and the Diamond card) but has Ti DAC, might this is why it is not compatible.

Quite possible. PDLTB170.CGL shares a lot of 3DLabs specific code with the GiGi driver - which I have a static linkable .lib of. It's funny, I can go through my disassembly which is symbol-free of the Permedia driver, and identify tables and things by their references and similar data in the GiGi .lib, which contains symbols. I will try and see if I can find the DAC initialization and nop it out and share the driver just so we can see what happens.

Reply 105 of 239, by furan

User metadata
Rank Member
Rank
Member

I tried to reach out to some of the folks who worked on CGL - one was kind enough to reply with "CGL is no longer supported" - but I don't think I'm going to get anywhere asking them for help, unforunately.

Reply 107 of 239, by vetz

User metadata
Rank l33t
Rank
l33t

If you're going to get a reply its probably from those demoscene people.

For some reason hardware engineers/developers don't seem that interested in talking about older projects they worked on, which I feel is strange since if I ask any of my older colleagues what they worked on in the past they happily share what they remember. NDA's must have run out by now or not even be relevant?

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 108 of 239, by furan

User metadata
Rank Member
Rank
Member
vetz wrote on 2020-09-01, 08:49:

If you're going to get a reply its probably from those demoscene people.

For some reason hardware engineers/developers don't seem that interested in talking about older projects they worked on, which I feel is strange since if I ask any of my older colleagues what they worked on in the past they happily share what they remember. NDA's must have run out by now or not even be relevant?

I agree on the demoscene folks.

If you are still working for the same company your NDA still applies (no time frame), and most of the CGL folks I tried to talk to still work for Creative and have titles like VP/President now.

Reply 109 of 239, by Stiletto

User metadata
Rank l33t++
Rank
l33t++
furan wrote on 2020-09-01, 08:39:

Tried harder to find members of the "Spanish Lords" demoscene group - I found two of them and sent them messages asking about CGL. Not expecting much.

Awesome!

As for former engineers, in general I've only ever had luck with obtaining useful info from American and British former engineers, I usually see more of an openness (and packrat nature) to them, something of a cultural bias - though I may be just imagining things. But my experience comes of 20+ years of researching things on behalf of MAMEdev.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 110 of 239, by furan

User metadata
Rank Member
Rank
Member
Stiletto wrote on 2020-09-01, 17:07:

As for former engineers, in general I've only ever had luck with obtaining useful info from American and British former engineers, I usually see more of an openness (and packrat nature) to them, something of a cultural bias - though I may be just imagining things. But my experience comes of 20+ years of researching things on behalf of MAMEdev.

Well, Spanish engineers seem to come through as well. 😀 One of the group members replied to me and gave me the code from this demo for the s3 Virge and CGL. The CGL code is mostly what we had but includes HOTCGL.LIB which was the really important missing piece I was trying to reconstruct. Suggesting we reach out to them was a good idea, thanks.

This can be downloaded here: https://www.dropbox.com/s/6xadyljtn548mr7/3DB.First.rar?dl=0
Gona, this has some CGL files you might want to compare them to what you have but I think they're just the same Verite drivers you have.

It is enough to patch an open source game to use CGL. I don't think it's complete, I think there was some helper code, at least looking at the strings in the symbol data in DTDTEST:
Have:
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGL.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGL20.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLDEF.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLERR.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTYPE.H

Missing? Or just a part of DTD?
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLLINER.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLLINER.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLPOLYR.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLPOLYR.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLREND.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLREND.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSPRIT.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSPRIT.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSTREA.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSTREA.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTR.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTR.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTU.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTU.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLVIDEO.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLVIDEO.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\PRAG.H

Reply 111 of 239, by vetz

User metadata
Rank l33t
Rank
l33t

That is awesome news!

Did you ask him the story behind this demo? I'm actually curious to how they acquired the CGL/Virge information to be able to code the demo. They must have had some connection/contact with Creative.

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 112 of 239, by Gona

User metadata
Rank Member
Rank
Member
furan wrote on 2020-09-07, 19:07:
Well, Spanish engineers seem to come through as well. :) One of the group members replied to me and gave me the code from this d […]
Show full quote
Stiletto wrote on 2020-09-01, 17:07:

As for former engineers, in general I've only ever had luck with obtaining useful info from American and British former engineers, I usually see more of an openness (and packrat nature) to them, something of a cultural bias - though I may be just imagining things. But my experience comes of 20+ years of researching things on behalf of MAMEdev.

Well, Spanish engineers seem to come through as well. 😀 One of the group members replied to me and gave me the code from this demo for the s3 Virge and CGL. The CGL code is mostly what we had but includes HOTCGL.LIB which was the really important missing piece I was trying to reconstruct. Suggesting we reach out to them was a good idea, thanks.

This can be downloaded here: https://www.dropbox.com/s/6xadyljtn548mr7/3DB.First.rar?dl=0
Gona, this has some CGL files you might want to compare them to what you have but I think they're just the same Verite drivers you have.

It is enough to patch an open source game to use CGL. I don't think it's complete, I think there was some helper code, at least looking at the strings in the symbol data in DTDTEST:
Have:
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGL.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGL20.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLDEF.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLERR.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTYPE.H

Missing? Or just a part of DTD?
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLLINER.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLLINER.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLPOLYR.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLPOLYR.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLREND.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLREND.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSPRIT.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSPRIT.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSTREA.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLSTREA.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTR.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTR.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTU.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLTEXTU.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLVIDEO.C
C:\CGL1707\DTDNEW\DRIVERS\CGL\CGLVIDEO.H
C:\CGL1707\DTDNEW\DRIVERS\CGL\PRAG.H

Great!
OK, I have checked, the CGL-s are "Verite CGL 1.70 beta 4", but before we have only the "FR" type (VRITE170.CGL) but this is full set with all the four types.
I have updated our CGL collection.

Attachments

  • Filename
    all_CGL_files.zip
    File size
    1.04 MiB
    Downloads
    65 downloads
    File license
    Public domain

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 113 of 239, by Stiletto

User metadata
Rank l33t++
Rank
l33t++
Gona wrote on 2020-09-07, 20:44:

Great!

Decided to merge the threads, especially when I saw Gona had linked the old thread to his page about CGL.
...
Except for some reason it didn't do what I thought. Gona, please update your link to this one.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 114 of 239, by Gona

User metadata
Rank Member
Rank
Member
Stiletto wrote on 2020-09-08, 00:42:
Decided to merge the threads, especially when I saw Gona had linked the old thread to his page about CGL. ... Except for some re […]
Show full quote
Gona wrote on 2020-09-07, 20:44:

Great!

Decided to merge the threads, especially when I saw Gona had linked the old thread to his page about CGL.
...
Except for some reason it didn't do what I thought. Gona, please update your link to this one.

The merge is good idea. OK, I'm going to update my link .

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 115 of 239, by Gona

User metadata
Rank Member
Rank
Member
Stiletto wrote on 2020-09-08, 00:42:

Decided to merge the threads, especially when I saw Gona had linked the old thread to his page about CGL.
...
Except for some reason it didn't do what I thought. Gona, please update your link to this one.

Thanks for the merge. I have updated the links and page contains too.

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 116 of 239, by vetz

User metadata
Rank l33t
Rank
l33t

I'll update the first post in this thread with a summary of all the new info. I'll also include all the info about the CGL version of Descent which have some circumstantial evidence actually existed at some point (I posted that in Games with unreleased support on 3D Blaster/NV1/PowerVR/Rendition).

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 117 of 239, by furan

User metadata
Rank Member
Rank
Member
vetz wrote on 2020-09-08, 12:29:

I'll update the first post in this thread with a summary of all the new info. I'll also include all the info about the CGL version of Descent which have some circumstantial evidence actually existed at some point (I posted that in Games with unreleased support on 3D Blaster/NV1/PowerVR/Rendition).

I was actually looking at Descent yesterday to see if it would be easy to port. I didn't realize it had been done. I found this press release on USENET:

NEWS RELEASE
--------------------------
3Dlabs Redefine PC Graphics with PERMEDIA Family of
Graphics Processors for Pervasive 3D

High-performance 2D, 3D, video and VGA acceleration on a single chip;
PERMEDIA boards will run Creative Labs 3D Blaster games

SAN JOSE, CA - October 23, 1995 - 3Dlabs Inc. today announced its
second-generation, low-cost 3D graphics accelerator family --
PERMEDIA(tm) -- that sets a new standard for integrated 2D, 3D and
video acceleration. PERMEDIA delivers 3D performance up to four times
greater than any other announced graphics chip or video games system -
at pricing equal to many 2D-only graphics boards. PERMEDIA will be
available to selected OEMs in the first quarter of 1996, and drives
the price of a complete multimedia graphics solution to below $250.

PERMEDIA generates 25 million texture-mapped pixels-per-second with
high quality, true per-pixel perspective correction and full bi-linear
filtering. PERMEDIA's well-balanced 3D capabilities also include
Gouraud shading, optional Z-buffering, fogging, blending,
translucency, overlays and stencils at a rate of up to 500,000 50
pixel triangles-per-second. PERMEDIA contains a compact and highly
optimized unified graphics engine, re-architected using technology
developed for 3Dlabs' GLINT(r) workstation-class graphics processors.
PERMEDIA is also protected with the same fundamental patent estate as
the GLINT product line.

"I believe that 3Dlabs is positioned to be the leading provider of 3-D
graphics in desktop PCs. The PERMEDIA chip strikes an impressive
price/performance balance and they have the strategic partners, like
Creative Labs, necessary to grow the market for entertainment-class
3-D graphics," said Geoff Ballew, semiconductor application market
industry analyst, at Dataquest.
Microsoft Corp. are using 3Dlabs-based hardware as a primary
development platform for the Direct 3D(tm) and Reality Lab real-time
3D APIs. PERMEDIA provides 100% hardware rasterization acceleration
for the Microsoft APIs under Windows(r) 95 - providing levels of 3D
performance far exceeding that of any games console on the market.

"3DLabs is a long established affiliate of Microsoft in bringing
hardware acceleration to our full range of 3D APIs, from Reality Lab
and Direct 3D(tm) to OpenGL(r)." said Kate Seekings, 3D technology
evangelist at Microsoft. "PERMEDIA is a significant step in making 3D
acceleration pervasive on the Windows-based desktop, with
unprecedented levels of performance and functionality. Microsoft
plans to support the PERMEDIA architecture, helping to ensure that
users of Windows can take full advantage of its capabilities through
Microsoft's 3D APIs."

"3Dlabs is the leading supplier of 3D silicon on the PC and we are now
redefining the dynamics of that market," said Osman Kent, president
and CEO of 3Dlabs. "With the introduction of PERMEDIA, 3Dlabs is
providing a mainstream, pervasive 3D/multimedia chip that can replace
not only today's high-end VGA products, but also any 3D game-oriented
silicon. While many companies are trying to bring their first game
silicon to life, we have already delivered robust silicon through
GLINT and 3D Blaster in both the professional and entertainment market
segments. Our vision now is to make world-class 3D available on every
new PC, be it in the home, office or plane. Our licensing program and
merchant chips in the PERMEDIA family are moving us aggressively
toward this goal."

The first-generation, low-cost 3D chip from 3Dlabs was used
exclusively by Creative Labs on their 3D Blaster(tm) board, which will
be shipping in volume this Christmas. Creative plans to use custom
versions of PERMEDIA for future boards in the 3D Blaster family.

Creative has been closely involved in the PERMEDIA design process and
has worked with 3Dlabs to make 3D Blaster titles run on any
PERMEDIA-based board without modification. This is possible due to
the functional compatibility between 3D Blaster and PERMEDIA, and
industry standard APIs - such as Microsoft's Reality Lab and Direct
3D. Many titles shipping today on 3D Blaster use Creative's CGL
graphics library. Creative has licensed CGL to 3Dlabs - enabling
CGL-based games titles to also run unmodified on PERMEDIA based cards.

"The PERMEDIA architecture is the ideal platform for our continuing
relationship with 3Dlabs," said Hock Leow, vice president of the video
and graphics product group at Creative. "PERMEDIA not only provides
outstanding 3D performance for games and other pervasive 3D
applications, but also includes the high performance 2D and video
functionality we need to make our boards excel at accelerating all the
graphics applications used by our customers. We are committed to
working with 3Dlabs to make PERMEDIA the leading 3D architecture for
pervasive 3D. Licensing our software to 3Dlabs provides a tremendous
momentum to PERMEDIA by providing an immediate collection of top
quality games for PERMEDIA-based boards."

"By definition, pervasive 3D includes all the entertainment
applications," said Henry Choy, director of entertainment products at
3Dlabs. "We received a lot of positive feedback from the game
developer community about Creative's 3D Blaster board. We listened
carefully to their comments and integrated the performance and
functionality into PERMEDIA to make it the leading next-generation 3D
games accelerator."

While games have been the first high-volume 3D market segment, 3D
graphics will become even more pervasive during 1996 with 3D
capabilities being integrated into everyday applications such as 3D
Web browsers, multimedia navigators, digital publishing, financial
visualization, presentation packages and the graphic user interface
itself. 3Dlabs is working closely with many 3D applications
developers, ensuring that key vendors have access to hardware and
technical support, ensuring that software is optimally accelerated by
GLINT and PERMEDIA cards.

PERMEDIA's seamlessly integrated 2D performance exceeds that of
today's fastest accelerators for the Microsoft Windows 95 operating
system, and its video processing capabilities include MPEG-compatible
YUV color conversion and fully filtered, bi-linear scaling to provide
30fps video playback at full-screen resolution. In addition, video
can be freely used as a perspective texture, enabling real-time video
effects to be generated with ease - one example of how 3D-based chips
are inherently more powerful than the current generation of 2D-only
chips. On-chip VGA is also fully accelerated providing unmatched
performance for legacy VGA-based software and games.

PERMEDIA makes advanced 3D acceleration affordable and widespread,
fueling the growth of the market for 3D software. PERMEDIA is the
first pervasive 3D graphics chip that is both inexpensive enough to be
used in low-cost games boards, and has the performance and
functionality to be used for everyday 2D and 3D graphics tasks,
including personal productivity applications.

"With GLINT's leadership position in the professional segment, 3Dlabs
has been perceived as being a high-end only 3D chip company. With
PERMEDIA we now have merchant chips for both the professional and
pervasive 3D markets - that makes us unique in the PC industry," said
Neil Trevett, vice president of marketing at 3Dlabs. "We are fully
committed to extending the high-end 3D performance of the PC, and as
3D markets develop, we will continue to migrate and adapt our high-end
3D technologies into PERMEDIA-class devices."

3Dlabs is licensing the PERMEDIA technology to strategic partners
developing high-volume, consumer-class devices that require integrated
3D, 2D and video acceleration. Designed completely in VHDL, PERMEDIA
cores are totally portable and scaleable, allowing this
ground-breaking graphics technology to be easily integrated into
systems-on-silicon designs.

Silicon and Software Support for PERMEDIA
PERMEDIA can be used in conjunction with 3Dlabs' soon-to-be released
floating point 3D-pipeline processor. This combination allows up to
500,000 bilinear-filtered, texture-mapped, 50 pixel
triangles-per-second to be generated on desktop machines by offloading
much of the geometry pipeline from the host CPU. This chip
combination will provide a new level of price/performance for
demanding 3D delivery systems such as arcade games, simulation and
virtual reality.

IBM Microelectronics and 3Dlabs have closely cooperated during the
development of PERMEDIA and the newly-announced IBM RGB526DB LUT-DAC
is the result of this cooperative effort. Both IBM and 3Dlabs have
integrated functionality into their silicon that takes full advantage
of the product features designed into both chips. When the RGB526DB
LUT-DAC is used in conjunction with PERMEDIA, a graphics board can
offer high-quality double-buffering, in multiple independent windows -
an essential feature for pervasive 3D - with no extra memory or
supporting hardware.

3Dlabs will be supporting the widest range of 3D APIs in the industry
with the PERMEDIA architecture, including Reality Lab and Direct 3D.
Productivity application APIs such as Silicon Graphics' OpenGL,
Autodesk's Heidi(tm), Apple's QuickDraw(tm) 3D will also be supported
- allowing any 3D application to be accelerated by a PERMEDIA board.

Technical Information
The PERMEDIA uses the industry-standard, low-cost SGRAM (Synchronous
Graphics RAM) memory architecture for all of its framebuffer and
ancillary buffers such as Z and texture. With a fully synchronous
64-bit external data path, the combination delivers a memory bandwidth
of up to 400 Mbytes/sec. Future devices in the PERMEDIA family using a
higher clock frequency will raise this bandwidth to 800 Mbytes/sec -
doubling graphics performance.

SGRAM is available from many DRAM vendors and is aggressively priced
as synchronous memory becomes the de-facto choice for EDO DRAM
replacement. PERMEDIA takes full advantage of SGRAM's advanced
features such as block write and bit-masking. As all graphics buffers
are kept in SGRAM, software has complete freedom over how the memory
is used - for example, if the PERMEDIA board is being used for pure 2D
work, then all the memory can be used to drive the highest possible
screen resolution.

PERMEDIA uses the innovative BGA (Ball Grid Array) package to achieve
ease-of-integration onto motherboards or graphics cards. PERMEDIA is
a 3.3V, 0.35 micron device with an initial clock frequency of 50MHz.

Company Information
3Dlabs is a worldwide supplier of merchant chips, enabling software
and technology for 3D graphics. The company's products and
technologies enable silicon, board and system vendors to integrate 3D
capabilities into their products for such applications as games,
multimedia, CAD, simulation, virtual reality and interactive TV.
3Dlabs products are protected by over 20 US and international patents.
The GLINT family of graphics processors is recognized as the
industry-standard accelerator architecture for workstation-class
high-performance 3D graphics on the PC, with over 40 companies having
incorporated GLINT into their 3D products. Referred to by the 'The
Red Herring' investment magazine as "the first member of the next
generation of chip vendors", 3Dlabs Inc. is headquartered in San Jose,
CA., was founded in April 1994, and is privately owned.

-30-

PERMEDIA(tm) Testimonials
====================
Market Analysts
"I believe that 3Dlabs is positioned to be the leading provider of 3-D
graphics in desktop PCs. The PERMEDIA chip strikes an impressive
price/performance balance and they have the strategic partners, like
Creative Labs, necessary to grow the market for entertainment-class
3-D graphics."

Geoff Ballew, semiconductor application market industry analyst for
Dataquest.
"The PERMEDIA is 3Dlabs' third generation 3D part. It is the type of
device we have predicted would be offered in 1996, a 3DVGC. 3Dlabs
has taken a leading and aggressive position with this new part."

Jon Peddie of the PC Graphics Report.

Software Developers
"3DLabs is a long established affiliate of Microsoft in bringing
hardware acceleration to our full range of 3D APIs, from Reality Lab
and Direct3D(tm) to OpenGL(r). PERMEDIA is a significant step in
making 3D acceleration pervasive on the Windows(r) - based desktop,
with unprecedented levels of performance and functionality. Microsoft
plans to support the PERMEDIA architecture, helping to ensure that
users of Windows can take full advantage of its capabilities through
Microsoft's 3D APIs."
Kate Seekings, 3D technology evangelist at Microsoft.

"Virgin has a number of truly outstanding games coming out in 1996
that use groundbreaking 3D graphics and texturing effects. With it's
super-console class 3D acceleration, the PERMEDIA will let us deliver
PC titles with levels of performance, responsiveness and 3D realism
that go way beyond what can be done today - which is cool for us and
great for game players."
Tony Fagelman, Internal Development Manager at Virgin Interactive
Entertainment.

"I found porting Descent to the 3D Blaster, which uses 3Dlabs'
technology, to have been easy and straightforward. The initial port
took only 1 week. You can now run Descent at 640x400/15 bit color
with excellent frame rates on a 486/66 based machine. The
specification of PERMEDIA looks even better - 3Dlabs have taken input
from developers and added features such as bilinear filtering and
higher fill rates."
Jay Patel, technical director at Interplay.

"Gremlin have invested heavily in 3D as the future of games with many
of our new products such as Actua Soccer, Fatal Racing and Normality
rely heavily on giving the impression of reality in a 3D world.
Innovations like the new PERMEDIA graphics accelerator are a major
benefit to the games developer and games playing world and can be
nothing but great news, ensuring that longed-for-escapism is as real
as possible."
James North-Hearn, Product Director at Gremlin.

"The PERMEDIA is a truly wonderful chip, our VRML-based browsers have
been waiting for this level of performance to be available at this
price. With the 3D Blaster and now PERMEDIA, low-cost 3D hardware
will become widespread and 3D Web access will be truly enabled. We
will be working closely with 3Dlabs to take full advantage of the full
range of the their silicon - from PERMEDIA to GLINT."
Tony Parisi, co-inventor of VRML and president of InterVista Software.

"We selected 3Dlabs as a 3D acceleration partner for Heidi, and we are
getting great performance on GLINT-based boards with applications such
as 3D Studio MAX. Though not required, 3D hardware enables Heidi to
run at its absolute best, and PERMEDIA will further decrease the cost
to users who want to use 3D accelerators. We look forward to working
closely with 3Dlabs to ensure Heidi is fully supported and optimized
for PERMEDIA-based boards."
Eric Wagner, director of the graphics development group at Autodesk.

Hardware Manufacturers
"The PERMEDIA architecture is the ideal platform for our continuing
relationship with 3Dlabs. PERMEDIA not only provides outstanding 3D
performance for games and other pervasive 3D applications, but also
includes the high performance 2D and video functionality we need to
make our boards excel at accelerating all the graphics applications
used by our customers. We are committed to working with 3Dlabs to
make PERMEDIA the leading 3D architecture for pervasive 3D. Licensing
CGL to 3Dlabs provides a tremendous momentum to PERMEDIA by providing
an immediate collection of top quality games for PERMEDIA-based
boards."
Hock Leow, vice president of the video and graphics product group at
Creative.

"As the number one supplier of immersive Virtual Reality entertainment
equipment, Virtuality lead the field in real-time playing action using
high quality texture mapped 3D graphics. With 3D such a vital part of
our success, the levels of performance PERMEDIA offers can only
enhance the perceptual experience Virtuality users have come to
expect. 3Dlabs have demonstrated that they can deliver to spec. and
we look forward to the availability of PERMEDIA."
Dr. Jonathan D. Waldern, Managing Director, Virtuality Group plc.

"We are committed to use PERMEDIA in our new range of 3D graphics
boards. PERMEDIA provides an unbeatable level of performance and
integration, and being able to leverage Creative's games titles will
give us a very fast start into the 3D games market."
Isaac Levanon, executive vice president of Televideo.

Silicon Manufacturers
"We are excited to add such significant value to boards using PERMEDIA
- per window double buffering is a feature that is extremely valuable
to end-users. It is unusual for graphics chip and LUTDAC vendors to
work so closely together to take advantage of each others products.
From the success of this collaboration we look forward to undertaking
similar projects with 3Dlabs in the future."
Carlos Bielicki, product marketing manager at IBM Microelectronics.

"The PERMEDIA is tremendous endorsement for the SGRAM architecture,
and a truly innovative 3D accelerator that is leading the industry.
Use of SGRAM provides a crucial advantage over burst EDO DRAM as SGRAM
will be easily scaled to single cycle access times up to 100MHz -
something that 3Dlabs will take advantage of. Our company looks
forward to working with 3Dlabs and its PERMEDIA customers to create
the next generation of low-cost graphics cards."
Mueez Deen, Sr. Marketing Manager at Samsung.

"The driving force behind SGRAM is bandwidth, and the rapid emergence
of 3D is a major driver. With 3D graphics accelerators like 3Dlabs'
PERMEDIA chip hitting volume in 1996, Micron's SGRAM with it's
excellent performance-to-cost ratio, is well placed to take advantage
of this growing market."
Paul Watkins, technical marketing & applications manager at Micron.

3Dlabs and PERMEDIA are trademarks, and GLINT is a registered
trademark of 3Dlabs Inc. Ltd. 3D Blaster is a trademark of Creative
Labs. Microsoft, Windows and Direct 3D are either registered
trademarks or trademarks of Microsoft Corporation in the United States
and/or other countries. OpenGL is a registered trademark of Silicon
Graphics Inc. QuickDraw is a trademark of Apple Computer Inc. All
other trademarks are acknowledged.

I asked Brian Fargo about the patch. His answer: "I’m too old to remember that!"

Reply 118 of 239, by furan

User metadata
Rank Member
Rank
Member

On there being 4 types for each driver - the types are FR, IR, FS, and IS (see https://gona.mactar.hu/3D/CGL/). These two characters are in the header and they denote something, but we didn't know what - I had some guesses but wasn't sure.

Well, I can now tell you that the "F" and "I" stand for float and integer (fixed point integer). These are the two ways to do 3D math with any kind of decent accuracy. With floating point you're using float math, which is going to be slower on a 486 - a lot of games were using fixed point math at the time like Descent, etc. "F" drivers expect structs to contain floats, "I" drivers expect them to contain an integer (long) in fixed point format. Looking at the 21st demoscene code sample it looks like the fixed point math uses 16 bits for integer, 16 bits for fraction so 16:16 encoding.

With the CGL SDK, if you want floating point, you have to define CGLFLOAT so that the types are correctly defined as floats in the structures in the SDK headers, and then when you load the driver by calling cglLoad() - a function exported by the linked in HOTCGL.LIB, you pass CGL_CDL_FLOAT for the last parameter instead of CGL_CDL_FIXED. This tells the loader to give you one of those "F" drivers instead of an "I" one.

What what about the R versus S part? That's a little bit sneakier, and it comes down to calling convention. Well, from disassembling several of the CGL supporting game exes I can tell you they're all Sybase Watcom C. Watcom had their own calling convention while everyone else was passing parameters on the stack - they would pass by register -- __stdcall (or if you're a stickler for history sometimes __cdecl) versus __watcall. So this is Register versus Stack calling convention. HOTCGL.LIB has two versions of every function for a program to link to - with one supporting register-based parameters and the other supporting stack based parameters. Likewise, all of the routines in the "R" drivers take their parameters by register whereas all of the routines in the "S" drivers take their parameters by stack. When you include the CGL headers, if a few different compiler environment definitions are defined (__32BIT_COMPILER__, __W32BIT_COMPILER__) every method gets decorated with __stdcall, and the compiler ends up picking the function that will load the "stack" parameter based version of the driver. Otherwise, you will end up linking with the method that will load the "register" parameter version of the driver.

How do I know this? It's a little complicated.

If you look at the "stack" version of cglLoad(), it has the following code:

; type is either CGL_CDL_FIXED (0) or CGL_CDL_FLOAT(2)
_TEXT:00000636 mov edx, [esp+28Ch+type]
_TEXT:0000063D push 0
_TEXT:0000063F lea eax, [esp+290h+var_288]
; incrementing by 1
_TEXT:00000643 inc edx
_TEXT:00000644 push eax
; before passing the type to the internal loader, it's now either 1 or 3.
_TEXT:00000645 mov [esp+294h+type], edx

The "register" version of this code doesn't bother modifying the 'type' variable like this, so it will stay as 0 or 2 before being passed to the internal loader function. The way the header is parsed is a little complicated, so I will leave that out, but the internal loader eventually looks at CGL file offset 0x77, which in these CGL files is either 0, 1, 2 or 3. So in the end those 2 letters in the header were a great hint, but the loader does not look at them - it looks at this offset for one of the following:

0X77: Driver Type
00: CGL_CDL_FIXED, __watcall calling convention
01: CGL_CDL_FIXED, __stdcall calling convention
02: CGL_CDL_FLOAT, __watcall calling convention
03: CGL_CDL_FLOAT, __stdcall calling convention

The callbacks in the drivers follow this pattern - they are either taking register or stack parameters and doing float math or doing a bunch of bit manipulation and integer math. I am still taking the driver format apart. Sorry if that put anybody to sleep but now we know why there's 4 kinds for each driver. 😀

If I read Gona's table right, this means that only the Verite driver got all 4 "flavors" - all other drivers are type 1, fixed point arithmetic + __watcall calling convention. The only linked-in-binary GiGi driver I've seen in game disassembly is the type 1 driver.

Reply 119 of 239, by Gona

User metadata
Rank Member
Rank
Member
furan wrote on 2020-09-09, 04:55:
On there being 4 types for each driver - the types are FR, IR, FS, and IS (see https://gona.mactar.hu/3D/CGL/). These two charac […]
Show full quote

On there being 4 types for each driver - the types are FR, IR, FS, and IS (see https://gona.mactar.hu/3D/CGL/). These two characters are in the header and they denote something, but we didn't know what - I had some guesses but wasn't sure.

Well, I can now tell you that the "F" and "I" stand for float and integer (fixed point integer). These are the two ways to do 3D math with any kind of decent accuracy. With floating point you're using float math, which is going to be slower on a 486 - a lot of games were using fixed point math at the time like Descent, etc. "F" drivers expect structs to contain floats, "I" drivers expect them to contain an integer (long) in fixed point format. Looking at the 21st demoscene code sample it looks like the fixed point math uses 16 bits for integer, 16 bits for fraction so 16:16 encoding.

With the CGL SDK, if you want floating point, you have to define CGLFLOAT so that the types are correctly defined as floats in the structures in the SDK headers, and then when you load the driver by calling cglLoad() - a function exported by the linked in HOTCGL.LIB, you pass CGL_CDL_FLOAT for the last parameter instead of CGL_CDL_FIXED. This tells the loader to give you one of those "F" drivers instead of an "I" one.

What what about the R versus S part? That's a little bit sneakier, and it comes down to calling convention. Well, from disassembling several of the CGL supporting game exes I can tell you they're all Sybase Watcom C. Watcom had their own calling convention while everyone else was passing parameters on the stack - they would pass by register -- __stdcall (or if you're a stickler for history sometimes __cdecl) versus __watcall. So this is Register versus Stack calling convention. HOTCGL.LIB has two versions of every function for a program to link to - with one supporting register-based parameters and the other supporting stack based parameters. Likewise, all of the routines in the "R" drivers take their parameters by register whereas all of the routines in the "S" drivers take their parameters by stack. When you include the CGL headers, if a few different compiler environment definitions are defined (__32BIT_COMPILER__, __W32BIT_COMPILER__) every method gets decorated with __stdcall, and the compiler ends up picking the function that will load the "stack" parameter based version of the driver. Otherwise, you will end up linking with the method that will load the "register" parameter version of the driver.

How do I know this? It's a little complicated.

If you look at the "stack" version of cglLoad(), it has the following code:

; type is either CGL_CDL_FIXED (0) or CGL_CDL_FLOAT(2)
_TEXT:00000636 mov edx, [esp+28Ch+type]
_TEXT:0000063D push 0
_TEXT:0000063F lea eax, [esp+290h+var_288]
; incrementing by 1
_TEXT:00000643 inc edx
_TEXT:00000644 push eax
; before passing the type to the internal loader, it's now either 1 or 3.
_TEXT:00000645 mov [esp+294h+type], edx

The "register" version of this code doesn't bother modifying the 'type' variable like this, so it will stay as 0 or 2 before being passed to the internal loader function. The way the header is parsed is a little complicated, so I will leave that out, but the internal loader eventually looks at CGL file offset 0x77, which in these CGL files is either 0, 1, 2 or 3. So in the end those 2 letters in the header were a great hint, but the loader does not look at them - it looks at this offset for one of the following:

0X77: Driver Type
00: CGL_CDL_FIXED, __watcall calling convention
01: CGL_CDL_FIXED, __stdcall calling convention
02: CGL_CDL_FLOAT, __watcall calling convention
03: CGL_CDL_FLOAT, __stdcall calling convention

The callbacks in the drivers follow this pattern - they are either taking register or stack parameters and doing float math or doing a bunch of bit manipulation and integer math. I am still taking the driver format apart. Sorry if that put anybody to sleep but now we know why there's 4 kinds for each driver. 😀

If I read Gona's table right, this means that only the Verite driver got all 4 "flavors" - all other drivers are type 1, fixed point arithmetic + __watcall calling convention. The only linked-in-binary GiGi driver I've seen in game disassembly is the type 1 driver.

Great finding!
Yes, only Verite driver got all 4 type, but GiGi has not only the IR type but has the FR type too (and using by Fatal Racing/Whiplash). So it seems the linked-in-binary GiGi CGL driver is like "IR" type?
I will reorder my two small tables by time.
I try to summarize the informations about the 4 types:

  filename  |header|supposed meaning|                    methods                       |0X77
linked-in | none | |fixed point integer + __watcall calling convention|
????B???.CGL| IR |Integer Register|fixed point integer + __watcall calling convention| 00
????E???.CGL| FR |Float Register|floating point + __watcall calling convention| 02
????C???.CGL| IS |Integer Stack |fixed point integer + __stdcall calling convention| 01
????I???.CGL| FS |Float Stack |floating point + __stdcall calling convention| 03
Last edited by Gona on 2020-09-09, 09:56. Edited 1 time in total.

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix