Category:Hardware-FAQ: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
=<span class="caps">FAQ</span> on How to implement Qt Hardware Support=
h1. FAQ on How to implement Qt Hardware Support


==What is the difference between Qt 4.8.x and Qt 5?==
== What is the difference between Qt 4.8.x and Qt 5? ==


* 4.8: QtQuick1, Javascript core, <span class="caps">QWS</span> (good) and <span class="caps">QPA</span> (not good)
* 4.8: QtQuick1, Javascript core, QWS (good) and QPA (not good)
* 5.0: QtQuick2, v8, <span class="caps">QPA</span>, no <span class="caps">QWS</span>, <span class="caps">QPA</span> only supporting OpenGL and DirectFB backends
* 5.0: QtQuick2, v8, QPA, no QWS, QPA only supporting OpenGL and DirectFB backends  


==What is the difference between <span class="caps">QPA</span> and <span class="caps">QWS</span> and when should I use which?==
== What is the difference between QPA and QWS and when should I use which? ==


* In general use <span class="caps">QWS</span> on 4.8 and <span class="caps">QPA</span> on 5.0
* In general use QWS on 4.8 and QPA on 5.0
* Depending on the use-case <span class="caps">QPA</span> on 4.8 is a valid choice as well. Some important limitations and requirements are necessary to consider:
* Depending on the use-case QPA on 4.8 is a valid choice as well. Some important limitations and requirements are necessary to consider:
** <span class="caps">QPA</span> on Qt4.8 only makes sense on OpenGL Hardware! If you don’t have OpenGL HW there is absolutely no point in choosing Qt4.8-<span class="caps">QPA</span> over Qt4.8-<span class="caps">QWS</span>
** QPA on Qt4.8 only makes sense on OpenGL Hardware! If you don't have OpenGL HW there is absolutely no point in choosing Qt4.8-QPA over Qt4.8-QWS
** If you have OpenGL HW, there are two distinct use-cases to consider:
** If you have OpenGL HW, there are two distinct use-cases to consider:
*** single-process: The features and limits of <span class="caps">QWS</span> and <span class="caps">QPA</span> are similar. <span class="caps">QWS</span> is older, is therefor considered more stable. Arguments for <span class="caps">QPA</span> could be:
*** single-process: The features and limits of QWS and QPA are similar. QWS is older, is therefor considered more stable. Arguments for QPA could be:
**** you have to work on the graphcis/platform-plugin because your OpenGL implementation need special threadment, and(!):
**** you have to work on the graphcis/platform-plugin because your OpenGL implementation need special threadment, and(!):
**** you’re thinking about moving to Qt5
**** you're thinking about moving to Qt5
*** multi-process: There is currently no officially supported embedded(!) OpenGL-multi-process offering in Qt4.8. Implementing a platform-plugin for <span class="caps">QPA</span> is considered to be way simpler then writing <span class="caps">QWS</span>-graphics-plugins. Therefor Qt 4.8 <span class="caps">QPA</span> is the primary choice if you start your own platform-plugin or work on an existing platform plugin (e.g. the wayland-platform-plugin)
*** multi-process: There is currently no officially supported embedded(!) OpenGL-multi-process offering in Qt4.8. Implementing a platform-plugin for QPA is considered to be way simpler then writing QWS-graphics-plugins. Therefor Qt 4.8 QPA is the primary choice if you start your own platform-plugin or work on an existing platform plugin (e.g. the wayland-platform-plugin)


==What are the technical differences between QtQuick 1 and QtQuick 2?==
== What are the technical differences between QtQuick 1 and QtQuick 2? ==


* QtQuick 1 is the only choice for Qt4.7 and Qt4.8
* QtQuick 1 is the only choice for Qt4.7 and Qt4.8
Line 23: Line 23:
* QtQuick 2 is based on a complete new and tailor made graphics stack called scenegraph.
* QtQuick 2 is based on a complete new and tailor made graphics stack called scenegraph.
** This leads to rendering performance of QtQuick2 which is a multiple of the rendering performance of QtQuick1
** This leads to rendering performance of QtQuick2 which is a multiple of the rendering performance of QtQuick1
* Both use the same language (<span class="caps">QML</span>) to declare a user interface
* Both use the same language (QML) to declare a user interface
* Although the language is the same, QtQuick2 comes with more and improved UI-elements (e.g. a complete new particle-engine)
* Although the language is the same, QtQuick2 comes with more and improved UI-elements (e.g. a complete new particle-engine)


