Поддержка аппаратного ускорения в LCL

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Re: Поддержка аппаратного ускорения в LCL

Сообщение MiniQ » 23.03.2014 12:57:20

Эх, нет панацеи...
Попробовал MSEgui - интересно, перспективно, но:
- ide падает при запуске на arm девайсе (Access violation). Полез посмотреть код - печалька. Столько "грязного кода", хаков. Вот пример:
Код: Выделить всё
var
  cur1: currency;
begin
        {$ifdef FPC}
         int64(cur1):= round(asfloat * intexp10(-SQLScale));
        {$else}
         int64(ar8ty(cur1)):= round(asfloat * intexp10(-SQLScale));
        {$endif}

или
Код: Выделить всё
type
readrecordprocty = procedure(const reader: treader; var data);

procedure readrecordar(const reader: treader; out ar;
     const typeinfo: pdynarraytypeinfo; const readproc: readrecordprocty);
begin
... // readproc в отладчике равен readdefdata
readproc(reader,additempo(ar,typeinfo,int1)^);
...
end;

procedure readdefdata(const reader: treader; var data);
begin
// var в отладчике приходит как ni
with sysenvdefty(data) do begin
  ord(kind):= reader.readenum(typeinfo(kind));
  name:= reader.readunicodestring;
  readstringar(reader,anames);
  longword(flags):= reader.readset(typeinfo(flags));
  initvalue:= reader.readunicodestring;
  argument:= reader.readunicodestring;
  help:= reader.readunicodestring;
  before:= reader.readunicodestring;
  after:= reader.readunicodestring;
end;
end;

Комментарии в коде мои.

Даже и не знаю, стоит ли опираться на такую библиотеку...
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Поддержка аппаратного ускорения в LCL

Сообщение debi12345 » 23.03.2014 15:30:53

ide падает при запуске на arm девайсе (Access violation).

Само IDE завязано на отладчик, при этом работа с регистрами и ассемблером ARM еще не реализована. Но алликухи (не завязанные на специфику АРМ) АФАЙК должны собираться и работать.

Столько "грязного кода", хаков.

Из-за этого (обхода ограничений ФПЦ - в том числе через хаки ) Мартин сейчас по-тихоньку делает свой "паскаль" :) Он - чел нетерпеливый и практичный , жадный до "пощупать результат", терпения сидеть и ждать когда в ФПЦ что-то нужно ему сделают, не имеет :)

Добавлено спустя 2 минуты 12 секунд:
Как собирать проекты вне ИДЕ :
Код: Выделить всё
fpc tools/bmp2pas.pas -B -l -Mobjfpc -Sh -CX -OG2p3 -Xs -Fulib/common/* -Fulib/common/kernel/i386-win32 -Fulib/common/kernel/windows -Fi/lib/common/kernel -XX


Добавлено спустя 9 минут 41 секунду:
А это
Код: Выделить всё
{$ifdef FPC}
         int64(cur1):= round(asfloat * intexp10(-SQLScale));
        {$else}
         int64(ar8ty(cur1)):= round(asfloat * intexp10(-SQLScale));
{$endif}

АФАЙК чтобы работало под DELPHI 7 (в которой нет 64 бит). MSE* проекты собирается Дельфями в том числе.

Добавлено спустя 5 минут 9 секунд:
А вообще в Вашем случае главное чтобы не тормозил GUI. Если не будет тормозить то бишь главное условие удовлетворено, то выкатывайте степбайстеповые багрепорты - за пару дней все будет пофиксено.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Поддержка аппаратного ускорения в LCL

Сообщение MiniQ » 23.03.2014 16:25:59

debi12345 писал(а):А это
Код: Выделить всё
{$ifdef FPC}         int64(cur1):= round(asfloat * intexp10(-SQLScale));        {$else}         int64(ar8ty(cur1)):= round(asfloat * intexp10(-SQLScale));{$endif}
АФАЙК чтобы работало под DELPHI 7 (в которой нет 64 бит). MSE* проекты собирается Дельфями в том числе.


Я не против запуска под дельфи.
Но конструкция, где явно переопределяется тип переменной-получателя (с extended на int64)и еще следующая строка такая:
Код: Выделить всё
move(cur1,sqldata^,po1^.sqllen);

- ужс.
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Поддержка аппаратного ускорения в LCL

Сообщение debi12345 » 23.03.2014 16:34:57

Но конструкция, где явно переопределяется тип переменной-получателя (с extended на int64)и еще следующая строка такая:

ИМХО, не стоит париться. БОльшая часть хаков вынужденно крутится вокруг IDE и Дельфи-совместимости, обычных прог они не касаются. Было много хаков (например крэкер-классы для паблик-доступа к приватным полям и методам ФПЦ-классов) в БД-суппорте, потом Мартину это надоело и он полностью переписал БД-движок. Если где недоглядел и сглючил - добро пожаловать с багрепортами, будут исправлены мгновенно.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Поддержка аппаратного ускорения в LCL

Сообщение MiniQ » 23.03.2014 16:37:54

debi12345 писал(а):А вообще в Вашем случае главное чтобы не тормозил GUI. Если не будет тормозить то бишь главное условие удовлетворено, то выкатывайте степбайстеповые багрепорты - за пару дней все будет пофиксено.

А что касается основной задачи - таки да!
скомпилил, запустил - _ЗНАЧИТЕЛЬНО_ быстрее и легче отрисовывается.
Даже без задействования аппаратного ускорения (сейчас попробую еще и его прикрутить).
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Поддержка аппаратного ускорения в LCL

Сообщение debi12345 » 23.03.2014 16:55:02

что касается основной задачи - таки да! скомпилил, запустил - _ЗНАЧИТЕЛЬНО_ быстрее и легче отрисовывается.

Не стоит забывать,что скорость отрисовки зависит от количества виджетов на форме - то бишь от ее сложности. Хотя не так сильно как например в ЛАЗАРЕ - потому что под виджеты не выделяются отдельные ОС-окна/канвасы.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Поддержка аппаратного ускорения в LCL

Сообщение MiniQ » 23.03.2014 17:09:52

debi12345 писал(а):Не стоит забывать,что скорость отрисовки зависит от количества виджетов на форме - то бишь от ее сложности. Хотя не так сильно как например в ЛАЗАРЕ - потому что под виджеты не выделяются отдельные ОС-окна/канвасы.

Естественно, я повторил структуру элементов как в основной задаче.

PS. В лоб openglgdi не запускается не на win-i386, не на linux-arm.
Кстати, чем отличается репозитарий mseuniverse?
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Поддержка аппаратного ускорения в LCL

Сообщение debi12345 » 23.03.2014 17:20:47

В лоб openglgdi не запускается не на win-i386

Возможно нужно засимлинкить "OpenGL ES" -> "OpenGL" DLL-ки. Если этого будет недостаточно, то придется адаптировать отличиях этих версий OpenGL

Кстати, чем отличается репозитарий mseuniverse?

Там дока, примеры, туториалы,... а также допкомпоненты, пробные версии GUI-бэкэндов (на базе Xft, SDL,..)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.

Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru