Igalia / wolvic

A fast and secure browser for standalone virtual-reality and augmented-reality headsets.
https://wolvic.org
Mozilla Public License 2.0
801 stars 101 forks source link

VR mode not working in Pico 4 #600

Closed hamzabadshah1 closed 1 year ago

hamzabadshah1 commented 1 year ago

Configuration

Wolvic version: latest version Wolvic build ID: latest version

Hardware: Pico 4

Steps to Reproduce

  1. Added openXR sdk inside third party folder
  2. Generate apk and apk successfully generated and installed
  3. Everything is working fine, when opened a webgl website, then VR function is not clickable and working. Tried with many different websites, VR Full screen mode is not working.
trixaren commented 1 year ago

By that we mean the Immersion itself is not working

hamzabadshah1 commented 1 year ago

Correct

svillar commented 1 year ago

What gecko version are you using, the one mentioned in the repo?

Have you tried the packages we distribute? That's working fine in there, so it must be some issue on your side when building the packages.

hamzabadshah1 commented 1 year ago

Yes, I am using picoxr arm 64 debug Previously it wasn't working, then I added openXR Sdk in third_party folder, then the app works.

App is working fine with everything except immersive VR.

hamzabadshah1 commented 1 year ago

@svillar We have created a project and added open-XR sdk as mentioned in Wolvic official GitHub (third_party/picoxr Pico OpenXR Mobile SDK (should contain include and libs folders, among other things that are not necessary for Wolvic)

Link to sdk is : https://developer-global.pico-interactive.com/sdk?deviceId=1&platformId=3&itemId=11 In project structure : /third_party/picoxr ( containing include and libs folders ) Build variant : picoxrArm64WorldgeckoGenericdebug ABI : arm64-v8a

Result : Application is running successfully, but immersive VR is not functional.

svillar commented 1 year ago

@svillar We have created a project and added open-XR sdk as mentioned in Wolvic official GitHub (third_party/picoxr Pico OpenXR Mobile SDK (should contain include and libs folders, among other things that are not necessary for Wolvic)

Link to sdk is : https://developer-global.pico-interactive.com/sdk?deviceId=1&platformId=3&itemId=11 In project structure : /third_party/picoxr ( containing include and libs folders ) Build variant : picoxrArm64WorldgeckoGenericdebug ABI : arm64-v8a

Result : Application is running successfully, but immersive VR is not functional.

Right, but my question still stands. Check the Setup instructions. The first two paragraphs were it describes the gecko build to use.

Then after that you have to also do the steps described in local development in order to be able to use the locally build gecko version.

hamzabadshah1 commented 1 year ago

@svillar I am using geckoview from Mozilla-central. While I added that inside local.properties, I got this error: Collecting glean-sdk==52.4.2 Using cached glean_sdk-52.4.2-cp36-abi3-macosx_10_7_x86_64.whl (913 kB) Collecting semver>=2.13.0 Using cached semver-3.0.0-py3-none-any.whl (17 kB) Collecting glean-parser~=7.1 Using cached glean_parser-7.1.0-py3-none-any.whl (93 kB) Requirement already satisfied: appdirs>=1.4 in ./third_party/python/appdirs (from glean-parser~=7.1->glean-sdk==52.4.2) (1.4.4) Requirement already satisfied: Click>=7 in ./third_party/python/click (from glean-parser~=7.1->glean-sdk==52.4.2) (7.1.2) Requirement already satisfied: diskcache>=4 in ./third_party/python/diskcache (from glean-parser~=7.1->glean-sdk==52.4.2) (4.1.0) Requirement already satisfied: Jinja2>=2.10.1 in ./third_party/python/Jinja2 (from glean-parser~=7.1->glean-sdk==52.4.2) (2.11.3) Requirement already satisfied: MarkupSafe<=2.0.1,

svillar commented 1 year ago

@svillar I am using geckoview from Mozilla-central. While I added that inside local.properties, I got this error: Collecting glean-sdk==52.4.2 Using cached glean_sdk-52.4.2-cp36-abi3-macosx_10_7_x86_64.whl (913 kB) Collecting semver>=2.13.0 Using cached semver-3.0.0-py3-none-any.whl (17 kB) Collecting glean-parser~=7.1 Using cached glean_parser-7.1.0-py3-none-any.whl (93 kB) Requirement already satisfied: appdirs>=1.4 in ./third_party/python/appdirs (from glean-parser~=7.1->glean-sdk==52.4.2) (1.4.4) Requirement already satisfied: Click>=7 in ./third_party/python/click (from glean-parser~=7.1->glean-sdk==52.4.2) (7.1.2) Requirement already satisfied: diskcache>=4 in ./third_party/python/diskcache (from glean-parser~=7.1->glean-sdk==52.4.2) (4.1.0) Requirement already satisfied: Jinja2>=2.10.1 in ./third_party/python/Jinja2 (from glean-parser~=7.1->glean-sdk==52.4.2) (2.11.3) Requirement already satisfied: MarkupSafe<=2.0.1,

I don't see any error there.

When you say "geckoview from Mozilla-central" I guess you've downloaded gecko from the official mozilla repos. In that case it won't work. As the instructions metion you have to use this repo instead.

hamzabadshah1 commented 1 year ago

Hi @svillar Thanks for mentioning this repo for us. I have tried adding this as well in local.properties but it doesn't work for us. What we see so far in the project is this , gecko view is already adding by default in the project automatically. See here : In build.gradle file.

    // gecko
    def branch = "nightly" // "nightly" or "beta"
    geckoImplementation deps.gecko_view."${branch}_x86_64"
    geckoImplementation deps.gecko_view."${branch}_arm64"
    configurations.all {
         resolutionStrategy.capabilitiesResolution.withCapability('org.mozilla.geckoview:geckoview') {
            def abi = getName().toLowerCase().contains('x86_64') ? 'x86_64' : 'arm64'
            def candidate = "geckoview-${branch}-${abi}"
            select(candidates.find { it.id.module.contains(candidate) })
        }
    }

And it is compiling correctly. Also, in versions.gradle this is already added :

def addRepos(RepositoryHandler handler) { handler.google() handler.jcenter() handler.maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } handler.maven { url 'https://maven.mozilla.org/maven2' } handler.maven { url 'https://download.servo.org/nightly/maven' } handler.maven { url 'https://developer.huawei.com/repo/' } }

So, gecko view is working fine here, and at this point we don't need to add it separately in local.properties, correct? Second thing is, the whole application is working fine with everything, just the "IMMERSION" itself is not working in the application. Can you help us specifically where it went wrong in immersion?

Thanks a lot!

svillar commented 1 year ago

Hi @svillar Thanks for mentioning this repo for us. I have tried adding this as well in local.properties but it doesn't work for us. What we see so far in the project is this , gecko view is already adding by default in the project automatically. See here : In build.gradle file.

    // gecko
    def branch = "nightly" // "nightly" or "beta"
    geckoImplementation deps.gecko_view."${branch}_x86_64"
    geckoImplementation deps.gecko_view."${branch}_arm64"
    configurations.all {
         resolutionStrategy.capabilitiesResolution.withCapability('org.mozilla.geckoview:geckoview') {
            def abi = getName().toLowerCase().contains('x86_64') ? 'x86_64' : 'arm64'
            def candidate = "geckoview-${branch}-${abi}"
            select(candidates.find { it.id.module.contains(candidate) })
        }
    }

GeckoView from maven repos is used by default indeed. However if you add

dependencySubstitutions.geckoviewTopsrcdir=PATH_TO_GECKO_DEV_DIR
dependencySubstitutions.geckoviewTopobjdir=PATH_TO_GECKO_DEV_DIR//obj-aarch64-unknown-linux-android

to the local.properties it will use the locally compiled ones.

So, gecko view is working fine here, and at this point we don't need to add it separately in local.properties, correct? Second thing is, the whole application is working fine with everything, just the "IMMERSION" itself is not working in the application. Can you help us specifically where it went wrong in immersion?

Yes you need to use the locally compiled one from the repo I mentioned, otherwise WebXR won't work. Wolvic and Gecko use a versioned protocol to talk to each other. Wolvic and our gecko-dev branch use a higher protocol than the one from maven repositories, that's why WebXR (immersive experiences) won't work unless you build Gecko by yourselves (again using our specific branch).

hamzabadshah1 commented 1 year ago

Here is a comparison of how it shows normally on left side and how its working in our app on right side. official_vs_home_build_apk

hamzabadshah1 commented 1 year ago

hi @svillar I can build Mozilla-unified using ( ./mach bootstrap and ./mach build) I am able to build Mozilla-central using ( ./mach bootstrap and ./mach build)

But when I tried to build with the repo you mentioned, I encountered a lot of errors and it doesn't work. How it can be solved? Mostly errors are in xpidl and file_generate.py

svillar commented 1 year ago

hi @svillar I can build Mozilla-unified using ( ./mach bootstrap and ./mach build) I am able to build Mozilla-central using ( ./mach bootstrap and ./mach build)

But when I tried to build with the repo you mentioned, I encountered a lot of errors and it doesn't work. How it can be solved? Mostly errors are in xpidl and file_generate.py

That's because of the python version you're using. I'll upload a patch soon to support newer versions of python

hamzabadshah1 commented 1 year ago

So which version I should use to compile it now? I am using Python 3.11.3 currently

svillar commented 1 year ago

So which version I should use to compile it now? I am using Python 3.11.3 currently

I pushed a patch that allows it to build using your version

hamzabadshah1 commented 1 year ago

OK great, let me try now

hamzabadshah1 commented 1 year ago

hi @svillar I tried it now, and it almost compiles with at least completing 90% tasks. It just stuck at one point.

ld.lld: error: unable to find library -lunwind 51:29.70 clang-14: error: linker command failed with exit code 1 (use -v to see invocation) 51:29.70
51:29.71 error: could not compile http3server due to previous error

If this is solved, I think we will be good. :)

thank you!

svillar commented 1 year ago

hi @hamzabadshah1 I don't want to sound rude, but our team is small and we have tons of things to deliver, so unfortunately I don't have much more time to devote to this. I tried to help for some time but cannot spend more. If you need profesional services around Wolvic you can always contact Igalia.

HowQuitVim commented 1 year ago

hi @svillar I tried it now, and it almost compiles with at least completing 90% tasks. It just stuck at one point.

ld.lld: error: unable to find library -lunwind 51:29.70 clang-14: error: linker command failed with exit code 1 (use -v to see invocation) 51:29.70 51:29.71 error: could not compile http3server due to previous error

If this is solved, I think we will be good. :)

thank you!

i got the same error too my friend,do you resolve it?

HowQuitVim commented 1 year ago

@hamzabadshah1
edit the moz.build like this: image

anyway ,it works for me