Страниц: [1] 2
  Печать  
Автор Тема: SDL на Foundry27  (Прочитано 21278 раз)
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« : Июня 11, 2009, 09:26:41 pm »

Я вчера разрешил публично открыть мой давний раздел на Foundry27 посвящённый SDL: http://community.qnx.com/sf/projects/qnx_community_sdl_project
За 3 месяца я смог сделать только поддержку OpenGL ES в GF и Photon, плюс всю обвязку вокруг переключения видеорежимов и прочее. Бинарный снепшот и снепшот с исходниками я выложил на Foundry27. Можно тянуть и напрямую из SVN самого SDL, только в случае исходников из SVN нужны знания autotools чтобы поднять сборку.

В силу ограниченного наличия у меня железа, я протестировал на драйверах svga, vmware, i830, radeon, tnt, extreme2, rage128. Если у кого есть возможность потестировать на другом железе, не сочтите за труд, протестируйте, пожалуйста. В общем я зашиваюсь с SDL, слишком много ньюансов появилось в 6.4.x, связанного с Photon и GF, работа с каждый видеодрайвером тоже имеет много ньюансов.
Записан

agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #1 : Июня 13, 2009, 12:06:55 am »

Железо такое:

Процессор Intel Pentium D 2.667 GHz
Материнская плата MSI Neo 2 ATX, Intel i945G + ICH7
Видео: встроеное в чипсет i945G, драйверы gma9xx, i830, svga, vesabios
Звук: AC 97, через патченный на уровне hex deva-ctrl-i8x0.so (не понимает он, увы, по умолчанию, что ICH7 - это не только HDA)

SDL-1.3-svn4564 из Foundary, установлен в /opt.

QNX 6.4.0.

Что имеем:

Тесты со звуком - все ок, кроме testmultiaudio:

Код:
# ./testmultiaudio
Using audio driver: qsa
playing on device #0: ('i8x0 @ d400 d0')...done.
playing on device #1: ('i8x0 @ d400 d1')...done.
playing on all devices...
Open device 1 failed: QSA: snd_pcm_channel_params() failed: Invalid argument
All done!

Возможно, что это тараканы патченного драйвера (QSSL сырцов не дает пока).

С графическими тестами куда хуже.

Код:
# ./testalpha
Screen is at 32 bits per pixel
Screen is in system memory
Sprite is in system memory
Sprite blit dosn't uses hardware alpha acceleration

Вопрос: а почему нет аппаратного ускорения?

Большинство графических тестов в целом вообще не работает, в окне ничего не рисуется. Если окно попадает в оффскрин, там вообще начинается разная гадость (на области, попавшей в оффскрин). Данное явление имеет место с любым драйвером (по умолчанию используется gma9xx. См. скриншот:



При переходе в полноэкранный режим происходит сброс видеорежима в 640х480, ничего не рисуется.

Тест overlay:

Код:
# ./testoverlay
Set 640x480x32 mode
(video surface located in system memory)
Created 408x167x3 software YV12 overlay
  plane 0: pitch=408
  plane 1: pitch=204
  plane 2: pitch=204
Memory fault (core dumped)
Press any key to continue...

Тесты OpenGL:

Код:
# ./testgl
No OpenGL support on this system
Press any key to continue...

Код:
# ./testgl2
No OpenGL support on this system
Press any key to continue...

Код:
# ./testdyngl
No OpenGL support on this system
Press any key to continue...

Код:
# ./testgles
Screen BPP: 32

Vendor     : QNX Software Systems
Renderer   : Intel 915/945
Version    : OpenGL ES-CM 1.0
Extensions : GL_OES_compressed_paletted_texture GL_OES_vertex_buffer_object GL_OES_query_matrix GL_OES_read
_format

SDL_GL_RED_SIZE: requested 5, got 8
SDL_GL_GREEN_SIZE: requested 5, got 8
SDL_GL_BLUE_SIZE: requested 5, got 8
SDL_GL_DEPTH_SIZE: requested 16, got 24
106.63 frames per second
Press any key to continue...

testdyngles запускается

В полноэкранном режиме тесты не запускаются:

Код:
# ./testdyngles --fullscreen
Unable to dynamically open GL ES lib : Photon: Failed to locate OpenGL ES library

testgles запускается, но в полноэкранный режим не переходит - возникает окно без бордюра размером 640x480.

« Последнее редактирование: Июня 13, 2009, 09:48:37 am от agent » Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #2 : Июня 13, 2009, 09:52:12 am »

Еще обидно, что в QNX пока только OpenGL ES, кроме синтетических тестов ничего серьезного погонять не удалось. Большинство игрушек требует "честного" OpenGL.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #3 : Июня 13, 2009, 09:59:45 am »

По поводу звука, почитай README.QNX, там получается такое: первый канал d0 - это софтварный миксер, второй d1 - это настоящий канал, поэтому при тесте одновременного проигрывания получилось так, что первый канал открылся, но он внутри себя открыл настоящий канал d1, поэтому SDL'ный тест не смог его открыть.

По поводу 2D - 2D нет, с fullscreen проблемы пока внутри SDL, я сейчас разбираюсь с этим, для 2D запускать нужно пока только новые тесты testsprite2 --renderer opengl_es, testdraw2 --renderer opengl_es, то есть 2D сейчас есть, но только реализованное через OpenGL ES. Старые тесты просто не знают о такой возможности.

Разберусь с Fullscreen, потом буду делать честное 2D. Спасибо за тестирование.
Записан

agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #4 : Июня 13, 2009, 10:31:11 am »

Собрал последнюю версию MPlayer с SDL 1.3 (потребовалось одну строчку закомментировать). Звук проигрывается отлично, видео по понятным причинам отсутствует.

Как обнаружил, из-за изменений, связанных с подежкой в SDL клавиатуры, многие программы пока не собираются (отсутствует ряд констант, связанных с кодами клавиатуры, изменился набор параметров некоторых функций). Это при беглом осмотре.
« Последнее редактирование: Июня 13, 2009, 01:51:42 pm от agent » Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #5 : Июня 13, 2009, 02:21:14 pm »

Теперь для сборки старых приложений нужно подключать SDL_compat.h, Sam сказал, что после выхода пары релизов 1.3.x он уберёт legacy поддержку. Даже сейчас все приложения собранные в режиме совместимости теряют возможность использовать аппаратную акселерацию. А первый SDL 1.3 ориентировочно выйдет в конце осени.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #6 : Октября 13, 2009, 04:12:12 pm »

Я выложил новый билд SDL 1.3 svn5097
http://community.qnx.com/sf/projects/qnx_community_sdl_project

Реализована полная аппаратная поддержка всего 2D в Photon, нереализованными остались полноэкранные режимы в Photon и поддержка YUV текстур, как аппаратно, так и программно. В GF по прежнему пока поддерживается только OpenGL ES.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #7 : Ноября 22, 2009, 11:33:22 pm »

Ещё выложил новый билд SDL 1.3 svn5297
http://community.qnx.com/sf/projects/qnx_community_sdl_project

Собрал также большинство сателитных библиотек, как самого SDL, так и низлежащих.

Разница между svn5097 (только то, что касается QNX):

1) Собирается под QNX 6.3.2, но работает медленее, чем SDL 1.2. Поддержка 6.3.2 реализована в основном для тестирования.
2) Исправлены ошибки при инициализации/деинициализации при одновременном использовании GF и Photon.
3) Поддержка нового API в SDL 1.3: SDL_RenderReadPixels()/SDL_RenderWritePixels().
4) Поддержка UTF-8 ввода текста в SDL 1.3.

Всё остальное пока по старому, но уже ничего не мешает приступить к поддержке YUV текстур через оверлеи/слои в Photon и т.д.
Записан

Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« Ответ #8 : Ноября 23, 2009, 11:45:56 am »

Планируется ли поддержка мультидисплеев в полноэкранном/оконном режимах?
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #9 : Ноября 23, 2009, 12:36:05 pm »

У QNX 6.4 и 6.4.1 существует проблема с полноэкранными режимами под фотоном, поэтому сейчас с этим ничего нельзя сделать. Под GF уже всё заложено для работы с множественными дисплеями в SDL. В Photon в оконных режимамх всё должно уже работать и так.
Записан

aluv
Sr. Member
****
Offline Offline

Сообщений: 301


Просмотр профиля
« Ответ #10 : Ноября 24, 2009, 07:56:44 pm »

