Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Jul 04, 2020 5:57 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 195 posts ]  Go to page Previous 13 4 5 6 713 Next
Author Message
 Post subject: Re: Mesa
PostPosted: Mon Nov 25, 2013 6:24 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Неплохо, у меня 50 на 50.
А что не так с MTRR ? Ядро должно менять видеопамять на wc.


Top
   
 Post subject: Re: Mesa
PostPosted: Mon Nov 25, 2013 7:42 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1624
Вот карта MTRR на моём ноутбуке в начале загрузки ядра:
Code:
K : [MEM_AMOUNT]=BB546000, [LFBAddress]=C0000000
K : dumping MTRRs:
K : MTRRCAP = 00000000:00000D08
K : MTRR00000200 = 00000000:00000006
K : MTRR00000201 = 0000000F:00000800
K : MTRR00000202 = 00000001:00000006
K : MTRR00000203 = 0000000F:C0000800
K : MTRR00000204 = 00000000:BC000000
K : MTRR00000205 = 0000000F:FC000800
K : MTRR00000206 = 00000000:C0000000
K : MTRR00000207 = 0000000F:C0000800
K : MTRR00000208 = 00000001:38000000
K : MTRR00000209 = 0000000F:F8000800
K : MTRR0000020A = 00000000:00000000
K : MTRR0000020B = 00000000:00000000
K : MTRR0000020C = 00000000:00000000
K : MTRR0000020D = 00000000:00000000
K : MTRR0000020E = 00000000:00000000
K : MTRR0000020F = 00000000:00000000

Если игнорировать всё за пределами 4Г, остаётся два диапазона: первый диапазон WB, покрывающий все 4Г, и второй диапазон UC для последнего гигабайта. WB+UC даёт UC. Код init_mtrr видит, что BIOS что-то настроила, и не пытается перенастраивать самостоятельно. Код set_mtrr для LFB видит, что такой базовый адрес уже есть в MTRR, и выходит без перенастройки. Поэтому карта MTRR остаётся неизменной.

Правильно починить это непросто. Если заставить set_mtrr всегда переустанавливать регистр, даже если он уже есть, кусок памяти в конце 4Г перестанет покрываться UC-диапазоном, но WB-диапазон останется - этот кусок станет WB. Эксперимент показывает, что система от этого виснет при загрузке. Если заставить set_mtrr создавать два дополнительных UC-диапазона D0000000 с маской F0000000 и E0000000 с маской E0000000, система не виснет, но и профита нет: видеопамять оказывается покрыта двумя диапазонами WB+WC, Intel молчит о том, что бывает при конфликте двух MTRR, но по результатам похоже, что снова UC. Если заставить init_mtrr игнорировать настройки BIOS, то он округлит размер памяти до степени двойки вверх, и снова получается WB-диапазон для всей памяти, не перекрываемый UC-диапазонами. Плюс ещё нужно определить размер LFB, константа, которая ещё и не степень двойки, плохо подходит. Для своей конфигурации я просто захардкодила правильную карту MTRR.

_________________
Сделаем мир лучше!


Top
   
 Post subject: Re: Mesa
PostPosted: Mon Nov 25, 2013 8:10 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Понятно. При перекрытии диапазонов приводится к наименьшему общему, значит будет WC.
Update.
Приводится к UC если оба UC или UC+WB. В остальных undefined behavior.


Top
   
 Post subject: Re: Mesa
PostPosted: Tue Nov 26, 2013 6:06 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Продолжение банкета
http://ftp.kolibrios.org/users/Serge/ne ... 02-dbg3.7z
Если не заработает, пожалуйста замените pixlib версией из dump, перезагрузите компьютер, загрузите драйвер i915 и запустите eglgears. В каталоге /tmp1/1 появятся два файла batchbuffer.bin и static.bin. Вместе с логами выложите их на форуме.

P.S. Сразу после записи /tmp1/1/batchbuffer.bin pixlib вываливается в отладчик по int3.


Top
   
 Post subject: Re: Mesa
PostPosted: Tue Nov 26, 2013 8:22 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1624
Уже намного лучше. eglgears отрисовывает шестерёнки, поворачивает их один раз, на следующем кадре шестерёнки трескаются, на следующем кадре трещина становится шире и eglgears зависает.
В архиве логи, static.bin и для каждого кадра скриншот и batchbuffer.bin. Последовательность скриншотов такая: запуск eglgears -> отрисовка рамки -> int3 -> копирование step1/batchbuffer.bin -> g в отладчике -> отрисовка первого кадра "неинициализированная память" -> int3 -> снимок step1/screen.bmp, копирование step2/batchbuffer.bin -> g в отладчике -> отрисовка второго кадра "шестерёнки, часть 1" -> int3 -> снимок step2/screen.bmp, копирование step3/batchbuffer.bin и так далее. После step5/batchbuffer.bin eglgears зависает, scrshoot делает мусор вместо скриншота, поэтому словами: на экране примерно то же, что после предыдущего шага.


