QNX.ORG.RU

Разработка => Разработка графических приложений => Тема начата: lestat от Июня 11, 2009, 09:26:41 pm



Название: SDL на Foundry27
Отправлено: lestat от Июня 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, работа с каждый видеодрайвером тоже имеет много ньюансов.


Название: Re: SDL на Foundry27
Отправлено: agent от Июня 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. См. скриншот:

(http://img170.imageshack.us/img170/3342/result.th.jpg) (http://img170.imageshack.us/i/result.jpg/)

При переходе в полноэкранный режим происходит сброс видеорежима в 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.



Название: Re: SDL на Foundry27
Отправлено: agent от Июня 13, 2009, 09:52:12 am
Еще обидно, что в QNX пока только OpenGL ES, кроме синтетических тестов ничего серьезного погонять не удалось. Большинство игрушек требует "честного" OpenGL.


Название: Re: SDL на Foundry27
Отправлено: lestat от Июня 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. Спасибо за тестирование.


Название: Re: SDL на Foundry27
Отправлено: agent от Июня 13, 2009, 10:31:11 am
Собрал последнюю версию MPlayer с SDL 1.3 (потребовалось одну строчку закомментировать). Звук проигрывается отлично, видео по понятным причинам отсутствует.

Как обнаружил, из-за изменений, связанных с подежкой в SDL клавиатуры, многие программы пока не собираются (отсутствует ряд констант, связанных с кодами клавиатуры, изменился набор параметров некоторых функций). Это при беглом осмотре.


Название: Re: SDL на Foundry27
Отправлено: lestat от Июня 13, 2009, 02:21:14 pm
Теперь для сборки старых приложений нужно подключать SDL_compat.h, Sam сказал, что после выхода пары релизов 1.3.x он уберёт legacy поддержку. Даже сейчас все приложения собранные в режиме совместимости теряют возможность использовать аппаратную акселерацию. А первый SDL 1.3 ориентировочно выйдет в конце осени.


Название: Re: SDL на Foundry27
Отправлено: lestat от Октября 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.


Название: Re: SDL на Foundry27
Отправлено: lestat от Ноября 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 и т.д.


Название: Re: SDL на Foundry27
Отправлено: Fregl от Ноября 23, 2009, 11:45:56 am
Планируется ли поддержка мультидисплеев в полноэкранном/оконном режимах?


Название: Re: SDL на Foundry27
Отправлено: lestat от Ноября 23, 2009, 12:36:05 pm
У QNX 6.4 и 6.4.1 существует проблема с полноэкранными режимами под фотоном, поэтому сейчас с этим ничего нельзя сделать. Под GF уже всё заложено для работы с множественными дисплеями в SDL. В Photon в оконных режимамх всё должно уже работать и так.


Название: Re: SDL на Foundry27
Отправлено: aluv от Ноября 24, 2009, 07:56:44 pm
Проверил билд SDL 1.3 svn5297 – без проблем собирается и устанавливается (native QNX 6.4.1). Спасибо за это счастье!
Тесты запускал на ПК с видео драйвером devg-radeon.so и проц. модуле с devg-lx800.so. Результат практически идентичный только fps разный  ;)  Звук и джойстик не проверял.
Так и не понял в каком виде поддерживается векторная графика? Тесты 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?


Название: Re: SDL на Foundry27
Отправлено: lestat от Ноября 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 :)

Это нормально, т.к. в 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.

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


Название: Re: SDL на Foundry27
Отправлено: agent от Декабря 29, 2009, 11:56:26 pm
откуда в заголовках некоторых файлов например:
linux/kd.h
linux/keyboard.h

?

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


Название: Re: SDL на Foundry277
Отправлено: @gn от Декабря 30, 2009, 05:50:00 pm
откуда взять эти константы в qnx?

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

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

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

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

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



Название: Re: SDL на Foundry27
Отправлено: @gn от Декабря 30, 2009, 09:02:16 pm
... но почему портация под qnx с такими вещами?

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

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

Canadian uNX


Название: Re: SDL на Foundry27
Отправлено: lestat от Декабря 30, 2009, 11:03:54 pm
естественно линуксовские определения этих констант у меня есть но почему портация под qnx с такими вещами?

А в чём, собственно, проблема, если эти файлы не компилируются во время сборки под QNX ?


Название: Re: SDL на Foundry27
Отправлено: lestat от Декабря 31, 2009, 08:22:55 am
Нет. Самый простой способ это сделать - это разбить полигон на треугольники. Если полигон выпуклый, то элементарно берём первую попавшуюся точку и берём каждую пару остальных точек. Если нет - то нужно производить триангуляцию полигона. Треугольники уже закрашивать горизонтальными линиями.


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 03, 2010, 09:38:41 am
Нет, таких мануалов нет.


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 03, 2010, 05:22:29 pm
Ты смотришь код под Linux и пытаешься его использовать в QNX. Зачем ?


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 03, 2010, 06:18:59 pm
Ты смотришь универсальные исходники под все платформы.


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 03, 2010, 07:16:52 pm
Исходники под QNX в каталогах ./src/video/qnxgf и ./src/video/photon


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 04, 2010, 09:00:17 pm
Там же, в sdl_photon.c, дальше. Если тебе интересно, изучай все исходники, не задавай глупых вопросов.


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 05, 2010, 11:01:50 am
Потому что их там нет.


Название: Re: SDL на Foundry27
Отправлено: lestat от Января 05, 2010, 05:17:59 pm
Да, все исходники. Зачем тебе исходники этой функции ?


Название: Re: SDL на Foundry27
Отправлено: fenriz от Июля 12, 2011, 12:51:56 pm
Уже создал отдельную тему, но мне там толком не ответили.
 
У меня QNX650 - пробовал собрать SDL через pkgsrc:
все зависимости более-менее собрались, кроме arts и esound - сборка закончилась ошибкой и я их убрал из опций. Но это меня не спасло - в итоге для самого SDL bmake выдал ошибку:

In file included from ./src/video/photon/SDL_ph_events.c:38:
./src/video/photon/SDL_ph_video.h:41:30: error: GL/qnxgl.h: No such file or directory
./src/video/photon/SDL_ph_video.h:42:29: error: GL/GLPh.h: No such file or directory
In file included from ./src/video/photon/SDL_ph_events.c:38:
./src/video/photon/SDL_ph_video.h:83: error: expected specifier-qualifier-list before 'qnxglc_t'
./src/video/photon/SDL_ph_events.c: In function 'ph_DispatchEvent':
./src/video/photon/SDL_ph_events.c:122: error: 'struct SDL_PrivateVideoData' has no member named 'event'
и т.д. и т.п.


Потом попытался собрать из исходников с foundry27 (SDL-1.3-src-svn5297.tar.gz). Все равно ошибка:

In file included from src/video/SDL_renderer_gl.c:27:
./include/SDL_opengl.h:4527: error: redefinition of typedef 'PFNGLCOLORTABLEPROC'
/usr/pkg/include/GL/gl.h:1739: note: previous declaration of 'PFNGLCOLORTABLEPROC' was here
./include/SDL_opengl.h:4528: error: redefinition of typedef 'PFNGLCOLORTABLEPARAMETERFVPROC'
/usr/pkg/include/GL/gl.h:1740: note: previous declaration of 'PFNGLCOLORTABLEPARAMETERFVPROC' was here
./include/SDL_opengl.h:4529: error: redefinition of typedef 'PFNGLCOLORTABLEPARAMETERIVPROC'
/usr/pkg/include/GL/gl.h:1741: note: previous declaration of 'PFNGLCOLORTABLEPARAMETERIVPROC' was here
и еще много.

Еще хочу уточнить:
1) SDL из pkgsrc вообще собирается под 650 и можно ли с ним работать? Или он там только для красоты (вроде пакетов suse100_32_base и т.п.)?
2) SDL-1.3-src-svn5297 с fondry27 - это самая последняя версия, или где-то можно достать новее? И что  предварительно нужно сделать чтобы он нормально собрался?
3) Как SDL-зависимые приложения из pkgsrc заставить собираться с использованием SDL-1.3 из foundry27?