ASM и nVIDIA

maidan

Местный
Регистрация
6 Янв 2005
Сообщения
93
Реакции
4
Credits
150
Как на ассемблере использовать встроеный opengl видеокарты и расширения nVIDIA(спецэфекты типа отражающей поверхности и т.п.) ?
 

maidan

Местный
Регистрация
6 Янв 2005
Сообщения
93
Реакции
4
Credits
150
Порылся в системе, нашел msinfo32 . Там за прерыванием IRQ16 зарезервировано мою видюху. Теперь как узнать адрес прерывания и список функций?
 
Y

Yrtimd

Чтобы использовать "встроенный OpenGL видеокарты" тебе не нужно работать с устройством напрямую! Это работа драйвера, не городи бредятину! Для реализации "спецэфекты типа отражающей поверхности и т.п." используй DX и OpenGL, функции которых _аппаратно реализует_ видюха. Ассемблер же применяют для оптимизации промежуточного кода, а не для написания своего, уже "сидящего" в железе, кроме шейдеров, для которых свой язык есть.
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
Добавлю, что видюха здесь вообще ни причём. OpenGL - это библиотека Opengl.dll и несколько вспомогательных. Зайди на Для просмотра ссылки Войди или Зарегистрируйся
Там лежит полное описание всех функций в виде reference manual. Эти функции можно совершенно спокойно вызывать хоть ассемблером, хоть Визуал-Бейсиком.

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

maidan

Местный
Регистрация
6 Янв 2005
Сообщения
93
Реакции
4
Credits
150
В opengl.dll функции , которые выполняет центральный процессор. Встроенные функции видеокарты заменяют теже из opengl.dll и исполняются графическим процессором. Мне надо работать в обход драйвера или вообще без него.
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
2 maidan: Извини, но это бред. Видеокарта ничего не знает ни о OpenGL, ни о DirectX. Никакие функции "из opengl.dll" она заменить не может. Вфполнение одной функции из opengl.dll может потребовать вызова десятков "функций", реализованных на аппаратном уровне в видеокарте, причём через её драйвер! Почитай, что такое Installable Client Driver (ICD).
Если хочешь работать с OpenGL в Windows, то хотя бы почитай вот этот FAQ: Для просмотра ссылки Войди или Зарегистрируйся
Если хочешь работать напрямую с видеокартой, минуя стандартный драйвер, то тебе придётся писать СВОЙ драйвер (если уговоришь nVIDIA поделиться информацией), причём учитывая разнообразие видеокарт.
Кстати, с помощью видеокарты можно реализовывать не только интерфейсы OpenGL и DirectX. Поверх можно, например, навернуть GPGPU (Для просмотра ссылки Войди или Зарегистрируйся.

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

Дополнение: скачай и изучи NVIDIA GPU Programming Guide: Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:

Lord Phoenix

Местный
Регистрация
10 Мар 2006
Сообщения
81
Реакции
18
Credits
124
maidan правильно говорил - некоторые функции opengl есть на уровне машинных кодов граф.проца(на уровне ассемблера если кому понятней):даже загрузка текстуры в обход драйвера , и из того что он написал тут, я думаю ему надо свои дрова написать и наверно не под винду( нах винду с ее глюками :) . Гггг, как написать дрова для видюхи под ДОС ???
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
2 Lord Phoenix:
Меня очень заинтересовало - "загрузка текстуры в обход драйвера" - это как?
Это под Windows? Заранее спасибо.

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

Komerad Zuss

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

Lord Phoenix

Местный
Регистрация
10 Мар 2006
Сообщения
81
Реакции
18
Credits
124
ploki написал(а):
2 Lord Phoenix:
Меня очень заинтересовало - "загрузка текстуры в обход драйвера" - это как?
Это под Windows? Заранее спасибо.

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

ploki

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

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

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

Lord Phoenix

Местный
Регистрация
10 Мар 2006
Сообщения
81
Реакции
18
Credits
124
2 ploki:
На счет Doom 3 - движок разработан так что при разных разрешениях нагрузка на GPU однакова(чуть больше, но не на много(3-5%)), разница токо в размере буфера кадра.

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

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

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

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
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 не исключение! См., например, знаменитую статью товарища Сполски (Для просмотра ссылки Войди или Зарегистрируйся.

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

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

Lord Phoenix

Местный
Регистрация
10 Мар 2006
Сообщения
81
Реакции
18
Credits
124
2 ploki
Я думаю пора завершить этот ... диалог .
Я прекрасно понял все что вы написали.
Но все равно думаю , что видеокарты (как nVIDIA , так и ATI) еще слишком слабые в плане производительности.Они токо нарасщивают памать и добавляют команды и эффекты.
Расчет 2D и 3D графики - это математика (геометрия) , и этим расчетом должен заниматься еще один ЦП :)
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
Я достаточно занимался вычислительной геометрией и позволю не согласиться (в очередной раз :)). Расчет 2D и 3D графики - это не просто математика, это весьма специализированная математика, частью которой как раз и занимается GPU.

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

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся