andrew_programmer
написал 31 августа 2006 года в 12:41 (796 просмотров)
Ведет себя
неопределенно; открыл 6 тем в форуме, оставил 13 комментариев на сайте.
Здравствуйте Товарищи.
Я смотрел исходники ядра Linux,а точнее исходники видеодрайвера для карт nvidia(дериктория …/drivers/video/riva/).Мне хотелось понять в какой части кода происходит аппаратный PutImage(перебрасывания кадра из оперативной памяти в видеопамять).Я сначала думал,что эта часть кода находиться в файле accel.c .Но внимательно просмотрев весь код(несколько раз) я понял,что аппаратная часть драйвера находиться в файле fbdev.c .Видел там и работу с vesa и обращение к контроллеру crt,но вот где происходит аппаратный PutImage — мне непонятно.
Если кто-то разбирается в этой части кода — помогите пожалуйста советом(где нужно находиться эта часть кода).
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
grep -ir putimage /usr/src/linux
ничего не дало. ты уверен, что функция называется именно так?
PutImage -это не название функции в ядре.Это просто одно из общепринятых,программерских,обозначений этой функйции(функции переброски фрейма в видеопамять).
Если бы я сам знал как она называется,то уж покопался бы в коде.А вот именно из-за незнания где она находиться и как она называется — я и задал вопрос.
Одно понятно,искать аппаратную реализацию этой функции нужно в дериктории …/drivers/video/riva/ ,потомуч-то именно там должна содержаться nvidia-специфичность данного типа видеокарт.
Возможно сама функция переброски фрейма находиться где-то в дериктории …/drivers/video/ ,а её аппаратно зависимая часть в папке …/video/riva/.
Есть такая функция rivafb_copyarea, не она ли?
metal,а ты где эту функцию нашел? Я искал при помощи программы search и ничего не нашел(на всякий случай и сам просмотрел исходники).
Я на 100% уверен,что инициализация драйвера происходит в функции
rivafb_init_one.
Более чем на 90% уверен,что переброска фрейма через шину PCI происходит в функции rivafb_remove_one.Но вот на 100% не уверен.
Похоже придется хорошенько вникнуть в устройство драйверной части ядра.
Это функция находится в /riva/video/fbdev.c. Собственно она статическая и на прямую не вызывается, но указатель на нее прописывается в struct fb_ops, переменная эта тоже статическая. Она используется в rivafb_probe, которая очевидно вызвывается при иницилизации модуля. Ты там какую версию ядра смотрел?, а то я последнюю.