nixp.ru v3.0

29 мая 2017,
понедельник,
01:24:22 MSK

DevOps с компанией «Флант»
andrew_programmer написал 31 августа 2006 года в 12:41 (384 просмотра) Ведет себя неопределенно; открыл 6 тем в форуме, оставил 13 комментариев на сайте.

Здравствуйте Товарищи.

Я смотрел исходники ядра Linux,а точнее исходники видеодрайвера для карт nvidia(дериктория …/drivers/video/riva/).Мне хотелось понять в какой части кода происходит аппаратный PutImage(перебрасывания кадра из оперативной памяти в видеопамять).Я сначала думал,что эта часть кода находиться в файле accel.c .Но внимательно просмотрев весь код(несколько раз) я понял,что аппаратная часть драйвера находиться в файле fbdev.c .Видел там и работу с vesa и обращение к контроллеру crt,но вот где происходит аппаратный PutImage — мне непонятно.

Если кто-то разбирается в этой части кода — помогите пожалуйста советом(где нужно находиться эта часть кода).

Genie

grep -ir putimage /usr/src/linux

ничего не дало. ты уверен, что функция называется именно так?

andrew_programmer

PutImage -это не название функции в ядре.Это просто одно из общепринятых,программерских,обозначений этой функйции(функции переброски фрейма в видеопамять).

Если бы я сам знал как она называется,то уж покопался бы в коде.А вот именно из-за незнания где она находиться и как она называется — я и задал вопрос.

Одно понятно,искать аппаратную реализацию этой функции нужно в дериктории …/drivers/video/riva/ ,потомуч-то именно там должна содержаться nvidia-специфичность данного типа видеокарт.

Возможно сама функция переброски фрейма находиться где-то в дериктории …/drivers/video/ ,а её аппаратно зависимая часть в папке …/video/riva/.

metal

Есть такая функция rivafb_copyarea, не она ли?

andrew_programmer

metal,а ты где эту функцию нашел? Я искал при помощи программы search и ничего не нашел(на всякий случай и сам просмотрел исходники).

Я на 100% уверен,что инициализация драйвера происходит в функции

rivafb_init_one.

Более чем на 90% уверен,что переброска фрейма через шину PCI происходит в функции rivafb_remove_one.Но вот на 100% не уверен.

Похоже придется хорошенько вникнуть в устройство драйверной части ядра.

metal

Это функция находится в /riva/video/fbdev.c. Собственно она статическая и на прямую не вызывается, но указатель на нее прописывается в struct fb_ops, переменная эта тоже статическая. Она используется в rivafb_probe, которая очевидно вызвывается при иницилизации модуля. Ты там какую версию ядра смотрел?, а то я последнюю.