Меня интересует программирование видеоадаптера SVGA в Visual C++ с ассемблерными вставками. Пожалуйста хотя бы немного сориентируйте. Полагаю, что в Kernel есть какие-то функции для этого.
видеоадаптер свга понимаю вам надо vesa? а сталобыть и дос, и никаких msvc++. если просто в винде - то ddraw или дровишки из леса пейсать чтобы давали в видео фигачить напрямую и в порты за одно, а сталобыть и...
sarmat Либы VESA и дос. Либы WIN API (даже не DirectX) позволяет получить список доступных режимов и переключиться ну и для рисования использовать GDI, OpenGL.
ddraw или дровишки из леса пейсать чтобы давали в видео фигачить напрямую и в порты за одно А вот это как раз мне и интересно. Это под ДОС я делал. Как под окнами это делать пока не сориентировался. Что можно по этому вопросу посмотреть ? Фроловы - это 1995г. и под ДОС, а мне под Win охота.
sarmat Виндоус работает в защищенном режиме. Ли бы ты пользуешься одним из стандарных средств GDI(GDI+), DirectX, OpenGL. Почитать MSDN, DirectX SDK, статьи в интернете или книжку купить. Либы писать драйвер. Вот только что ты там сможешь сделать? Ответ не больше, чем тебе даст тотже GDI. Так как там трудностий много и основная отсутствие документации на видео карты.
sarmat При программировании соременных SVGA видеокарт напрямую, даже если ты досканально знаешь набор регистров, тут же сталкиваешся со следующими проблемами: Если попытаться изменить видеорежим (перепрограммировав регистры), то во-первых это не получится в подавляющем большинстве карт если не использовать специфические регисты, а во вторых доступ к этим специфическим регистрам должен быть разблокирован перед их использованием. Имеено поэтому даже самые изкоуровневые функции драйвера экрана (в большей степени мини драйвера) используют старое досовское int 10h на определенном этапе, даже в Windows 2003. Если режима экрана менять не нужно, то можно попробывать отыскать базовый адрес видеопамяти (через PCI конфигурационную область) и что самое сложное - межстрочный интервал (расстояние в байтах между текушим байтом и таким же но строкою ниже) он в подавляющем большинстве случаев не равен длинне отображаемой строки, менее сложное определить число бит на пиксел (последние две вещи можно с переменным успехом определить через классические CRT регисты).