Monday, February 09, 2015

QtDeclarative on platforms without GLES (Quick2)

We ,Prevas (http://www.prevas.com), have been working on a yet to be released project. Our goal is to have a Quick2 compatible Qt Declarative framework for targets without GLES enabled GPU's. The basic design is:
* The application is a standard Quick2 QML application that can be created with QtCreator.
* The QML code runs inside the standard unaltered QML engine.
* A QML application can be described as a tree of QQuickItems. In the GLES QtDeclarative those are tied to GLES shaders. Within this implementation we have replaced the shaders with Qt 2d drawing methods. When a QQuickItem is shown on the screen it renders itself directly to the QPA back buffer. In this way we can skip a lot of abstraction layers compared to using widgets.


 The result is that we can run many of the Quick2 examples and demos on small ARM targets at a decent speed and with a relatively small cpu usage. The performance can be compared to running Quick2  software rendered on a PC.

This implementation will be , in case of release, pushed to gitorious.org probably with the LGPL license. If someone at Digia "The Qt Company" reads this and have any questions and or objections about the license, just contact me.

 If you are interested to get this project come out of our drawers, leave a comment here and I will contact you. We can help you to adopt this to your hardware and possibly also tune QPA backends for different GPU configurations and even to GPU less targets.

Please note that this project has no connections with and was started long before anything was known about: http://blog.qt.io/blog/2015/01/22/introducing-the-qt-quick-2d-renderer/

Monday, July 21, 2014

Qt for small systems

Qt has gain a lot of features, but most of them are targeted for cpu/gpu's that are very powerful. I have been working on a small windowing system with Qt on linux framebuffer. I hope it will provide a way to fully us widgets again. The problem with the linuxfb plugin is that it doesn't work with popup windows etc. With a windowing system you can use it just like you could with the old QWS system. The plan is to do something with a very low footprint, making it useful on ~200Mhz systems with limited amount of ram. EDIT.. It seems like you can run Wayland on pure framebuffer , I have completely missed that progress. I will try it out , and if it works well with QtWayland , I will go with that. But the thing that I am writing is fun so I will continue it anyway ! :)

Monday, February 17, 2014

My thoughts about Qt on the i.MX series

I have been tinkering with Qt on the i.MX6/53/51 platforms for some time now. It has been quite an adventure. I started up with a plain QWS on
the i.MX51. I felt that the drawing was much faster than on X11 and I found a old application , Xqt. Xqt is a Xwindows server for running on Qt.
It was designed for Qtopia running on Zaurus and friends. It was written for Qt2 so it needed some porting efforts to be able to run on Qt4.
Xqt was for me a big win. Xwindows actually rendered faster on top on Qt.


On the photo above you can see Gnome running in QWS on a i.MX51 based computer made by Genesi (http://www.genesi-usa.com)
The next step for me was to get GLES working on Qt, My first effort was to create a QWS plugin that rendered all its graphics with
GLES. It also provided a QGlscreen , so the hello_es example worked. The problem with QWS and GLES is that you only can use
GLES in fullscreen mode ,which means that there is no way to add widgets in a normal way. I did not like that fact .
So I did a "hack" to be able to show "hello_es" as it should be displayed:



Some of you participated in a beta test of this. Unfortunately It had some problems and after some testing I decided not to release it.

So all work done that far was on MX51/53. What about MX6?

When I got my hand on a i.MX6 board , Qt4 was on its way out and Qt5 was stepping in. Qt5 comes with EGLFS QPA backend
which makes it easy to display GL content on the framebuffer. The biggest issue I have with Qt5 is the lack of support for widgets
on a embedded display. The only way I could control GL content on a framebuffer display was with QtQuick /Quick3d.

So what's next?

My current plan is to focus on getting widget/c++ back to framebuffer displays. If you have tried to use the LINUXFB backend
in Qt5 you know what I mean. A alternative is to use the DirectFB backend , but it behaves almost as bad. I have customers
using Qt on systems that don't use EGL and for the moment I can't recommend them to use Qt5 , which is very sad.

Friday, August 24, 2012

Qt5 build process for i.MX 5x -- important update!!

A short howto how to build Qt5 for Freescale i.MX 5x


The original post here  is completely outdated!!


Right now you only need a sys root with the GLES headers/libraries in it.
Then configure/build for linux-arm-g++. That's it!
Simple and fun!!



Prerequisites:


A recent ltib envioronment , that you configured and built for your target. You are going to use the rootfs for the Qt5 dependencies. If you at a later stage want to build webkit you also need libicu for your target installed in your rootfs. If you want GLES functionality EGL and GLES2 needs to be in the rootfs. 

1) Get the latest Qt5 from the official GIT repository:
    git clone git://gitorious.org/qt/qt5.git qt5
2) Create a build directory somewhere , for example :
  /home/micken/qtbuild
3) Go to the your newly cloned Qt5 tree and do the following command:
   perl init-repository
   This will download the sourcecode.
3) Inside the sourcetree you can find a directory called qtbase. 
   This directory looks like the root directory of a Qt4x source tree.
4) Find the file  mkspecs/devices/linux-imx6-g++/qmake.conf inside qtbase.
5) Edit it to find your toolchain and rootfs. In order to build for i.MX
   5x you need to comment out EGLFS_PLATFORM_HOOKS_SOURCES.
   Note the configure line at the top of the file and copy it to a textfile
   and modify it to reflect your environment.
6) Go to your created build directory and issue the configure script from the
   with the textfile you created. ( sh /path/to/qt5/qtbase/yourtextfile )
7) After this you should be able to just do make;make install
8) The other libraries / examples can be built by using your installed Qt
   make sure it uses the qmake from the installed Qt.
9) To install Qt5 on target , make a directory named the same as your
   installation path (important) and copy the lib and plugins directories to it.
10) Try some examples ,you can start them like this:
   ./hellogl_es2 -platform eglfs.

Have fun with Qt5. I am working on a new graphics platform plugin that will integrate 2D and 3D on the i.MX. More about that later.

Sunday, August 05, 2012

Qt on the i.MX revisited

I am working on bringing a good implementation of Qt5 to the i.MX series of processors. From the i.MX 51 to the new i.MX 6. This is a short video showing the nested demo of the qt3d api.





Sunday, March 18, 2012

Time for some Amiga buisness

This year will be a year full of Amiga coding. Some MorphOS specific tasks and a Amiga:ish Word Processor with odt capabilities.

I am currently working on rendering the text from a odt file in a MUI (Magic User Interface) custom class.

Wednesday, September 08, 2010

Blog reboot

Some projects I am working on now:

Qt:

Qt GL Driver for the Efika MX systems.



Android:

Android port for the Efika MX systems.



Barcode scanning and printing @ nSpike:

Ticket printing engine for Swebus (sweden) and a roadtoll barcode scanning service.
Sorry no pictures or videos.

Thursday, December 17, 2009

Sunday, June 14, 2009

Progress

Do not despair , I am still working on Anubis and I am making progress. However I have a lot of other projects that keeps me busy.

Sunday, April 26, 2009

SimpleMail for AROS update

Unfortunately I have some problems with AROSTCP, I cannot transfer more than 50M without a crash , and since my inbox is larger than 50M , SimpleMail can't fetch it. However if I restart AROSTCP it can continue to fetch mail. So SimpleMail seems to work just fine.

I will not relase the new version until this problem is solved.

Friday, March 20, 2009

Catch the logo

Today I wrote a small demo that uses the touchscreen to move around a bitmap window.

Wednesday, March 18, 2009

Anubis on ARM ?

Not exactly but a beginning of a technology that might be used in Anubis, especially on small devices. I talk about graphics subsystem which displays on the fbdev device in linux.

bbrv blog

:)


anubispngarm

A photo on the first try on displaying a Anubis logo on the ARM board , gives a good look of the board itself.

Anubis logo movieclip


A very low quality movie on three Anubis logos scrolling on the tiny lcd (you can only see white rectangles , but they are logos I promise :))

Saturday, March 07, 2009

My take on the "A#?" future

When I look back I see a computer platform that was superior to every other. It had amazing hardware and a fast multitasking operating system. It could have been the standard for personal computers. But it failed , not only because commodore was doing bad things , but mainly because of IBM. IBM was the main factor in computer development , and when it launched the idea of the "pc" not even Apple had a chance.

Anyway history moved on and after many turns we ended up with three "A" platforms plus emulators. We have the official AmigaOS , MorphOS and AROS.
I think that this actually is a good thing. It gives the users the possibility to pick whatever they like and gives the developers the opportunity focus on different areas. I think that the classic "A" platforms listed aboves still have a important role to fill together with emulators.

I for myself is a happy MorphOS user and I have no intention to leave that platform.

However as a developer I have decided to go in another direction.

I still believe that the "A" way of doing things is something that users want. But I also believe that the OS base is very outdated and suffers from several weaknesses. So I have decided to go with the Anubis project.

Anubis aims to be a "A" like system but with the Linux kernel as a foundation. I really don't want another Linux distribution , but a new OS. I hope that old "A" users will feel at home in the Anubis environment rather than Linux users. This is a requirement for me.


+++

New versions of SimpleMail for AROS

I will soon release a new version of SimpleMail for AROS , with various improvements.

* Use of the "new" SimpleMail listclass
* Enabled the quick search functionality
* Updated to the latest version
* PPC version now available , currently only on hosted , I still have problems with
native

* .. and .. more

screenies , first from x86 , the transparency comes from 3d effects in linux the other is from ppc/hosted showing SimpleMail and AMosaic.


smnew

arosinterppc

Not official

My posts here does not necessarily represent the official Anubis team, it is only my thoughts and experiments that may become a part of Anubis or not.

Tests with xcb

This is a old screenie showing my test windowmanager built with xcb and cairo/xcb.


anubis red and black

fbdev graphics subsystem

I have started to write a graphics subsystem for fbdev the linux kernel framebuffer.
So far I got:

* Bitmap abstraction
* Object oriented using ObjC
* Automatic expose handling
* Display server with client lib communicating over UNIX sockets
* PNG loading with libpng
* Font rendering with Freetype
* .. and some more stuff..
And of course a couple of screenies, stay tuned for videos showing animation and stuff :)

fttest

fbout