javafx: multiple displays when using opengl-es2 pipeline on embedded platforms

Prasant J pj0585 at gmail.com
Wed Jul 16 06:32:01 UTC 2014


On Tue, Jul 15, 2014 at 8:37 PM, David Hill <David.Hill at oracle.com> wrote:
> On 7/15/14, 10:28 AM, Anthony Petrov wrote:
>>
>> Hi Prasant,
>>
>> JavaFX supports multi-screen configurations on all the desktop platforms
>> (Windows, Mac, and Linux).

@Anthony:
Windows multiscreen support is via D3D pipeline... I have checked that.
Linux (x86) multiscreen support via "sw" (software) rendering works
I was not able to setup opengl on windows or linux, so I could not verify that.


>>
>> David, or Daniel, or Lisa (all cc'ed) could clarify whether this is
>> supported on embedded platforms currently.
>
> This is not something we have targeted yet for ARM devices.
>
> There are several reasons for this, none of which is a "stopper".
>    * we do not have a device in house that supports multiple screens (ie 2
> HDMI ports), though I may be wrong on this because I do have a device with
> an LCD touch and an HDMI port, so I might be able to configure both to work.

@Dave: My device uses one HDMI and one LVDS port.

>    * we have not been asked to spend the time support this
>    * because of our focus on direct to framebuffer, we need vendor specific
> API is pick which screen we are referencing. I have seen this capability
> documented for the i.MX6, but have not seen how to do it on on other
> platforms.
>

@Anthony & @Dave:
I am 100% sure that multi screen support is not added to ARM linux
platforms (direct framebuffer).
I'm an embedded linux expert but this is my maiden foray into high
level library like openjfx and I'm clearly not an expert at that.

But I have a few pointers to substantiate my point:

- In file: modules/graphics/src/main/native-glass/lens/wm/screen/fbdevScreen.c
the framebuffer is hard coded to /dev/fb0.
If a system has multiple screens, then why is the framebuffer handle
(/dev/fbn) not populated dynamically?

- in file: modules/graphics/src/main/native-glass/lens/LensScreen.c in
function createJavaSCreens() the screen count is hard coded to "1" and
the comment clearly says that "we know that is all we currently
support".

Could you please confirm if my understanding is correct and that
currently only 1 screen is supported.


@Dave:
On iMX6 platform: vivante opengl libraries (framebuffer build) lets
the openjfx query a display using screen index, but it does not return
the exact framebuffer (/dev/fbn) to which that index points to.
So my understanding is that: openjfx using linux framebuffer handle
(/dev/fbn) to query the screen information and uses opengl screen
index to display the data. As there is no way for openjfx to know
which screen index of opengl refers to which framebuffer, so the
screen is limited to only 1.
Can you please confirm my understanding, (if you are handling these
portions of openjfx development)?


> Certainly adding support for multiple screens should not be hard, if I am
> right, it would mean extending code in two to three places. (discovery in
> MonocleScreen, and then using the screen in the creation of the EGL context
> in prism).
>
> Can you share which device you were thinking of using this with ?

I'm using Freescale's iMX6 Cortex A9 processor.

> Would you be interested in helping with this?

I will need to check my company policies and manager's permission.
Before that, I would like to know what kind of help are you looking
at?


We are attempting to add multiple screen support but we are no experts
and without reference code we are not able to make surgical changes
for our configuration.

With surgical changes I was able to add multi-screen query to
(native-glass/lens/wm/screen) code (although I cannot test it
completely yet) and like the already existing hard coded /dev/fb0, I
have also hard coded it to the other framebuffer that I intend to use.
Now Java reports two screens.
But it displays only on one screen. This is because native-prism-es2
(eglfb) does not have handles to individual screens. It always gets
the handle from prisms native code
(module/graphics/src/main/native-glass/lens/lensport/wrapped_functions.c)
from fucntion util_getNativeDisplayType() which in the case of vivante
always gets screen index 0 { wr_fbGetDisplayByIndex(0) hard coded}

We are stuck at that point.


Awaiting for your inputs!

>
> Dave
>
>
>
>>
>> --
>> best regards,
>> Anthony
>>
>> On 7/15/2014 4:28 PM, Prasant J wrote:
>>>
>>> Hi,
>>>
>>> I'm using javafx (build 1.8.0-b132) using opengl-es2 pipeline.
>>>
>>>
>>> I have found out on my ARM linux board (when using opengl-es2 using
>>> eglfb pipeline) only one screen is supported.
>>>
>>>
>>> I would like to know whether multiple displays is supported at all (on
>>> any platform: windows/mac/linux) when opengl-es2 pipeline is used?
>>>
>>>
>>> Any inputs will be of help.
>>>
>>> -Pj
>>>
>
>
> --
> David Hill<David.Hill at Oracle.com>
> Java Embedded Development
>
> "A man's feet should be planted in his country, but his eyes should survey
> the world."
> -- George Santayana (1863 - 1952)
>


More information about the openjfx-dev mailing list