ASM и nVIDIA

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
Как на ассемблере использовать встроеный opengl видеокарты и расширения nVIDIA(спецэфекты типа отражающей поверхности и т.п.) ?
 

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
Порылся в системе, нашел msinfo32 . Там за прерыванием IRQ16 зарезервировано мою видюху. Теперь как узнать адрес прерывания и список функций?
 

Yrtimd

Member
Joined
Jan 26, 2006
Messages
10
Reaction score
0
Age
41
Location
РФ
Чтобы использовать "встроенный OpenGL видеокарты" тебе не нужно работать с устройством напрямую! Это работа драйвера, не городи бредятину! Для реализации "спецэфекты типа отражающей поверхности и т.п." используй DX и OpenGL, функции которых _аппаратно реализует_ видюха. Ассемблер же применяют для оптимизации промежуточного кода, а не для написания своего, уже "сидящего" в железе, кроме шейдеров, для которых свой язык есть.
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Добавлю, что видюха здесь вообще ни причём. OpenGL - это библиотека Opengl.dll и несколько вспомогательных. Зайди на http://www.opengl.org
Там лежит полное описание всех функций в виде reference manual. Эти функции можно совершенно спокойно вызывать хоть ассемблером, хоть Визуал-Бейсиком.

P.S. А DirectX - это вообще набор COM-интерфейсов.
 

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
В opengl.dll функции , которые выполняет центральный процессор. Встроенные функции видеокарты заменяют теже из opengl.dll и исполняются графическим процессором. Мне надо работать в обход драйвера или вообще без него.
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
2 maidan: Извини, но это бред. Видеокарта ничего не знает ни о OpenGL, ни о DirectX. Никакие функции "из opengl.dll" она заменить не может. Вфполнение одной функции из opengl.dll может потребовать вызова десятков "функций", реализованных на аппаратном уровне в видеокарте, причём через её драйвер! Почитай, что такое Installable Client Driver (ICD).
Если хочешь работать с OpenGL в Windows, то хотя бы почитай вот этот FAQ: http://www.opengl.org/resources/faq/technical/mswindows.htm
Если хочешь работать напрямую с видеокартой, минуя стандартный драйвер, то тебе придётся писать СВОЙ драйвер (если уговоришь nVIDIA поделиться информацией), причём учитывая разнообразие видеокарт.
Кстати, с помощью видеокарты можно реализовывать не только интерфейсы OpenGL и DirectX. Поверх можно, например, навернуть GPGPU (http://sourceforge.net/projects/gpgpu).

P.S. Если напишешь, ЗАЧЕМ тебе напрямую работать с видеокартой, то можно будет ответить более предметно.

Дополнение: скачай и изучи NVIDIA GPU Programming Guide: http://developer.nvidia.com/object/gpu_programming_guide.html
 
Last edited by a moderator:

Lord Phoenix

Member
Joined
Mar 10, 2006
Messages
83
Reaction score
18
Location
Freenet
maidan правильно говорил - некоторые функции opengl есть на уровне машинных кодов граф.проца(на уровне ассемблера если кому понятней):даже загрузка текстуры в обход драйвера , и из того что он написал тут, я думаю ему надо свои дрова написать и наверно не под винду( нах винду с ее глюками :) . Гггг, как написать дрова для видюхи под ДОС ???
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
2 Lord Phoenix:
Меня очень заинтересовало - "загрузка текстуры в обход драйвера" - это как?
Это под Windows? Заранее спасибо.

Кстати, мне, из того, что написал maidan, задача не ясна совершенно.
 

Komerad Zuss

Member
Joined
Nov 19, 2005
Messages
52
Reaction score
16
Location
г/п Дрычына
Ты уж, maidan, извини. Но напрямую работать с видеокартой - гемор, если тока ты не драйвер к ней пишешь. Тем более, что NVidia, в девелоперской ветке, предлагает скачать SDK и прочую фичу. В свое время я даж там ДВД халявный заказал с инструментами разработки - пришел таки, а ща это счастье стоит 17 вечнозеленых без цены на пересылку. Изучи NV C for Graphics. Так же порекомендую книжицу С.Гайдукова "OPenGL профессіональное программирование трехмерной графики на С++". А уж если ты хочешь на асме - иди на сайт NeHe - там примеры на куче языков есть.
 

Lord Phoenix

Member
Joined
Mar 10, 2006
Messages
83
Reaction score
18
Location
Freenet
ploki said:
2 Lord Phoenix:
Меня очень заинтересовало - "загрузка текстуры в обход драйвера" - это как?
Это под Windows? Заранее спасибо.

Кстати, мне, из того, что написал maidan, задача не ясна совершенно.
Прямая запись в память , но геморно . У меня самого никак не получится.Показывали пару раз как , но так и не дошло.Можно просто напрямую через БИОС.
Меня интересует другой вопрос как используется память видеокарты? У моей 128 мб , но толку от нее никакой
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
2 Lord Phoenix:
Если у тебя картинка на мониторе есть, то, значит, уже есть толк от видеопамяти, поскольку в ней находится буфер (буфера) кадра.
При работе с двумерной графикой от остального объёма видеопамяти толку действительно мало.
При 3D-рендеринге в видеопамяти дополнительно постоянно находятся W-буфер, Z-буфер, стенсил-буфер и некоторые вспомогательные структуры, не постоянно - временные буфера кадров, текстуры, наиболее необходимые для данного кадра (с точки зрения драйвера, точнее, его менеджера ресурсов, и/или приложения), временные данные шейдеров и т.д.
Запусти Doom3 при максимальных настройках качества картинки и сразу поймёшь, какой толк не только от 128 МБ, а даже от 256 МБ (а в высоком разрешении даже от 512 МБ).

Замечу, что, например, в случае интегрированной в чипсет видеокарты часть ОП становится видеопамятью, но это всё равно будет именно видеопамять!

Также замечу, что сейчас и двумерную графику всё больше начинают рисовать через библиотеки трёхмерной графики. Соответственно толк от большой видеопамяти тут-же появляется. А можно вспомнить уже упоминавшийся мной GPGPU и прочие нетрадиционные способы использования GPU.
 
Last edited by a moderator:

Lord Phoenix

Member
Joined
Mar 10, 2006
Messages
83
Reaction score
18
Location
Freenet
2 ploki:
На счет Doom 3 - движок разработан так что при разных разрешениях нагрузка на GPU однакова(чуть больше, но не на много(3-5%)), разница токо в размере буфера кадра.

Какие не были бы буфера, но 128 МБ это не мало.Хотя если вся сцена хранится в видеопамяти , тогда наверно мало .Но это уже полное издевательство над кампом-сцена хранится в "закодированом" виде в ОП и в видеопамяти,но уже в раскодированом.

Дрова для *nix-вых можно найти в исходниках или токо скомпиленые?

И вообще , то что nVIDIA не предоставляет информации о командах GPU , может говорить токо о двух вещах : или они хотят на этом заработать(не ясно как) , или же GPU имеют ошибки при разработке , что скрывается драйвером.Например , если какая то команда GPU(3D-рендеринг, например) не правильно работает , драйвер (теоритически) заменяет ее аналогичной функцией , но уже исполняется на ЦП , а результат - в видеопамять. Так можно можно обьяснить частое обновление драйверов к видеокартам( другой причины я не знаю).
 
Last edited by a moderator:

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
2 Lord Phoenix:
1. Не может (в принципе) в разных разрешениях быть одинаковая нагрузка на GPU! FillRate разный!
2. Про закодированную и раскодированную сцены совсем не понял.

3. По поводу необходимой Doom 3 памяти. Игра предлагает несколько уровней качества:

Ultra Quality (максимальное качество): для карт с 512 Мбайт видеопамяти. При этой настройке все текстуры, карты нормалей, отражений и т.д. хранятся в полном разрешении без сжатия.

High Quality: для карт с 256 Мбайт. Используется сжатие (DXT1,3,5) для карт отражений и рассеяния, а карты нормалей не сжимаются. Внешний вид близок к качеству Ultra, однако сжатие всё же приводит к некоторой потере качества.

Medium Quality: для карт со 128 Мбайт. Использует сжатие для карт отражения и рассеяния, а также для карт нормалей. Игра выглядит всё ещё очень хорошо, однако сжатие карт нормалей может привести к появлению некоторых артефактов, особенно под сильными углами или на круглых кромках.

Low Quality: для карт с 64 Мбайт. Всё то же самое, что и в режиме Medium Quality, однако текстуры уменьшаются до размера 512x512. Карты отражения уменьшаются до 64x64.

4. Драйвера обновляются не из-за этого (точнее - из-за этого очень-очень редко). Если ты занимался реализацией сложных API, то должен представлять, что значит не просто их реализовать как-нибудь, а с максимальной скоростью и поддерживая совместимость с несколькими (!!!) старыми версиями и унаследованным ПО. А ведь кроме реализации стандартных API, производители видеокарт непрерыно наращивают функциональность, причём в быстром темпе.
Дополнение: абстракции всегда дырявые, API не исключение! См., например, знаменитую статью товарища Сполски (http://www.joelonsoftware.com/articles/LeakyAbstractions.html).

5. Про нераскрытие для широкой публики команд GPU - типичная такая версия заговора. На самом деле одно другому не мешает. И просто "не хочется", и конкуренция, и огромный объём дополнительной работы + персонал, и многообразие GPU и их версий, и "спецификации могут меняться в любой момент без уведомления", и полная ненужность для 99.9% разработчиков, так как свой драйвер обычный человек писать не будет, и ещё много всего.
А для тех, кому надо, всё раскрывается!

6. Про драйвера под Unix не знаю, никогда не интересовался. Мне тоже информация не помешает.
 
Last edited by a moderator:

Lord Phoenix

Member
Joined
Mar 10, 2006
Messages
83
Reaction score
18
Location
Freenet
2 ploki
Я думаю пора завершить этот ... диалог .
Я прекрасно понял все что вы написали.
Но все равно думаю , что видеокарты (как nVIDIA , так и ATI) еще слишком слабые в плане производительности.Они токо нарасщивают памать и добавляют команды и эффекты.
Расчет 2D и 3D графики - это математика (геометрия) , и этим расчетом должен заниматься еще один ЦП :)
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Я достаточно занимался вычислительной геометрией и позволю не согласиться (в очередной раз :)). Расчет 2D и 3D графики - это не просто математика, это весьма специализированная математика, частью которой как раз и занимается GPU.

Но завершить согласен!
Напоследок несколько ссылок на тему нестандартного применения GPU, помимо ранее упоминавшихся (по верхам, но всё равно познавательно):

http://www.havok.com/content/view/289/53/

http://news.ferra.ru/hard/2006/03/22/56538/

http://flaviostechnotalk.com/wordpr...r-non-conventional-uses-of-graphics-hardware/

http://opennet.ru/opennews/art.shtml?num=5702
 
Top