==When should I use OpenGL, OpenVG, DirectFB versus software rendering?==
== When should I use OpenGL, OpenVG, DirectFB versus software rendering? ==


* Use OpenGL and DirectFB for hardware acceleration in 4.8 or 5.0. OpenVG only works on 4.8 (it’s a graphics system only tested on Symbian). Be aware of the hardware acceleration capabilities of your device: if you do something it can’t accelerate you will end up with software rendering (not great performance).
* Use OpenGL and DirectFB for hardware acceleration in 4.8 or 5.0. OpenVG only works on 4.8 (it's a graphics system only tested on Symbian). Be aware of the hardware acceleration capabilities of your device: if you do something it can't accelerate you will end up with software rendering (not great performance).  


==What is the difference between Webkit 1 and Webkit 2 and how are they supported on Qt 4 and Qt 5?==
== What is the difference between Webkit 1 and Webkit 2 and how are they supported on Qt 4 and Qt 5? ==


* Webkit 1 runs on both 4.8 and 5.0, Webkit2 only runs on 5.0. Qt Webkit2 is staying up to date with HTML5 features in webkit.org (Qt Webkit 1 is not).
* Webkit 1 runs on both 4.8 and 5.0, Webkit2 only runs on 5.0. Qt Webkit2 is staying up to date with HTML5 features in webkit.org (Qt Webkit 1 is not).


==What are the options for implementing multimedia playback in Qt 4 and Qt 5?==
== What are the options for implementing multimedia playback in Qt 4 and Qt 5? ==


* The options are in-process and out-of-process. Most demos are using out-of-process today but if you implement in-process you can apply QtQuick effects to your media. (more from Bhooshan).
* The options are in-process and out-of-process. Most demos are using out-of-process today but if you implement in-process you can apply QtQuick effects to your media. (more from Bhooshan).


==When should I use DirectFB versus Wayland?==
== When should I use DirectFB versus Wayland? ==


* In general this questions shouldn’t be answered by “Qt” but by the silicon-vender (which should also be the one providing the <span class="caps">BSP</span>)
* In general this questions shouldn't be answered by &quot;Qt&amp;quot; but by the silicon-vender (which should also be the one providing the BSP)
* The questions is only valid if you want to use OpenGL-HW-acceleration (and you need multi-process)
* The questions is only valid if you want to use OpenGL-HW-acceleration (and you need multi-process)
* Qt has wayland-platform-plugins for Qt4.8 and Qt5
* Qt has wayland-platform-plugins for Qt4.8 and Qt5
Line 46: Line 46:
* [for holder: please comment the directfb-opengl state in Qt4/Qt5]
* [for holder: please comment the directfb-opengl state in Qt4/Qt5]


==How do I implement <span class="caps">QML</span> 1 or <span class="caps">QML</span> 2 in a single process? In multiple processes? Can I implement QML1 and QML2 in the same process?==
== How do I implement QML 1 or QML 2 in a single process? In multiple processes? Can I implement QML1 and QML2 in the same process? ==


* foo
* foo


==What is the difference between in-process multimedia play back versus out-of-process multimedia playback?==
== What is the difference between in-process multimedia play back versus out-of-process multimedia playback? ==


* foo
* foo


==What do I implement differently using <span class="caps">QML</span> in full screen versus windowed user interfaces?==
== What do I implement differently using QML in full screen versus windowed user interfaces? ==


* foo
* foo


==What is the list of issues and their sequence in which I should check them when encountering less than satisfactory performance on my hardware?==
== What is the list of issues and their sequence in which I should check them when encountering less than satisfactory performance on my hardware? ==


* foo
* foo


==Is OpenVG supported in Qt5?==
== Is OpenVG supported in Qt5? ==


* No (at least not unless you contribute it).
* No (at least not unless you contribute it).


==Where does <span class="caps">JIT</span> work in Webkit? (e.g <span class="caps">MIPS</span>, <span class="caps">ARM</span>, IA)==
== Where does JIT work in Webkit? (e.g MIPS, ARM, IA) ==


* foo
* foo
* (Holger)
* (Holger)


==From what and in what sequence should I build my Qt software stack?==
== From what and in what sequence should I build my Qt software stack? ==


* foo
* foo
* (e.g. always pull from Webkit trunk because it is moving so fast)
* (e.g. always pull from Webkit trunk because it is moving so fast)
* How do I get Qt running on my board? (Also a session at <span class="caps">QCS</span>)
* How do I get Qt running on my board? (Also a session at QCS)
* X86, <span class="caps">ARM</span>, <span class="caps">MIPS</span>,
* X86, ARM, MIPS,  
* GL/notGL (<span class="caps">DFB</span>, OpenVG, Direct3D)
* GL/notGL (DFB, OpenVG, Direct3D)


==How much time is a Qt port to new hardware going to take?==
== How much time is a Qt port to new hardware going to take? ==


* foo
* foo
Line 87: Line 87:
* When doing a Qt port, what technical issues are critical to watch out for?
* When doing a Qt port, what technical issues are critical to watch out for?


==What tools can I use when and where across Qt4 and Qt5?==
== What tools can I use when and where across Qt4 and Qt5? ==


* Foo
* Foo
Line 96: Line 96:
* Do I need to do anything to work well with 3rd party (and/or system) tools?
* Do I need to do anything to work well with 3rd party (and/or system) tools?


==Performance: How do I identify and resolve driver performance issues?==
== Performance: How do I identify and resolve driver performance issues? ==


* foo
* foo


==Performance: How do I identify code that should be running on the <span class="caps">GPU</span> and isn’t?==
== Performance: How do I identify code that should be running on the GPU and isn’t? ==


* foo
* foo


==Performance: How do I identify and resolve multimedia performance issues?==
== Performance: How do I identify and resolve multimedia performance issues? ==


* foo
* foo


==Performance: What issues can I safely ignore?==
== Performance: What issues can I safely ignore? ==


* foo
* foo
* Features? Modules? Qt Add Ons?
* Features? Modules? Qt Add Ons?


==How do I package and document a fix to upstream it? How do I upstream it?==
== How do I package and document a fix to upstream it? How do I upstream it? ==


* foo
* foo
Line 122: Line 122:
* What testing should I do?
* What testing should I do?
* How should I test?
* How should I test?
* Should I do unit tests?
* Should I do unit tests?  
* What are the pros/cons of unit testing?
* What are the pros/cons of unit testing?


==What is the status of Qt Components for embedded? For Desktop?==
== What is the status of Qt Components for embedded? For Desktop? ==


* foo
* foo
===There is only one article in "Hardware FAQ":===
===D===
* [[:Category:Devices|Category:Devices]]

Revision as of 08:58, 24 February 2015

h1. FAQ on How to implement Qt Hardware Support

What is the difference between Qt 4.8.x and Qt 5?

  • 4.8: QtQuick1, Javascript core, QWS (good) and QPA (not good)
  • 5.0: QtQuick2, v8, QPA, no QWS, QPA only supporting OpenGL and DirectFB backends

What is the difference between QPA and QWS and when should I use which?

  • In general use QWS on 4.8 and QPA on 5.0
  • Depending on the use-case QPA on 4.8 is a valid choice as well. Some important limitations and requirements are necessary to consider:
    • QPA on Qt4.8 only makes sense on OpenGL Hardware! If you don't have OpenGL HW there is absolutely no point in choosing Qt4.8-QPA over Qt4.8-QWS
    • If you have OpenGL HW, there are two distinct use-cases to consider:
      • single-process: The features and limits of QWS and QPA are similar. QWS is older, is therefor considered more stable. Arguments for QPA could be:
        • you have to work on the graphcis/platform-plugin because your OpenGL implementation need special threadment, and(!):
        • you're thinking about moving to Qt5
      • multi-process: There is currently no officially supported embedded(!) OpenGL-multi-process offering in Qt4.8. Implementing a platform-plugin for QPA is considered to be way simpler then writing QWS-graphics-plugins. Therefor Qt 4.8 QPA is the primary choice if you start your own platform-plugin or work on an existing platform plugin (e.g. the wayland-platform-plugin)

What are the technical differences between QtQuick 1 and QtQuick 2?

  • QtQuick 1 is the only choice for Qt4.7 and Qt4.8
  • QtQuick 2 comes with and is the primary choice for Qt5.x
  • QtQuick 2 is based on a complete new and tailor made graphics stack called scenegraph.
    • This leads to rendering performance of QtQuick2 which is a multiple of the rendering performance of QtQuick1
  • Both use the same language (QML) to declare a user interface
  • Although the language is the same, QtQuick2 comes with more and improved UI-elements (e.g. a complete new particle-engine)

When should I use OpenGL, OpenVG, DirectFB versus software rendering?

  • Use OpenGL and DirectFB for hardware acceleration in 4.8 or 5.0. OpenVG only works on 4.8 (it's a graphics system only tested on Symbian). Be aware of the hardware acceleration capabilities of your device: if you do something it can't accelerate you will end up with software rendering (not great performance).

What is the difference between Webkit 1 and Webkit 2 and how are they supported on Qt 4 and Qt 5?

  • Webkit 1 runs on both 4.8 and 5.0, Webkit2 only runs on 5.0. Qt Webkit2 is staying up to date with HTML5 features in webkit.org (Qt Webkit 1 is not).

What are the options for implementing multimedia playback in Qt 4 and Qt 5?

  • The options are in-process and out-of-process. Most demos are using out-of-process today but if you implement in-process you can apply QtQuick effects to your media. (more from Bhooshan).

When should I use DirectFB versus Wayland?

  • In general this questions shouldn't be answered by "Qt&quot; but by the silicon-vender (which should also be the one providing the BSP)
  • The questions is only valid if you want to use OpenGL-HW-acceleration (and you need multi-process)
  • Qt has wayland-platform-plugins for Qt4.8 and Qt5
  • The Qt5-wayland-plugin get more attention (then the one for Qt4.8) and should be on a par with wayland-development
  • [for holder: please comment the directfb-opengl state in Qt4/Qt5]

How do I implement QML 1 or QML 2 in a single process? In multiple processes? Can I implement QML1 and QML2 in the same process?

  • foo

What is the difference between in-process multimedia play back versus out-of-process multimedia playback?

  • foo

What do I implement differently using QML in full screen versus windowed user interfaces?

  • foo

What is the list of issues and their sequence in which I should check them when encountering less than satisfactory performance on my hardware?

  • foo

Is OpenVG supported in Qt5?

  • No (at least not unless you contribute it).

Where does JIT work in Webkit? (e.g MIPS, ARM, IA)

  • foo
  • (Holger)

From what and in what sequence should I build my Qt software stack?

  • foo
  • (e.g. always pull from Webkit trunk because it is moving so fast)
  • How do I get Qt running on my board? (Also a session at QCS)
  • X86, ARM, MIPS,
  • GL/notGL (DFB, OpenVG, Direct3D)

How much time is a Qt port to new hardware going to take?

  • foo
  • How can I make it faster/easier?
  • What thinks are critical? What things are “nice to have”?
  • What do I need to do first? Can I do things in stages?
  • When doing a Qt port, what technical issues are critical to watch out for?

What tools can I use when and where across Qt4 and Qt5?

  • Foo
  • QtCreator does not yet work on Qt5.
  • How do I get the Tools ready?
  • How do I deal with version changes?
  • What license issues do I need to consider?
  • Do I need to do anything to work well with 3rd party (and/or system) tools?

Performance: How do I identify and resolve driver performance issues?

  • foo

Performance: How do I identify code that should be running on the GPU and isn’t?

  • foo

Performance: How do I identify and resolve multimedia performance issues?

  • foo

Performance: What issues can I safely ignore?

  • foo
  • Features? Modules? Qt Add Ons?

How do I package and document a fix to upstream it? How do I upstream it?

  • foo
  • How should I package my work?
  • How should I document my work?
  • Where / how should I upstream?
  • What do I do if a fix cannot be up streamed?
  • What testing should I do?
  • How should I test?
  • Should I do unit tests?
  • What are the pros/cons of unit testing?

What is the status of Qt Components for embedded? For Desktop?

  • foo

This category currently contains no pages or media.