Attachments:
results.7z [43.44 KiB]
Downloaded 72 times

_________________
Сделаем мир лучше!
Top
   
 Post subject: Re: Mesa
PostPosted: Tue Nov 26, 2013 9:00 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Лиха беда начало.

CleverMouse
А если заменить pixlib на релизную и запустить Fplay ? На несколько кадров хватит ?


Top
   
 Post subject: Re: Mesa
PostPosted: Tue Nov 26, 2013 9:17 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1624
Fplay с релизной pixlib.dll работает. eglgears с релизной pixlib.dll зависает, но быстрее - промежуточных кадров не видно.

_________________
Сделаем мир лучше!


Top
   
 Post subject: Re: Mesa
PostPosted: Wed Nov 27, 2013 10:27 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Пока одно чинил, другое поломал. Раньше рендеринг вёлся в два буфера, было точное чередование. Сейчас всё рисуется в один буфер.
Update.
В два буфера работал Fplay.


Top
   
 Post subject: Re: Mesa
PostPosted: Wed Nov 27, 2013 4:11 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
http://ftp.kolibrios.org/users/Serge/ne ... i965-v2.7z
Исправлена EGL, теперь рендеринг ведётся поочерёдно в два буфера. Никаких приростов fps это не дало, но может исправит некоторые ошибки.


Top
   
 Post subject:
PostPosted: Wed Nov 27, 2013 4:37 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1624
Никаких видимых изменений.

_________________
Сделаем мир лучше!


Top
   
 Post subject: Re: Mesa
PostPosted: Wed Nov 27, 2013 8:01 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Serge wrote:
http://ftp.kolibrios.org/users/Serge/new/Mesa3D/mesa-9.2.2-i965-v2.7z
Исправлена EGL, теперь рендеринг ведётся поочерёдно в два буфера. Никаких приростов fps это не дало, но может исправит некоторые ошибки.

Dell Inspiron отрисовывает один кадр с колесами и далее все, ни один пример не запускает.
Spoiler: Show
Attachment:
BOARDLOG_dell_v2.TXT [19.53 KiB]
Downloaded 70 times

Acer Packard Bell - все работает, но есть ньюансы:
1) Колеса вращаются настолько быстро, что зубчики отламываются от колеса, по крайней мере такое ощущение создается.
2) Поезд на рельсах в обоих примерах перестает рисоваться в одном и том же месте. Это нормально? Все примеры можно завершить штатно, нажав на кнопку закрытия.
Spoiler: Show
Attachment:
boardlog_pb_v2.txt [23.79 KiB]
Downloaded 69 times

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: Mesa
PostPosted: Thu Nov 28, 2013 10:58 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Все нормально. С шестерёнками стробоскопический эффект и жуткий тиринг. Слишком много fps.
Поезд - американские горки, анимация привязана к номеру кадра. Если не ограничивать fps пролетает за секунду и все, поезд приехал.

Получается gen6 и 7 работают, а всё что раньше ещё нет.


Top
   
 Post subject: Re: Mesa
PostPosted: Thu Nov 28, 2013 11:03 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario_r4
А Fplay работает ? Последний, с длл-ками.


Top
   
 Post subject: Re: Mesa
PostPosted: Thu Nov 28, 2013 12:14 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Serge wrote:
Поезд - американские горки, анимация привязана к номеру кадра. Если не ограничивать fps пролетает за секунду и все, поезд приехал.

Нет, там именно дело в том что поезд едет некоторое время, а потом картинка встает и дальше ничего не рисует, при этом программа не завершается и подсчет fps продолжается.
Serge wrote:
А Fplay работает ? Последний, с длл-ками.

Не проверил, вечером попробую.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: Mesa
PostPosted: Thu Nov 28, 2013 12:39 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Нет, там именно дело в том что поезд едет некоторое время, а потом картинка встает и дальше ничего не рисует, при этом программа не завершается и подсчет fps продолжается.
Как и было задумано. Поезд едет несколько секунд, выходит на финишную прямую и останавливается.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 195 posts ]  Go to page Previous 13 4 5 6 713 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited