Наши преимущества

ASM и nVIDIA

maidan

Турист
Credits
0
Как на ассемблере использовать встроеный opengl видеокарты и расширения nVIDIA(спецэфекты типа отражающей поверхности и т.п.) ?
 
Порылся в системе, нашел msinfo32 . Там за прерыванием IRQ16 зарезервировано мою видюху. Теперь как узнать адрес прерывания и список функций?
 
Чтобы использовать "встроенный OpenGL видеокарты" тебе не нужно работать с устройством напрямую! Это работа драйвера, не городи бредятину! Для реализации "спецэфекты типа отражающей поверхности и т.п." используй DX и OpenGL, функции которых _аппаратно реализует_ видюха. Ассемблер же применяют для оптимизации промежуточного кода, а не для написания своего, уже "сидящего" в железе, кроме шейдеров, для которых свой язык есть.
 
Добавлю, что видюха здесь вообще ни причём. OpenGL - это библиотека Opengl.dll и несколько вспомогательных. Зайди на Как увидеть ссылки? | How to see hidden links?
Там лежит полное описание всех функций в виде reference manual. Эти функции можно совершенно спокойно вызывать хоть ассемблером, хоть Визуал-Бейсиком.

P.S. А DirectX - это вообще набор COM-интерфейсов.
 
В opengl.dll функции , которые выполняет центральный процессор. Встроенные функции видеокарты заменяют теже из opengl.dll и исполняются графическим процессором. Мне надо работать в обход драйвера или вообще без него.
 
2 maidan: Извини, но это бред. Видеокарта ничего не знает ни о OpenGL, ни о DirectX. Никакие функции "из opengl.dll" она заменить не может. Вфполнение одной функции из opengl.dll может потребовать вызова десятков "функций", реализованных на аппаратном уровне в видеокарте, причём через её драйвер! Почитай, что такое Installable Client Driver (ICD).
Если хочешь работать с OpenGL в Windows, то хотя бы почитай вот этот FAQ: Как увидеть ссылки? | How to see hidden links?
Если хочешь работать напрямую с видеокартой, минуя стандартный драйвер, то тебе придётся писать СВОЙ драйвер (если уговоришь nVIDIA поделиться информацией), причём учитывая разнообразие видеокарт.
Кстати, с помощью видеокарты можно реализовывать не только интерфейсы OpenGL и DirectX. Поверх можно, например, навернуть GPGPU (Как увидеть ссылки? | How to see hidden links?.

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

Дополнение: скачай и изучи NVIDIA GPU Programming Guide: Как увидеть ссылки? | How to see hidden links?
 
Последнее редактирование модератором:
maidan правильно говорил - некоторые функции opengl есть на уровне машинных кодов граф.проца(на уровне ассемблера если кому понятней):даже загрузка текстуры в обход драйвера , и из того что он написал тут, я думаю ему надо свои дрова написать и наверно не под винду( нах винду с ее глюками :) . Гггг, как написать дрова для видюхи под ДОС ???
 
2 Lord Phoenix:
Меня очень заинтересовало - "загрузка текстуры в обход драйвера" - это как?
Это под Windows? Заранее спасибо.

Кстати, мне, из того, что написал maidan, задача не ясна совершенно.
 
Ты уж, maidan, извини. Но напрямую работать с видеокартой - гемор, если тока ты не драйвер к ней пишешь. Тем более, что NVidia, в девелоперской ветке, предлагает скачать SDK и прочую фичу. В свое время я даж там ДВД халявный заказал с инструментами разработки - пришел таки, а ща это счастье стоит 17 вечнозеленых без цены на пересылку. Изучи NV C for Graphics. Так же порекомендую книжицу С.Гайдукова "OPenGL профессіональное программирование трехмерной графики на С++". А уж если ты хочешь на асме - иди на сайт NeHe - там примеры на куче языков есть.
 
ploki сказал(а):
2 Lord Phoenix:
Меня очень заинтересовало - "загрузка текстуры в обход драйвера" - это как?
Это под Windows? Заранее спасибо.

Кстати, мне, из того, что написал maidan, задача не ясна совершенно.
Прямая запись в память , но геморно . У меня самого никак не получится.Показывали пару раз как , но так и не дошло.Можно просто напрямую через БИОС.
Меня интересует другой вопрос как используется память видеокарты? У моей 128 мб , но толку от нее никакой
 
2 Lord Phoenix:
Если у тебя картинка на мониторе есть, то, значит, уже есть толк от видеопамяти, поскольку в ней находится буфер (буфера) кадра.
При работе с двумерной графикой от остального объёма видеопамяти толку действительно мало.
При 3D-рендеринге в видеопамяти дополнительно постоянно находятся W-буфер, Z-буфер, стенсил-буфер и некоторые вспомогательные структуры, не постоянно - временные буфера кадров, текстуры, наиболее необходимые для данного кадра (с точки зрения драйвера, точнее, его менеджера ресурсов, и/или приложения), временные данные шейдеров и т.д.
Запусти Doom3 при максимальных настройках качества картинки и сразу поймёшь, какой толк не только от 128 МБ, а даже от 256 МБ (а в высоком разрешении даже от 512 МБ).

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

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

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

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

И вообще , то что nVIDIA не предоставляет информации о командах GPU , может говорить токо о двух вещах : или они хотят на этом заработать(не ясно как) , или же GPU имеют ошибки при разработке , что скрывается драйвером.Например , если какая то команда GPU(3D-рендеринг, например) не правильно работает , драйвер (теоритически) заменяет ее аналогичной функцией , но уже исполняется на ЦП , а результат - в видеопамять. Так можно можно обьяснить частое обновление драйверов к видеокартам( другой причины я не знаю).
 
Последнее редактирование модератором:
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 не исключение! См., например, знаменитую статью товарища Сполски (Как увидеть ссылки? | How to see hidden links?.

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

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

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

Как увидеть ссылки? | How to see hidden links?

Как увидеть ссылки? | How to see hidden links?

Как увидеть ссылки? | How to see hidden links?

Как увидеть ссылки? | How to see hidden links?
 
Верх