Аппаратный OpenGL на S3 Virge/Trio3D (Для семейства NT/2K/XP/2K3+; почти расследование :))

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
Аватара пользователя
KennyDies
Advanced Member
Сообщения: 505
Зарегистрирован: 25.05.2008,16:31
Откуда: void **

Вклад в сообщество

Аппаратный OpenGL на S3 Virge/Trio3D (Для семейства NT/2K/XP/2K3+; почти расследование :))

Сообщение KennyDies » 20.06.2010,08:52

Для семейства NT/2K/XP/2K3+; почти расследование :)

Обзаведясь примерно такими картами
Изображение
и
Изображение
захотелось потрогать что там за 3D-ускорение такое и с чем его едят. При этом было доподлинно известно, что в теории аппаратное 3D семейство Virge/Trio3D умеет точно. Интересовала в первую очередь именно поддержка OpenGL.
Началось всё с Windows 95/98/ME. Было выяснено, что:

1) Официального OpenGL ICD драйвера для S3 Virge/Trio3D не cуществовало (он появился только у Savage3D и далее)

2) Существовал т.н. S3D Virge Toolkit for game developers ( http://web.archive.org/web/199801280237 ... /tkit0.htm выжимка для Win32(Win9x only?) тут ниже по тексту топика ), который позволял писать 3D-приложения для DOS/Win32 на С/C++ "в обход" DirectX пользуясь библиотекой S3DTKW.DLL. Библиотека S3DTKW.DLL берётся из Win9x драйверов S3 ( или из S3D10006.ZIP ), S3DTKW.H с описанем функций - имеется в исходниках MESA3D (2.x - 3.x), а S3DTKW.LIB есть тут - ниже по тексту топика.

3) Существовали т.н. MiniGL ICD драйверы (-врапперы) для S3, к-рые обеспечивали частичную, выборочную поддержку OpenGL через трансляцию вызовов команд в DirectX или S3DToolkit. Итак имелись:

a) S3 DirectX wrapper ( http://dmarton.tripod.com/s3quake.zip )
b) S3 DirectX 6 wrapper ( http://dmarton.tripod.com/s3quake_dx6.zip )
c) ICD-драйвер MESA3D 2.6 на базе S3DTKW ( http://jmpz.tripod.com/download/s3mesa26_v03.zip )
d) GateGL 0.5 DirectX wrapper - gategl.zip ( www.fortunecity.com/skyscraper/nuclear/274/ )
e) ICD-драйвер Techland wrapper на базе S3DTKW ( http://82.114.193.227/vga/image/sbirka/ ... minigl.zip ) - фирма писала OpenGL ICD драйверы для игр собственного производства (они есть в папке DRIVERS их демки Crime_Cities_Demo.zip - Яндекс в помощь :), инфо здесь http://web.archive.org/web/199812020249 ... /index.htm и тут http://web.archive.org/web/199812070728 ... minigl.htm ).
f) Alt Software DirectX wrapper ( http://nvworld.ru/files/old/docs/glide.html )
g) Полный software-драйвер OpenGL 2.1 MESA3D 7.3 ( http://nvworld.ru/files/downloads/wrapp ... win_73.zip ), подходит и для NT/2K/XP+

************************************

А теперь вернёмся к NT/2K/XP/2K3-семейству.

Было выяснено что помимо "обычных" OpenGL драйверов, исполненных в виде отдельного файла (т.н. full OpenGL, OpenGL ICD - например ig4icd32.dll, nvoglnt.dll, atioglxx.dll и пр.) существуют и OpenGL MCD драйверы. В чем же отличие?

Теория :)
Graphics Drivers: Windows 2000 DDK - MCD Architecture

Figure 1 shows the mini client driver architecture within the Windows NT(R)/Windows(R) 2000 graphics subsystem.
Изображение
Figure 1 MCD Architecture

The MCD is comprised of the following components:

MCD32: This system-supplied, client-side dynamic-link library (DLL) is loaded and called by OpenGL. It is a thin layer that performs data setup and then calls the Win32R ExtEscape function to send commands from user-mode OpenGL to the kernel-mode portion of the MCD. This module is also called client-side MCD in this document.
MCDSRV32: This system-supplied, server-side DLL is loaded by the kernel-mode display driver. MCDSRV32 manages the transport layer between OpenGL and the display driver. It also performs the bulk of object management and parameter validation for the MCD driver. These tasks typically require significant development effort by driver writers, yet are generally device-independent and have little to do with hardware acceleration. Consequently, the MCD architecture makes it easier for 3D driver writers to implement more robust drivers - a critical design goal as display drivers are trusted components of the Windows NT/Windows 2000 operating system. This module is also referred to as the MCD library or server-side MCD in this document.
MCD: This is the MCD portion of the display driver. The entire display driver, including the MCD portion, is implemented by graphics hardware vendors. This module is referred to as the MCD driver in this document.
The MCD interface provides the display driver access to both the OpenGL rasterization state and to the transformed and lit vertex data. To ensure maximum performance, there is no data translation between the front end (transform/lighting) and the MCD. That is, the vertex data processed by the MCD is the same data that is processed in OpenGL. As a consequence, the MCD interface requires that the display driver be able to handle floating-point data and operations. The driver need not use the special FLOATOBJ_Xxx routines provided by GDI.

At any point during the processing of drawing commands, the driver can return a failure to OpenGL. This causes OpenGL to finish the failed drawing operation using its own complete set of software simulations. The MCD architecture allows software simulation to be performed with direct framebuffer access through DirectDraw/DCI. This minimizes the performance penalty for falling back to software, and frees the driver writer from having to write software simulations for those operations not supported by the hardware. In addition, an MCD driver writer can choose to implement software simulations for those situations where improved performance can be achieved.

One of the distinguishing characteristics of the MCD is its absence of capability bits. This greatly simplifies driver implementation as the MCD driver need only implement those functions that it can accelerate in hardware.

The MCD model provides a language/compiler-independent implementation that allows easy upgrades to the driver and system-supplied services.
А теперь вкратце:

1) Видеокарты поддерживающие Hardware OpenGL MCD "из коробки".
(DLL содержит "MCDEngInit")
*** Windows NT4 SP6 ***
► Показать
*** Windows 2000 SP4 ***
► Показать
*** Windows XP SP3 / Windows 2003 Server SP2 (x86)***
► Показать
2) как детектировать OpenGL MCD (для пользователей)

* ищем "MCDEngInit" (например используя HIEW) в DLL видеодрайвера (без гарантий...)
* запускаем glxinfo ( [URL]см. ниже[/b] ), ищем в логе таблицу режимов, а там - MCD (!!! не 'soft' или 'ICD'), выглядит это как-то так:

Код: Выделить всё

...
OpenGL vendor string: Microsoft Corporation
OpenGL renderer string: GDI Generic
OpenGL version string: 1.1.0
OpenGL extensions:
    GL_WIN_swap_hint, GL_EXT_bgra, GL_EXT_paletted_texture
GLU version string: 1.2.2.0 Microsoft Corporation
GLU extensions:
    GL_EXT_bgra
...
 visual accl rgba d st w b g o a g n s s colorbuffer ax dp st accumbuffer
 id dep type indx b ro n m d g c f p p b  r  g  b  a bf th cl  r  g  b  a
-------------------------------------------------------------------------
0x01 16 MCD  RGBA .  . y . y y y y . . .  5  5  5  0  0  0  8 11 11 10  0
0x02 16 MCD  RGBA y  . y . . y y y . . .  5  5  5  0  0  0  8 11 11 10  0
0x03 16 MCD  RGBA .  . y . y y y y . . .  5  5  5  0  0 16  8 11 11 10  0
0x04 16 MCD  RGBA y  . y . . y y y . . .  5  5  5  0  0 16  8 11 11 10  0
0x05 16 soft RGBA .  . y y y y . y . . .  5  5  5  0  0 32  8 11 11 10  0
0x06 16 soft RGBA .  . y y y y . y . . .  5  5  5  0  0 16  8 11 11 10  0
...
* Запускаем любую игру на quake2-движке. если есть аппаратное 3D (ICD/MCD) игра запустится в OpenGL.
* Запускаем любую игру на quake3-движке (q3/cod/
rtcw/et). если есть аппаратное 3D (ICD/MCD) игра запустится и даст сообщение "...MCD acceleration found".

