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

David Hill David.Hill at Oracle.com
Wed Jul 16 14:31:11 UTC 2014


On 7/16/14, 4:16 AM, Prasant J wrote:
> @Dave:
> We would love to collaborate and work towards solving this problem.
> With guidance from your team I can extend help. Please suggest me next
> steps!
Excellent :-)

There are several ways/levels that you can collaborate and work towards solving this problem.

First would be to have a jira account so that you can follow and comment on:
    https://javafx-jira.kenai.com/browse/RT-37952

The simplest level will be to provide suggestions & technical details & try changes to OpenJFX.

The next level would be working with me or one of the others on the team to design and then implement the changes needed, and of course help test them along the way. This would require an "Oracle Contributor Agreement" before we could take any changes from you.

The "Oracle Contributor Agreement" is a standard release for any of Oracle's OpenSource projects, like OpenJDK and OpenJFX. The details can be found here: http://www.oracle.com/technetwork/community/oca-486395.html and includes the 1800 people currently enrolled.

Dave
>
>
> On Wed, Jul 16, 2014 at 12:02 PM, Prasant J<pj0585 at gmail.com>  wrote:
>> 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)
>>>


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