LINUX.ORG.RU

Видеопамять

 , ,


0

1

Вот раньше всё просто было - bios там что-то инициализирует, предоставляет прерывания, при помощи вызова которых можно установить графический режим, а потом можно тупо устанавливать значения байтов в обычном адресном пространстве процессора и эти байты будут видны на экране, как цвета точек.

А теперь всё сложно. Есть графические процессоры, у них есть свои контроллеры памяти, которые умеют писать в локальную графическую память и этими процессорами надо уметь как-то командовать. Внимание вопрос: гляда на эту страницу как понять, с какого адреса в памяти на видеокарте находится та область, которая отображается на мониторе? Как в ту область что-нибудь скопировать из обычной памяти (насколько я понимаю, надо писать программу для GPU, чтобы он дал команду своему контроллеру памяти считать из обычной памяти и записать в локальную память видеокарту).

Как бы сразу на примеры перейти, чтобы посмотреть как это работает, не читая ВСЮ документацию?

А еще, раньше можно было изучить архитектуру ЦП по 10 картинкам и понять как он работает, не читая 500 листов интеловского даташита.

Желаеш написать собственный драйвер для видеокарты? Смотри устройство radeon'а

anonymous ()
Ответ на: комментарий от anonymous

так а доки не получается читать, там написано - для получения точной информации про адресное пространство на конкретном устройстве - читайте документ «ATI CTM Device Interface», который «included with CTM distibution».

А этот самый CTM distribution фиг найдёшь...

Indaril_Shpritz ()

Окей, ты пожаловался на жизнь. И что дальше?

Расскажи, что ты уже успел сделать? Что ты прочитал, чтобы понять?

Как бы сразу на примеры перейти

Google, например.

не читая ВСЮ документацию

Да бл*ть никак!

Deleted ()
Ответ на: комментарий от Deleted

Что ты прочитал, чтобы понять?

я прочитал документы 1 и 2 там есть ссылка на документ «ATI CTM Device Interface», который я не могу найти.

Окей, ты пожаловался на жизнь. И что дальше?

дальше я надеюсь, что кто-нибудь даст линк на документ «ATI CTM Device Interface».

Надеюсь ты отсатисфачен моим ответом.

Indaril_Shpritz ()
Ответ на: комментарий от Indaril_Shpritz

задачу работы с фреймбуфером решает драйвер. Если у тебя нету драйвера, ты должен написать его сам. Вендоры не предоставляют информации о том, как написать драйвер для любой своей видеокарты. Уже не считая того, что это варьируется от девайса к девайсу.

на кой тебе информация о том, где в памяти видеокарты располагается текущий фрейм?

anonymous ()
Ответ на: комментарий от Deleted

Да бл*ть никак!

сам ты бл*ть. Не я.
Без OpenCL, БЕЗ
можешь ты, тупая башка, это понять?

Indaril_Shpritz ()
Ответ на: комментарий от anonymous

на кой тебе информация о том,
где в памяти видеокарты располагается текущий фрейм?

чтобы туда писать данные, чтобы было видно изображение на экране, что тут неясно?

Вендоры не предоставляют информации о том, как написать драйвер для любой своей видеокарты

в случае AMD для моей видеокарты (на r600)- предоставили, но уже убрали. Может у кого остались запасы.

Indaril_Shpritz ()
Ответ на: комментарий от Deleted

Здесь смотрел?

да, там такого документа нет

первая ссылка - это вообще у меня такая же.

вторую посмотрю

Indaril_Shpritz ()
Ответ на: комментарий от Deleted

вторую посмотрел - тоже нет списка адресов в зависимости от конкретной модели

Indaril_Shpritz ()
Ответ на: комментарий от Deleted

раньше были взрослые, которые писали понятные книжки. А теперь взростые - это мы...

Indaril_Shpritz ()

Все «просто» было эдак лет 30 назад, когда CGA был роскошью. И да, он уже имел на борту свою собственную видеопамять. с контроллером ейной, да.

Вся видеопамять отображается в адресное пространство проца. Пишется туда напрямую. Осталось только у ГПУ спросить, где же собссно в видеопамяти лежит текущий фреймбуффер. А еще лучше - спросить попутно, где лежит второй фреймбуффер, на который проц может переключиться.

А не хочется мороки - есть VESA, все видяхи его держат (ну кроме некоторых уродцев типа i845).

//в подробности не вникал - умеет ли ГПУ произвольно выбирать память, используемую как фреймбуффер, или же фреймбуффер сугубо в начале его адресного пространства.

NiTr0 ★★★★★ ()

Внимание вопрос: гляда на эту страницу как понять, с какого адреса в памяти на видеокарте находится та область

0xa0000000:00000000

anonymous ()
Ответ на: комментарий от NiTr0

видеопамять отображается в адресное пространство проца.

мне непонятно, как это делается в современных системах. Говорят, что только MemoryController из состава видеокарты может иметь доступ к памяти через PCI-е.

Indaril_Shpritz ()
Ответ на: комментарий от Indaril_Shpritz

Разберись сначала в азах, стало быть. inb4: так не круто - круто сразу зарубиться драйвер для радеона, лол.

anonymous ()
Ответ на: комментарий от anonymous

круто сразу зарубиться драйвер для радеона, лол.

смотрю на исходники xf86-video-ati-6.14.4/src
и там конкретики про регистры больше, чем вы тут все понаписали,
по крайней мере ключевые слова для поиска есть...

inb4:

не понял, что это было

Indaril_Shpritz ()
Ответ на: комментарий от Indaril_Shpritz

в случае AMD для моей видеокарты (на r600)- предоставили, но уже убрали. Может у кого остались запасы.

Ты наверное сам нагуглил, но все же.

Во первых они походу все выложили сюда: http://developer.amd.com/resources/documentation-articles/developer-guides-ma... Ну а те ссылки которые были на X.org переложили в директорию old: http://www.x.org/docs/AMD/old/

qiomi ()

Гляда на эту страницу как понять, с какого адреса в памяти на видеокарте находится та область, которая отображается на мониторе?

только глядя туда не поймешь. надо открывать сорцы драйвера, смотреть как настраивается фреймбуфер, на который натравливается CRTC, рисующий на экран (мегаупрощенно)

Как в ту область что-нибудь скопировать из обычной памяти (насколько я понимаю, надо писать программу для GPU, чтобы он дал команду своему контроллеру памяти считать из обычной памяти и записать в локальную память видеокарту).

GPU принимает пакеты. В случае AMD это PM4 пакеты. В PM4 пакете есть несколько операций (DRMDMA, SDMA) копирования между системной памятью и локальной, ты создаешь пакет, заполняешь адреса, служебные поля etc.

это все скрыто от прикладника в драйверах (UMD и KMD)

x4DA ★★★★★ ()
Ответ на: комментарий от Indaril_Shpritz

Так же как и 15 лет раньше делалось. Устройство указывает машине диапазоны портов ввода-вывода и памяти, чипсет отображает эту память в адресное пространство проца. Ну и да, при желании и ГПУ может получать доступ к системной памяти (DMA ли это, или еще какой механизм - не скажу, не интересовался).

NiTr0 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.