3) заметки, pros, contras.

* INFO: в S3 Virge, S3 trio3D MСD работает ТОЛЬКО в 5/5/5 режиме (15/16bpp)
* PRO: MCD драйвер не загружает CPU :)
* PRO: MCD драйвер встроен внутри обычного драйвера, в теории он быстрее ICD и software
* PRO: в S3 Virge PCI (NT4) даёт двухкратное ускорение по сравнению с софтовым OpenGL (по треугольникам) на VIA-чипсете (PentiumI 233-MMX).
* CONTRA: MCD драйвер не даёт нового OpenGL API старше системного MS OpenGL 1.1 (1.0 в NT 3.5x)
* CONTRA: аппаратное 3D (применительно к данным картам) неэффективно на компьтерах с "быстрым" CPU - PentiumII/III/IV и старше.
* CONTRA: в некоторых случаях смена разрешения видеорежима из игры невозможна (S3 Trio3D+W2K+Quake2)
* CONTRA: наличия MCD-драйвера "не видно", даже если он установлен. Система тупо пишет что установлен Microsoft Corporation GDI Generic 1.1.0 и всё, что часто сбивает с толку. :(

4) как детектировать OpenGL MCD (для программистов)

Код: Выделить всё

int pixelFormat = ChoosePixelFormat (hDC, &pfd);

PIXELFORMATDESCRIPTOR pfd_new;
DescribePixelFormat (hDC, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd_new);

int generic_format = pfd_new.dwFlags & PFD_GENERIC_FORMAT;
int generic_accelerated = pfd_new.dwFlags & PFD_GENERIC_ACCELERATED;

if (generic_format && ! generic_accelerated)
puts( "Software Mode"); // software

else if (generic_format && generic_accelerated)
puts( "Hardware - MCD Mode"); // hardware - MCD

else if (! generic_format && ! generic_accelerated)
puts( "Hardware - ICD Mode"); // hardware - ICD

else
puts( "unknown unsupported mode!"); // WTF ???
Ссылки:

Techland MiniGL: http://web.archive.org/web/199812070728 ... minigl.htm
Matrox: http://www.matrox.com/graphics/en/support/drivers/
Number9: Number Nine Visual Technology, buyed by S3 in 2000
S3 Graphics: http://ranger.s3graphics.com/swlib/
VIA(and some Tridents): http://www.via.com.tw/en/support/drivers.jsp
SIS: http://www.sis.com/download/
http://jmpz.tripod.com/download/
http://dmarton.tripod.com/ViRGEtip.html
http://dmarton.tripod.com/download.html#s3
http://web.archive.org/web/199901271322 ... evirge.htm
http://www.angelfire.com/ca/rchau/opengl.html
http://www.fortunecity.com/skyscraper/nuclear/274/

SGI software OpenGL 1.1 и TECHLAND OpenGL Wrapper в архиве ниже.
Вложения
softkitgl.7z
(713.75 КБ) 272 скачивания
Последний раз редактировалось KennyDies 31.05.2022,16:05, всего редактировалось 2 раза.
… As water spins in circles twice
Spiders, snakes and the little mice
Get twisted around and tumble down
When Nature calls, we all shall drown…

Root
Advanced Member
Сообщения: 631
Зарегистрирован: 06.08.2006,02:30
Откуда: Saint-Petersburg

Сообщение Root » 20.06.2010,19:39

эх... жалко плюсиков нельзя в репу поставить
спасибо!
FreeBSD - forever

