Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Apr 22, 2019 1:26 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 58 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
PostPosted: Wed Jul 15, 2009 7:05 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 426
У Mesa, вроде, "железный" код только для DRI, ты его будешь использовать или возьмешь дрова из другого источника?
Надеюсь RV280 будет поддерживаться, а то я не горю желанием менять железо, в копеечку это влетит.

..bw


Top
   
PostPosted: Wed Jul 15, 2009 9:10 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Думаю что будет DRI2/Gallium. Но всё это будет очень не скоро. Сначала mesa должна перейти на dri2


Top
   
PostPosted: Wed Jul 15, 2009 9:21 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
Mesa мощная библиотека OpenGL. :)
Здесь: http://koti.mbnet.fi/hinkka/q3a_v101_src.7z (исходники порта Quake 3 Arena для Смартфонов) есть ещё пример реализации библиотеки OpenGL поменьше.


Top
   
PostPosted: Wed Jul 15, 2009 11:53 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Serge

Как раз в том и проблема, что ни одна из трёх демок не работает.

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Top
   
PostPosted: Thu Jul 16, 2009 8:01 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
andrew_programmer

Pixlib работает только в 32-bpp.
Попробуй ядро #1097 и pixlib_02 В папке /rd/1/drivers должен быть ati2d.log.

Демки должны работать и без 2D акселерации ( т.е. без драйвера ati2d.drv)


Top
   
PostPosted: Thu Jul 16, 2009 10:44 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Теперь работает. Дело было в 32-х битности. Я всегда пользуюсь 24-х битным режимом из-за этого демки не работали.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Top
   
PostPosted: Tue Oct 13, 2009 9:28 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Библиотека pixlib реентерабельна (см. мой вопрос тут)?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Tue Oct 13, 2009 11:39 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Нет. Функции вида CreateXXX и DestroyXXX не реентрантны. Я делаю новую версию pixlib, так что старую уже лучше не использовать.


Top
   
PostPosted: Tue Oct 13, 2009 4:01 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
А новая версия будет реентерабельной?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Tue Oct 13, 2009 10:33 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Да.


Top
   
PostPosted: Tue Oct 13, 2009 11:32 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
спасибо)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Wed Feb 17, 2010 4:05 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Запустил командный процессор на всех gpu, так что можно заняться акселерацией.
Вот примерный API для следующей версии pixlib

Все функции возвращают код ошибки как знаковое целое.

typedef struct
{
uint32_t width;
uint32_t height;
uint32_t format;
uint32_t pitch; //ширина строки в байтах
color_t *pixels;
//что-то ещё
...
}; pixmap_t;

pixmap_t ScreenPixmap; Первичная поверхность. Создаётся библиотекой.

int CreatePixmap(pixmap_t *pixmap);
Создаёт текстуру в локальной видеопамяти.
Перед вызовом надо заполнить поля width, height и format структуры.

int ResizePixmap(pixmap_t *pixmap, uint32_t new_width, uint32_t new_height);
Устанавливает новый размер текстуры не меняя формат. Старое содержимое теряется.

int BindPixmap(pixmap_t *pixmap, uint32_t flags);
Связывает текстуру с копией в системной памяти.

int UnbindPixmap(pixmap_t *pixmap);
Освобождает системную память.

int UpdatePixmap(pixmap_t *pixmap, uint32_t xorg, uint32_t yorg,
uint32_t width, uint32_t height, uint32_t location);
Обновляет текстуру. location определяет положение - в системной или видеопамяти. Координаты задают обновляемую область.

Функции блиттера
int Blit(pixmap_t *dst, pixmap_t *src, int xdst, int ydst, int xsrc, int ysrc, uin32_t width, uint32_t height);
int BlitTransparent(pixmap_t *dst, pixmap_t *src, int xdst, int ydst, int xsrc, int ysrc, uin32_t width, uint32_t height, color_t key);
int Blend(pixmap_t *dst, pixmap_t *src, int xdst, int ydst, int xsrc, int ysrc, uin32_t width, uint32_t height);
BlitTransparent использует key как прозрачный цвет источника.

Прмер использования.

Code:
pixmap_t  win_pixmap;
//Пиксмап для отрисовки всего окна

On_Create:
int error;
//Получили размер окна

win_pixmap.width = window_width;
win_pixmap.height = window_height;
win_pixmap.format = ARGB32;

error = CreatePixmap(&pixmap);
if( error )
{
     epic_fail();
};

error = BindPixmap(&pixmap);
if( error )
{
     epic_fail();
};

/****************/

On_Paint()

//рисуем в текстуру успользуя win_pixmap.pixels и не забывая про win_pixmap.pitch

error = UpdatePixmap(&win_pixmap, координаты перерисованной области, PX_MEM_LOCAL);
if( error )
{
     epic_fail();
};

error = Blit(&ScreenPixmap, &win_pixmap, window_x, window_y, координаты перерисованной области);
if( error )
{
     epic_fail();
};

/****************/
On_Size:

//Получили размер окна

error = ResizePixmap(&win_pixmap, window_width, window_height);
if( error )
{
     epic_fail();
};
Code:
//Просто текстура в видеопамяти

pixmap_t my_pixmap;
//Задаём размер текстуры;
...
//Создаём текстуру
error = CreatePixmap(&my_pixmap);

//Загружаем текстуру в видеопамять
error = BindPixmap(&my_pixmap);
load_bitmap(my_pixmap.pixels, my_pixmap.pitch, источник, что-то ещё);
error = UpdatePixmap(&my_pixmap,  0, 0, my_pixmap.width, my_pixmap.height, PX_MEM_LOCAL);
error = UnbindPixmap(&my_pixmap);

/*******************/

PROFIT
В дополнение к этим функциям будет возможность запускать на исполнение командные пакеты. Так что владеющие Тайным Знанием любопытные Буратины смогут программировать чип напрямую (со всеми вытекающими), в том числе вести модные расчёты на GPU.


Top
   
PostPosted: Wed Feb 17, 2010 9:40 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Quote:
В дополнение к этим функциям будет возможность запускать на исполнение командные пакеты. Так что владеющие Тайным Знанием любопытные Буратины смогут программировать чип напрямую (со всеми вытекающими), в том числе вести модные расчёты на GPU.

Pixels Shaders - это круто. asm x86 + asm GPU - это мощь!

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Top
   
PostPosted: Wed Feb 17, 2010 9:46 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
В принципе уже можно и Mesa портировать. Организовать вычисления на гпу даже проще. Главная сложность - совершенно марсианский ассемблер и отсутствие трансляторов в бинарный код. Надо всё писать в машинном коде. Когда ОpenCL появится неизвестно.


Top
   
PostPosted: Wed Feb 17, 2010 10:08 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Насколько я понял у них уже сейчас OpenCL есть, только для single-precision floating point. Но разработчики написали на форуме,что где-то в первой половине этого года они реализуют double-precision(для меня это важно), потому что для них это важно. AMD хочет конкурировать с NVIDIA в области научных вычислений на GPU, а там double-precision нужно. Раз от Brook+ отказались, значит будут оттачивать OpenCL.
А ассемблер действительно марсианский. :) Я так и не нашёл там операции деления. Видимо она эмулируется через другие команды.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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