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

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

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

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

Сообщение MiniQ »

Эх, нет панацеи...
Попробовал 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;

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

Даже и не знаю, стоит ли опираться на такую библиотеку...
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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. Если не будет тормозить то бишь главное условие удовлетворено, то выкатывайте степбайстеповые багрепорты - за пару дней все будет пофиксено.
MiniQ
новенький
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Сообщение MiniQ »

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);

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

Сообщение debi12345 »

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

ИМХО, не стоит париться. БОльшая часть хаков вынужденно крутится вокруг IDE и Дельфи-совместимости, обычных прог они не касаются. Было много хаков (например крэкер-классы для паблик-доступа к приватным полям и методам ФПЦ-классов) в БД-суппорте, потом Мартину это надоело и он полностью переписал БД-движок. Если где недоглядел и сглючил - добро пожаловать с багрепортами, будут исправлены мгновенно.
MiniQ
новенький
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Сообщение MiniQ »

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

А что касается основной задачи - таки да!
скомпилил, запустил - _ЗНАЧИТЕЛЬНО_ быстрее и легче отрисовывается.
Даже без задействования аппаратного ускорения (сейчас попробую еще и его прикрутить).
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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

Не стоит забывать,что скорость отрисовки зависит от количества виджетов на форме - то бишь от ее сложности. Хотя не так сильно как например в ЛАЗАРЕ - потому что под виджеты не выделяются отдельные ОС-окна/канвасы.
MiniQ
новенький
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Сообщение MiniQ »

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

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

PS. В лоб openglgdi не запускается не на win-i386, не на linux-arm.
Кстати, чем отличается репозитарий mseuniverse?
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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

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

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

Там дока, примеры, туториалы,... а также допкомпоненты, пробные версии GUI-бэкэндов (на базе Xft, SDL,..)
Ответить