0leg
Advanced Member
Сообщения: 2265
Зарегистрирован: 06.10.2007,09:19
Откуда: Город-герой Тула
Контактная информация:

Сообщение 0leg » 20.06.2010,20:55

Root,
а давай люто-бешено зареквестуем у Сержа нормальную репу? А? Чтобы или рейтинг, или репутацию _простые_ пользователи могли изменять.
Перед тем как постить глупость на форуме - воспользуйтесь поиском. Возможно эту глупость постил кто нибудь до вас. --- r, linux.org.ru

Аватара пользователя
KennyDies
Advanced Member
Сообщения: 505
Зарегистрирован: 25.05.2008,16:31
Откуда: void **

Вклад в сообщество

Аппаратный OpenGL на S3 Virge/Trio3D (Для семейства NT/2K/XP/2K3+; почти расследование :))

Сообщение KennyDies » 26.06.2010,23:36

Часть Вторая. OpenGL ICD + Matrox-ы.

Matrox G200 и старше поддерживают Full OpenGL ICD. Я их касаться не буду. :)

Рассмотрим три экземпляра:

* Millennium PCI PCI\VEN_102B&DEV_0519 http://commons.wikimedia.org/wiki/File: ... lenium.jpg
* Millennium II PCI PCI\VEN_102B&DEV_051B http://commons.wikimedia.org/wiki/File: ... niumII.jpg
* Productiva MGA-G100 AGP PCI\VEN_102B&DEV_1001 http://commons.wikimedia.org/wiki/File: ... a_g100.jpg

Все эксперименты c OpenGL MCD проведём в среде Windows NT 4.0 SP6.

Последний официальный драйвер к этим моделям nt4_501.exe Feb. 27, 2002 (re-issued: April 15, 2002) 5.01.007 4.37 MB ( http://www.matrox.com/graphics/en/suppo ... t4_501.cfm ) в 2D работал нормально, а в OpenGL система падала в BSOD и висла.
Слегка помогало отключение Use BusMastering в Matrox PowerDesk-е.

Путем ковыряний в бездонных архивах Matrox-а ( ftp://ftp.matrox.com/pub/mga/archive/win_nt4 ) и также бездонной Microsoft WHQL сертифицированной "свалке" NT 4.0 ( ftp://ftp.microsoft.com/Services/whql/d ... t40/disply ) был подобран более подходящий драйвер - 1999.05.03 Rev. 4.13.050 ( ftp://ftp.matrox.com/pub/mga/archive/wi ... t4_413.zip ). Он работал стабильнее.

** Примечания ***

1) Matrox OpenGL MСD работает ТОЛЬКО в 5/5/5 режиме (15/16bpp), 5/6/5 режиме (16bpp), 8/8/8 режиме (32bpp).

2) Т.к. аппаратное 3D на этих картах (в т.ч. и S3) всецело зависит от мощности видеокарты - оно неэффективно на быстрых системах (PII/PIII и старше). Там в программном OpenGL ускорении быстрый CPU в 2-3 раза обгоняет медленный GPU видеокарты.

3) Список-расшифровка WHQL-архива Microsoft NT 4.0 ( для видеокарт, секретный для OEM-вендоров :) )
► Показать
Последний раз редактировалось KennyDies 10.04.2022,06:42, всего редактировалось 1 раз.
… As water spins in circles twice
Spiders, snakes and the little mice
Get twisted around and tumble down
When Nature calls, we all shall drown…

Аватара пользователя
KennyDies
Advanced Member
Сообщения: 505
Зарегистрирован: 25.05.2008,16:31
Откуда: void **

Вклад в сообщество

Аппаратный OpenGL на S3 Virge/Trio3D (Для семейства NT/2K/XP/2K3+; почти расследование :))

Сообщение KennyDies » 27.01.2014,10:46

Часть Третья. Программные растеризаторы DirectX 8/9.

1a) Reference Rasterizer (DirectX 8)
d3dref8.dll - из DirectX SDK

PROS: умеет всё, в т.ч. и шейдеры 1.x. Поддерживает в т.ч. и Windows9x
CONTRAS: Очень медленно работает.

1b) Reference Rasterizer (DirectX 9)
d3dref9.dll - из DirectX SDK

PROS: умеет всё, в т.ч. и шейдеры 1.x/2.x/3.x. есть версия для x64. Поддерживает в т.ч. и Windows9x
CONTRAS: Очень медленно работает.

2) RGB Rasterizer (DirectX 9)
rgb9rast.dll (included with Vista/7 and later)
rgb9rast_1.dll
rgb9rast_2.dll

PROS: умеет всё, кроме шейдеров, быстрее чем reference. есть версия для x64. Поддерживает в т.ч. и Windows9x
CONTRAS: Не умеет шейдеры, нет версии для DX8.

Pixomatic http://www.radgametools.com/cn/pixofeat.htm
3a) Pixomatic DX8
PROS: умеет всё, кроме шейдеров, быстрее чем rgbrast, swiftshader.
использует многопроцессорность. Поддерживает в т.ч. и Windows9x/NT4.
CONTRAS: Не умеет шейдеры.

3b) Pixomatic DX9
PROS: умеет всё, кроме шейдеров, быстрее чем rgbrast, swiftshader.
использует многопроцессорность. Поддерживает в т.ч. и Windows9x/NT4.
CONTRAS: Не умеет шейдеры.

4) SwiftShader 2.0/3.0
PROS: умеет всё, быстрее чем rgbrast.
использует многопроцессорность.
гибко настраивается через ini-файл или http://localhost:8080/swiftconfig. есть версия для x64 (версия 3.0)
Поддерживает в т.ч. и Windows2000 (версия 2.x).
CONTRAS: Немного медленнее чем pixomatic. Плохо работает на FFP (т.е. в построении сцен без шейдеров)
!!! Несколько лет назад исходники были открыты и выложены. Также используется в Google Chrome/Chromium.

Архив внизу softkit.7z

* * *

P.S. Уголок программиста

Создание HAL устройства (hardware, pixomatic, swiftshader)

Код: Выделить всё

p_d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hWnd, devopt, &d3dpp, &p_d3d_Device);
Создание SW устройства (rgbrast)

Код: Выделить всё

HMODULE hDll = LoadLibrary("rgb9rast.dll");
if (!hDll) hDll = LoadLibrary("rgb9rast_2.dll");
if (!hDll) hDll = LoadLibrary("rgb9rast_1.dll");
FARPROC p = GetProcAddress(hDll, "D3D9GetSWInfo");
p_d3d->RegisterSoftwareDevice(p);
p_d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_SW, m_hWnd, devopt, &d3dpp, &p_d3d_Device);
Создание REF устройства (reference)

Код: Выделить всё

p_d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, m_hWnd, devopt, &d3dpp, &p_d3d_Device);
Вложения
softkit.7z
(1.6 МБ) 363 скачивания
Последний раз редактировалось KennyDies 31.05.2022,07:26, всего редактировалось 2 раза.
… As water spins in circles twice
Spiders, snakes and the little mice
Get twisted around and tumble down
When Nature calls, we all shall drown…

Аватара пользователя
KennyDies
Advanced Member
Сообщения: 505
Зарегистрирован: 25.05.2008,16:31
Откуда: void **

Вклад в сообщество

Сообщение KennyDies » 01.02.2014,10:04

в догонку
S3D ToolKit Version 2.6 for S3 Virge
это 3D SDK для S3 Virge (DOS/WIN95) с исходниками
Вложения
s3dtk.7z
(1.26 МБ) 231 скачивание
… As water spins in circles twice
Spiders, snakes and the little mice
Get twisted around and tumble down
When Nature calls, we all shall drown…

Аватара пользователя
Takedasun
Advanced Member
Сообщения: 3642
Зарегистрирован: 16.10.2013,18:07
Откуда: Керчь

Вклад в сообщество

Сообщение Takedasun » 23.04.2017,19:46

KennyDies писал(а):1) Видеокарты поддерживающие Hardware OpenGL MCD "из коробки".
(DLL содержит "MCDEngInit")
KennyDies писал(а): *** Windows XP SP3 / Windows 2003 Server SP2 ***
Number 9 Reality 332 (Virge) PCI\VEN_5333&DEV_5631
Number 9 Reality 772 (Virge VX) PCI\VEN_5333&DEV_883D
S3 ViRGE PCI\VEN_5333&DEV_5631
S3 Aurora64V+ PCI\VEN_5333&DEV_8812
S3 Trio64UV+ PCI\VEN_5333&DEV_8814
S3 ViRGE/VX PCI\VEN_5333&DEV_883D
S3 Trio64V2 PCI\VEN_5333&DEV_8901
S3 Plato PX (Integrated Accelerator) PCI\VEN_5333&DEV_8902

S3 ViRGE DX/GX PCI\VEN_5333&DEV_8A01

S3 ViRGE GX2 PCI\VEN_5333&DEV_8A10
S3 ViRGE M3 PCI\VEN_5333&DEV_8C00
S3 ViRGE MX PCI\VEN_5333&DEV_8C01&SUBSYS_00011179
S3 ViRGE MX PCI\VEN_5333&DEV_8C01
S3 ViRGE MX+ PCI\VEN_5333&DEV_8C03
S3 ViRGE MXC PCI\VEN_5333&DEV_8C02
Trident Video Accelerator 3D Image985 PCI\VEN_1023&DEV_9850
Trident Video Accelerator 3D Image975 PCI\VEN_1023&DEV_9750
Trident Video Accelerator 3D Cyber9397 PCI\VEN_1023&DEV_9397
Trident Video Accelerator 3D Cyber9397DVD PCI\VEN_1023&DEV_939A
Trident Video Accelerator 3D Cyber9520 PCI\VEN_1023&DEV_9520
Имеется карточка S3 ViRGE DX, вот как запустить Quake2 в режиме opengl под XP :(

У меня не получилось :frown:


Аватара пользователя
KennyDies
Advanced Member
Сообщения: 505
Зарегистрирован: 25.05.2008,16:31
Откуда: void **

Вклад в сообщество

Сообщение KennyDies » 23.04.2017,22:02

1. INFO: в S3 Virge, S3 trio3D MСD работает ТОЛЬКО в 5/5/5 режиме (15/16bpp)
2. Никакие сторонние драйвера ставить не надо - речь идет о функционале драйверов, встроенных в дистрибутив Windows.
3. Пробуйте все разрешения, начиная с минимального.
… As water spins in circles twice
Spiders, snakes and the little mice
Get twisted around and tumble down
When Nature calls, we all shall drown…

Аватара пользователя
Takedasun
Advanced Member
Сообщения: 3642
Зарегистрирован: 16.10.2013,18:07
Откуда: Керчь

Вклад в сообщество

Сообщение Takedasun » 24.04.2017,22:16

KennyDies писал(а):Пробуйте все разрешения, начиная с минимального.
Не запускается Opengl :frown:

Интересно, это полная эмуляция или частичная с использованием возможностей самой карты :(

Аватара пользователя
KennyDies
Advanced Member
Сообщения: 505
Зарегистрирован: 25.05.2008,16:31
Откуда: void **

Вклад в сообщество

Сообщение KennyDies » 08.02.2018,13:26

Поправил все ссылки.
… As water spins in circles twice
Spiders, snakes and the little mice
Get twisted around and tumble down
When Nature calls, we all shall drown…

TWG
Advanced Member
Сообщения: 1372
Зарегистрирован: 03.02.2018,14:43
Откуда: иркутск

Сообщение TWG » 11.02.2018,19:08

Вот что нашел- сборник бета версий с open gl http://vintage3d.org/driver.php#sthash.JJyK0sj5.dpbs сам еще не пробовал ставить.. Еще тема про биосы была тут,кому интересно http://www.phantom.sannata.ru/forum//index.php?t=20127

Ответить