Size: a a a

Ассемблер

2021 March 11

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Короче, bytes per scan line был не 1600, а 1664.
Но на интеле и gtx всё норм, а на амд лажа всё равно.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
источник

d

disba1ancer in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Короче, bytes per scan line был не 1600, а 1664.
Но на интеле и gtx всё норм, а на амд лажа всё равно.
А как ты это определил
источник

A

Aleksandr in Ассемблер
Видимо, глянул внутрь структур весы
источник

A

Aleksandr in Ассемблер
Евгений, буду благодарен если кратко обьсните принципы работы с линейным буфером при условии что весь экран в видеопамять не влазит. Как переключаются банки памяти? Или можно как-то уговорить видеоконтроллер расширить замапленную область?
источник

d

disba1ancer in Ассемблер
Aleksandr
Евгений, буду благодарен если кратко обьсните принципы работы с линейным буфером при условии что весь экран в видеопамять не влазит. Как переключаются банки памяти? Или можно как-то уговорить видеоконтроллер расширить замапленную область?
Скорее всего вызовом прерывания, но вроде там довольно большая область в которую обычно мапится, что переключать не нужно
источник

A

Aleksandr in Ассемблер
Не такая уж и большая. Понятно что прерываниями или PMI, но хотелось бы деталей
источник

d

disba1ancer in Ассемблер
Aleksandr
Не такая уж и большая. Понятно что прерываниями или PMI, но хотелось бы деталей
Не страницами по 64к и на том спасибо
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Aleksandr
Евгений, буду благодарен если кратко обьсните принципы работы с линейным буфером при условии что весь экран в видеопамять не влазит. Как переключаются банки памяти? Или можно как-то уговорить видеоконтроллер расширить замапленную область?
Через функции ah=4Fh/int 10h можно получить список видеорежимов, их подробные параметры, в т.ч. адрес LFB. Он может быть, например, равен C0000000 или E0000000 или F1000000. Далее устанавливаешь видеорежим и пишешь туда (для такой адресации нужен либо unreal mode, либо защищённый режим. Это если по-простому. Но там есть нюансы.

Скачай спецификацию VESA 3.0, там все подробно описано.
источник

A

Aleksandr in Ассемблер
Читал, получал
источник

A

Aleksandr in Ассемблер
С вопросом "как работать с LFB в который не помещаешься сразу весь экран" так и не разобрался
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Aleksandr
С вопросом "как работать с LFB в который не помещаешься сразу весь экран" так и не разобрался
Как может не помещаться в него весь экран? Он же не ограничен 64 Кб.
Разрешение 4К - 3840*2160 при 32 битах на пиксель и выравнивании линий по 4096 байтам — это 33.75 Мб.
Т.е. если LFB начинает с адреса E0000000 (например), то этот экран заканчивается по адресу E21C0000 максимум для 4К.
32-битный указатель смещения используется.
источник

ST

Saenro T in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Как может не помещаться в него весь экран? Он же не ограничен 64 Кб.
Разрешение 4К - 3840*2160 при 32 битах на пиксель и выравнивании линий по 4096 байтам — это 33.75 Мб.
Т.е. если LFB начинает с адреса E0000000 (например), то этот экран заканчивается по адресу E21C0000 максимум для 4К.
32-битный указатель смещения используется.
Интересно какую скорость для графики можно выжать в ДОСе при таком разрешении
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Если просто копировать и включить режим write-combining, то приличную.
Я как-то тестил, сейчас найду...
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Переслано от Eugene Krasnikov (ᴊɪ...
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Переслано от Eugene Krasnikov (ᴊɪ...
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Переслано от Eugene Krasnikov (ᴊɪ...
That's FullHD/32bpp: UC vs WC memory type. About 9 fps vs 320 fps (≈ 35x) :))
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Это на видеокарте Intel HD Graphics 3000.
На дискретке может быть меньше.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Здесь одно мерцание — это 256 перезаписей Full HD/32bpp (≈ по 8 Мб).
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Соответственно, 1024x768x8bpp должно быть где-то в 10,5 раз быстрее.
источник