Проверил билд SDL 1.3 svn5297 – без проблем собирается и устанавливается (native QNX 6.4.1). Спасибо за это счастье!
Тесты запускал на ПК с видео драйвером devg-radeon.so и проц. модуле с devg-lx800.so. Результат практически идентичный только fps разный  Wink  Звук и джойстик не проверял.
Так и не понял в каком виде поддерживается векторная графика? Тесты testdyngl, testgl, testgl2 выдают одинаковый ответ:
No OpenGL support on this system

А вот эти 3D тесты работают: testgles и testdyngles

на ПК
# ./testgles
Screen bpp: 16

Vendor     : QNX Software Systems
Renderer   : Unaccelerated 3D module
Version    : OpenGL ES-CM 1.0
Extensions : GL_OES_compressed_paletted_texture GL_OES_vertex_buffer_object GL_OES_query_matrix GL_OES_read_format

SDL_GL_RED_SIZE: requested 5, got 5
SDL_GL_GREEN_SIZE: requested 5, got 5
SDL_GL_BLUE_SIZE: requested 5, got 5
SDL_GL_DEPTH_SIZE: requested 16, got 16
285.60 frames per second

на LX800
# ./testgles
Screen bpp: 16

Vendor     : QNX Software Systems
Renderer   : Unaccelerated 3D module
Version    : OpenGL ES-CM 1.0
Extensions : GL_OES_compressed_paletted_texture GL_OES_vertex_buffer_object GL_OES_query_matrix GL_OES_read_format

SDL_GL_RED_SIZE: requested 5, got 5
SDL_GL_GREEN_SIZE: requested 5, got 6
SDL_GL_BLUE_SIZE: requested 5, got 5
SDL_GL_DEPTH_SIZE: requested 16, got 16
115.32 frames per second

Так в каком виде поддерживается векторная графика и векторные шрифты без волшебных спец. драйверов c 3D graphics support (devg-extreme2.so и т.п.)? Например на LX800?
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #11 : Ноября 24, 2009, 10:13:05 pm »

Так и не понял в каком виде поддерживается векторная графика?

SDL'ем напрямую векторная графика не поддерживается (окромя линий).

Тесты testdyngl, testgl, testgl2 выдают одинаковый ответ:
No OpenGL support on this system

А под Linux'ом тесты testgles и testdyngles выдают:
No OpenGL ES support on this system Smiley

Это нормально, т.к. в 6.4.1 есть только OpenGL ES 1.0.

Так в каком виде поддерживается векторная графика и векторные шрифты без волшебных спец. драйверов c 3D graphics support (devg-extreme2.so и т.п.)? Например на LX800?

OpenVG нативно не поддерживается ни в devg-extreme2, ни в lx800, ни в radeon. Оно, конечно делает вызовы 2D акселератора, когда это возможно, но почти всегда софтварно. На сколько я вижу, то OpenVG поддерживается в драйверах под разные Fujitsu Carmine, etc, в общем на тех 3D чипах, что идут под разные ARM, PPC.

Спасибо за тестирование!
Записан

agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #12 : Декабря 29, 2009, 11:56:26 pm »

откуда в заголовках некоторых файлов например:
linux/kd.h
linux/keyboard.h

?

SDL не только для QNX предназначен. Соответственно там могут быть инклуды, свойственные для Linux, xBSD, Solaris и даже Windows. Соответственно подключение тех или иных хедеров регулируется с помощью проверки свойственных для данной системы констант.
Записан
@gn
Jr. Member
**
Offline Offline

Сообщений: 97


Просмотр профиля
« Ответ #13 : Декабря 30, 2009, 05:50:00 pm »

откуда взять эти константы в qnx?

Здесь же форум програмистов.

А какое первое дело програмистa?
-Разобратся (в смысле програмном) на каком железе и софт будет сидет эго прога.

А дальше эму виднее будет?

Материальную часть объезятельно надо самому в константах описaть.

Что'б добротности было.

« Последнее редактирование: Декабря 30, 2009, 06:14:24 pm от @gn » Записан

пьяный за комп не садиться (себя памятка)
@gn
Jr. Member
**
Offline Offline

Сообщений: 97


Просмотр профиля
« Ответ #14 : Декабря 30, 2009, 09:02:16 pm »

... но почему портация под qnx с такими вещами?

Тут на форуме многие было ответов на вопросе Паниковского:
-А кто такой QNX?

У меня во такая версия(с англицким у меня не совсем):

Canadian uNX
Записан

пьяный за комп не садиться (себя памятка)
Страниц: [1] 2
  Печать  
 
Перейти в: