Board.KolibriOS.org

Official KolibriOS board
It is currently Mon May 20, 2019 7:47 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 609 posts ]  Go to page 1 2 3 4 541 Next
Author Message
PostPosted: Mon Jan 03, 2005 5:04 pm 
Появились новые драйвера для владельцев карт ATI Radeon :!: .

Файлы:
kernel.zip:http://mikedld.50free.org/files/menuetos/kernel.zip
vmode.zip:http://mikedld.50free.org/files/menuetos/vmode.zip

Скриншот:
Image

Дополнительную иныормацию можно получить здесь:
http://menuetos.fastbb.ru/re.pl?-00000623-000-0-0-0-0-0


Top
   
 Post subject:
PostPosted: Wed Apr 26, 2006 11:23 am 
Offline

Joined: Tue Apr 18, 2006 11:48 pm
Posts: 53
а с ними будет работать разрешение 1280х1024 true color? Не то на двух машинах, в которых установлены ATI Xpert2000 (ATI Rage 128 Pro) и ATI Radeon 7500, при выборе 1280х1024 Колибри стартует, но в нижней части экрана чёрная полоса и нет курсора мыши.


Top
   
 Post subject:
PostPosted: Fri Nov 17, 2006 4:59 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
http://infinity-sound.narod.ru/ati2d.7z аппаратный курсор для ATI 8500 - 9XXX. Если карта не определится то загрузится обычный курсор.


Top
   
 Post subject:
PostPosted: Fri Nov 17, 2006 5:48 pm 
Offline

Joined: Mon Apr 10, 2006 7:22 am
Posts: 76
а для NVIDIA всё ждать и ждать...


Top
   
 Post subject:
PostPosted: Fri Nov 17, 2006 8:47 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
По исходникам я понял,что для работы с шиной PCI и памятью драйвер обращается к функциям в ядре.Нужно их где-то задокументировать,а иначе непонятно как под Колибри нужно драйверы писать.Я раньше вообще думал,что о доступе к PCI нужно заботиться самому.

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


Top
   
 Post subject:
PostPosted: Sat Nov 18, 2006 5:43 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
При работе с АС97 я сделал три функции-оболочки для тех что есть в системе

proc pci_read32 stdcall, bus:dword, devfn:dword, reg:dword
proc pci_read8 stdcall, bus:dword, devfn:dword, reg:dword
proc pci_write8 stdcall, bus:dword, devfn:dword, reg:dword, val:dword

pci_api экспортируется напрямую.

из драверов они видны как
extrn PciApi
extrn PciRead32
extrn PciRead8
extrn PciWrite8

Источник старые исходники XFree и драйверы BeOC. Это была старая программа для нереального режима ДОС.
Код для работы с железом отлаживал в ДОС.
Потенциально должно работать с ATI 7500 - x300+ Точно не работает с x1000+.
Список железа есть в исходниках дрвйвера.

Ещё там есть код для аппаратного рисования закрашенных прямоугольников.
Возможно удасться сделать рисование произвольных линий.
Закрашивание кистями, блиттер и анимированные курсоры.
В новой версии можно будет загрузить собственный курсор (обычный Win 32х32 16 цветов).

BeOS aka Haiku
svn://svn.berlios.de/haiku/haiku/trunk/src/add-ons


Top
   
 Post subject:
PostPosted: Sat Nov 18, 2006 5:14 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Serge,а ты не пробовал смотреть исходники драйвера DirectFrameBuffere-а ?
Там обращение к видеокартам происходит напрямую и код довольно понятный(на C).


Top
   
 Post subject:
PostPosted: Sat Nov 18, 2006 6:18 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
А сорци ядра где? Я так понял что там добавлен указатель на SetHwCursor, через него всё и крутится, сорци бы постотреть, и пора бы kernel_export грузить из внешнего файла.


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 1:31 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Исходники будут. В драйвере ошибка для 1280Х1024
изменения в ядре небольшие
mousedrv.inc
draw_mouse_under:
; return old picture

cmp [set_hw_cursor], 0
jz @F
ret
@@:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
save_draw_mouse:

cmp [set_hw_cursor], 0
jz @F
movzx ebx,word [0xfb0c]
movzx eax,word [0xfb0a]
push ebx
push eax
call [set_hw_cursor]
ret
@@:

set_hw_cursor - указатель на функцию драйвера и одновременно флаг аппаратного курсора.


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 9:06 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Ghost
Quote:
пора бы kernel_export грузить из внешнего файла

В смысле функции объявленные extrn?


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 11:50 am 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
Благодаря усилиям Рудольфа, в разработке драйверов для nvidia в haiku продвинулись вроде дальше, чем для ATI. Правда он уже вроде отошел от дел :(


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 12:35 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Я бегло просмотрел дрова для NV - там нет аппаратого курсора. А вообще без доков сделать драйвер нереально.


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 12:53 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
В исходниках библиотеки SVGAlib есть драйвер аппаратного курсора для NV.
Вот часть драйвера :

static int cursor( int cmd, int p1, int p2, int p3, int p4, void *p5) {
unsigned char *b1, *b2;
unsigned short *b3;
unsigned int i, j, k, l, c0, c1;

switch(cmd){
case CURSOR_INIT:
return 1;
case CURSOR_HIDE:
__svgalib_outcrtc(0x31,__svgalib_incrtc(0x31)&0xfe); /* disable cursor */
break;
case CURSOR_SHOW:
__svgalib_outcrtc(0x31,__svgalib_incrtc(0x31)|1); /* enable cursor */
break;
case CURSOR_POSITION:
v_writel(p1+(p2<<16), NV_PRAMDAC_GRCURSOR_START_POS);
break;
case CURSOR_SELECT:
i=memory/2-(p1+1);
if (chip==Riva128) {
__svgalib_outcrtc(0x31,(__svgalib_incrtc(0x31)&7)|(((~i)&0x1f)<<3));
} else {
__svgalib_outcrtc(0x31,(__svgalib_incrtc(0x31)&3)|(((~i)&0x3f)<<2));
}
#if 0
__svgalib_outcrtc(0x30,((~i)&0x3fc0)>>6);
#else
__svgalib_outcrtc(0x30,0);
#endif
break;
case CURSOR_IMAGE:
i=memory/2-(p1+1);
i=i*2048;
switch(p2) {
case 0: /* X11 format, 32x32 */
b3=malloc(2048);
b1=(unsigned char *)p5;
b2=b1+128;
c0=0x8000|GET15BITCOLOR((p3>>16)&0xff,(p3>>8)&0xff,p3&0xff);
c1=0x8000|GET15BITCOLOR((p4>>16)&0xff,(p4>>8)&0xff,p4&0xff);
l=992;
for(k=0;k<128;k++) {
int cc1=*(b1+k);
int cc2=*(b2+k);
for(j=0;j<8;j++) {
if(!(cc2&0x80)) *(b3+l)=0; else if (cc1&0x80)
*(b3+l)=c1; else *(b3+l)=c0;
l++;
if((l&0x1f)==0)l-=64;
cc2<<=1;
cc1<<=1;
}
}
memcpy(LINEAR_POINTER+i,b3,2048);
free(b3);
break;
case 1: /* nvidia 1555 format 32x32 */
memcpy(LINEAR_POINTER+i,p5,2048);
break;
}
break;
}
return 0;
}


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 1:39 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
andrew_programmer
А будет этот код работать на современных картах, и 15-ти битный курсор в 32-х битном режиме?


Top
   
 Post subject:
PostPosted: Sun Nov 19, 2006 3:34 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Serge
http://www.gtlib.gatech.edu/pub/mandrake/devel/2007.0/SRPMS/main/release/x11-driver-video-nv-1.2.0-1mdv2007.0.src.rpm
Размер: 287 KБ (293 334 байт)

Там есть код для аппаратного курсора на NV (nv_cursor.c и riva_cursor.c), я с кодом думал сам разобраться, но у тебя думаю это получится быстрее. Или напиши что делает xf86MapPciMem(,,,,), я так понял в твоём коде ей соответствует код :
Code:
           stdcall AllocKernelSpace, dword 0x10000
           test eax, eax
           jz .fail
           mov [ati_io], eax
           stdcall PciRead32, [bus], [devfn], dword 0x18
           and eax, 0xFFFF0000
           mov esi, eax
           mov edi, [ati_io]
           mov edx, 16
@@:     stdcall MapPage,edi,esi,PG_SW+PG_NOCACHE
     add edi, 0x1000
           add esi, 0x1000
           dec edx
           jnz @B


P.S. Если будут проблемы с rpm, вот zip http://iam.gorodok.net/NV.zip.
P.P.S В твоём ядре ещё ощибка с зашитой портов и функ 46


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 609 posts ]  Go to page 1 2 3 4 541 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 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:  
Powered by phpBB® Forum Software © phpBB Limited