Opened 15 months ago

Closed 15 months ago

Last modified 15 months ago

#15669 closed defect (not a bug)

module 'xr' has no attribute 'GraphicsBindingOpenGLWin32KHR'

Reported by: colingauvin@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: VR Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-6.9.9-1-default-x86_64-with-glibc2.39
ChimeraX Version: 1.8 (2024-06-10 23:15:52 UTC)
Description
Typed 'xr on' and hit enter

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  

> set bgColor #80808000

> lighting soft

UCSF ChimeraX version: 1.8 (2024-06-10)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> xr true

> lighting simple

Traceback (most recent call last):  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/core/commands/cli.py", line 3213, in run  
result = ci.function(session, **kw_args)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/vive/xr.py", line 80, in vr  
start_vr(session, multishadow_allowed, simplify_graphics)  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/vive/xr.py", line 374, in start_vr  
c.start_vr()  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/vive/xr.py", line 509, in start_vr  
xr.start_session()  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/vive/openxr.py", line 49, in start_session  
self._session = self._create_session() # Connect to headset  
^^^^^^^^^^^^^^^^^^^^^^  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/vive/openxr.py", line 171, in _create_session  
gb = xr.GraphicsBindingOpenGLWin32KHR()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
AttributeError: module 'xr' has no attribute 'GraphicsBindingOpenGLWin32KHR'  
  
AttributeError: module 'xr' has no attribute 'GraphicsBindingOpenGLWin32KHR'  
  
File "/usr/libexec/UCSF-ChimeraX/lib/python3.11/site-
packages/chimerax/vive/openxr.py", line 171, in _create_session  
gb = xr.GraphicsBindingOpenGLWin32KHR()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
  
See log for complete Python traceback.  
  




OpenGL version: 4.6 (Core Profile) Mesa 24.1.3
OpenGL renderer: AMD Radeon 780M (radeonsi, gfx1103_r1, LLVM 18.1.8, DRM 3.57, 6.9.9-1-default)
OpenGL vendor: AMD

Python: 3.11.4
Locale: en_US.UTF-8
Qt version: PyQt6 6.6.1, Qt 6.6.1
Qt runtime version: 6.6.3
Qt platform: xcb

XDG_SESSION_TYPE=wayland
DESKTOP_SESSION=plasmawayland
XDG_SESSION_DESKTOP=KDE
XDG_CURRENT_DESKTOP=KDE
DISPLAY=:1
WAYLAND_DISPLAY=wayland-0
Manufacturer: Framework
Model: Laptop 16 (AMD Ryzen 7040 Series)
OS: openSUSE Tumbleweed 20240716 n/a
Architecture: 64bit ELF
Virtual Machine: none
CPU: 16 AMD Ryzen 7 7840HS w/ Radeon 780M Graphics
Cache Size: 1024 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:            60Gi       4.3Gi        52Gi        74Mi       4.4Gi        56Gi
	Swap:             0B          0B          0B

Graphics:
	03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600] [1002:7480] (rev c1)	
	DeviceName: Realtek	
	Subsystem: Framework Computer Inc. Device [f111:0007]

Installed Packages:
    alabaster: 0.7.16
    appdirs: 1.4.4
    asttokens: 2.4.1
    Babel: 2.15.0
    beautifulsoup4: 4.12.3
    blockdiag: 3.0.0
    blosc2: 2.0.0
    build: 1.2.1
    certifi: 2024.6.2
    cftime: 1.6.4
    charset-normalizer: 3.3.2
    ChimeraX-AddCharge: 1.5.17
    ChimeraX-AddH: 2.2.6
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.5
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.12.7
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.1.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.57.1
    ChimeraX-AtomicLibrary: 14.0.6
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.4.6
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.12.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.2.7
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.4
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.2.4
    ChimeraX-Clipper: 0.23.1
    ChimeraX-clix: 0.1.6
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.6
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.8
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.3
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-Dicom: 1.2.4
    ChimeraX-DiffPlot: 1.0
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.3
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1.1
    ChimeraX-Hbonds: 2.4
    ChimeraX-Help: 1.2.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ISOLDE: 1.8
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-Label: 1.1.10
    ChimeraX-LinuxSupport: 1.0.1
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.1.6
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.2
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.1.3
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.7.1
    ChimeraX-MedicalToolbar: 1.0.3
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.14.1
    ChimeraX-MMTF: 2.2
    ChimeraX-Modeller: 1.5.17
    ChimeraX-ModelPanel: 1.5
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.3
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.13.5
    ChimeraX-PDB: 2.7.5
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.4
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PhenixUI: 1.3.2
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.1
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.4.1
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.2
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.2
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.0.15
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.11.2
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.1.1
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.16.5
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1.2
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.39.1
    ChimeraX-uniprot: 2.3
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.3
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-vrml: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    contourpy: 1.2.1
    cxservices: 1.2.2
    cycler: 0.12.1
    Cython: 3.0.10
    debugpy: 1.8.1
    decorator: 5.1.1
    distro: 1.9.0
    docutils: 0.20.1
    executing: 2.0.1
    filelock: 3.13.4
    fonttools: 4.53.0
    funcparserlib: 2.0.0a0
    glfw: 2.7.0
    grako: 3.16.5
    h5py: 3.11.0
    html2text: 2024.2.26
    idna: 3.7
    ihm: 1.0
    imagecodecs: 2024.1.1
    imagesize: 1.4.1
    ipykernel: 6.29.2
    ipython: 8.21.0
    ipywidgets: 8.1.3
    jedi: 0.19.1
    jinja2: 3.1.4
    jupyter-client: 8.6.0
    jupyter-core: 5.7.2
    jupyterlab-widgets: 3.0.11
    kiwisolver: 1.4.5
    line-profiler: 4.1.2
    lxml: 5.2.1
    lz4: 4.3.3
    MarkupSafe: 2.1.5
    matplotlib: 3.8.4
    matplotlib-inline: 0.1.7
    msgpack: 1.0.8
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.10.0
    numpy: 1.26.4
    openvr: 1.26.701
    packaging: 24.1
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pexpect: 4.9.0
    pillow: 10.3.0
    pip: 24.0
    pkginfo: 1.10.0
    platformdirs: 4.2.2
    prompt-toolkit: 3.0.47
    psutil: 5.9.8
    ptyprocess: 0.7.0
    pure-eval: 0.2.2
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    pygments: 2.17.2
    pynmrstar: 3.3.4
    pynrrd: 1.0.0
    PyOpenGL: 3.1.7
    PyOpenGL-accelerate: 3.1.7
    pyopenxr: 1.0.3401
    pyparsing: 3.1.2
    pyproject-hooks: 1.1.0
    PyQt6-commercial: 6.6.1
    PyQt6-Qt6: 6.6.3
    PyQt6-sip: 13.6.0
    PyQt6-WebEngine-commercial: 6.6.0
    PyQt6-WebEngine-Qt6: 6.6.3
    python-dateutil: 2.9.0.post0
    pytz: 2024.1
    pyzmq: 26.0.3
    qtconsole: 5.5.1
    QtPy: 2.4.1
    RandomWords: 0.4.0
    requests: 2.31.0
    scipy: 1.13.0
    setuptools: 69.5.1
    sfftk-rw: 0.8.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.5
    sphinx: 7.2.6
    sphinx-autodoc-typehints: 2.0.1
    sphinxcontrib-applehelp: 1.0.8
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.6
    sphinxcontrib-htmlhelp: 2.0.5
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.7
    sphinxcontrib-serializinghtml: 1.1.10
    stack-data: 0.6.3
    superqt: 0.6.3
    tables: 3.8.0
    tcia-utils: 1.5.1
    tifffile: 2024.1.30
    tinyarray: 1.2.4
    tornado: 6.4.1
    traitlets: 5.14.2
    typing-extensions: 4.12.2
    tzdata: 2024.1
    urllib3: 2.2.1
    wcwidth: 0.2.13
    webcolors: 1.13
    wheel: 0.43.0
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.11

Change History (7)

comment:1 by pett, 15 months ago

Component: UnassignedVR
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionmodule 'xr' has no attribute 'GraphicsBindingOpenGLWin32KHR'

Reported by Colin Gauvin

comment:2 by colingauvin@…, 15 months ago

Hello,

SteamVR was not running. After starting it, the error goes away. This
report can be closed.

Best Regards,

Colin Gauvin

On 7/25/24 11:15, ChimeraX wrote:
>
>
>
>

comment:3 by Tom Goddard, 15 months ago

I have never tried the ChimeraX xr command on Linux, only on Windows. I would not expect it to work on Linux since the function that is giving the error

xr.GraphicsBindingOpenGLWin32KHR()

is specific to Windows (that is what the Win32 refers to in the name). And there are other Windows calls used to get an OpenGL context for the OpenXR rendering. Are you telling me this actually worked on Linux after starting SteamVR?

While it should be possible to add to the ChimeraX OpenXR code to support Linux I never had time to attempt that. Already the VR users on Windows which is where 99% of the PC VR market is hardly ever used, so it is hard for me to support Linux VR.

comment:4 by colingauvin@…, 15 months ago

Hi Tom,

The short answer is I don't know.

The long answer is I need to reply to your reply about the "Xreality"
glasses, but I'm still testing out all possible avenues. One pair of
glasses I have (Xreal Air) have an OpenXR driver built into Monado,
which detects them perfectly fine, and I can use them as XR glasses.
However, that's only with Monado as the OpenXR provider. If I switch the
provider to SteamVR, it can't detect the glasses.

Since ChimeraX only seems to be able to do XR through SteamVR, not
Monado, I don't know if they will work with OpenXR. I tried just 'xr on'
and got this error. Then I realized SteamVR needed to be open, so I
tried opening SteamVR and 'xr on' then gave the message about "VR
headset not found, using SteamVR/OpenXR" etc. This is expected because
SteamVR does not detect my glasses.

Historically, the Valve Index has worked with ChimeraX VR mode on Linux,
so if I can get SteamVR to detect my glasses, I'm wondering if VR mode
will work. There is a custom driver for the glasses to let SteamVR
detect them/use them, so if I can get that working, I will let you know
how it fares in ChimeraX.

P.S. - thanks for all the work you do, especially on the 3D rendering
side. Stereo is dying tool but I can't get by without it.

Best Regards,

Colin Gauvin

On 7/25/24 14:58, ChimeraX wrote:
>
>
>
>
>

comment:5 by Tom Goddard, 15 months ago

Resolution: not a bug
Status: assignedclosed

Hi Colin,

The ChimeraX xr command uses OpenXR which in theory works with any OpenXR implementation. I have used it with Quest and the Oculus Windows PC app without SteamVR, and I have also used it with SteamVR, so at least those two OpenXR implementations work. But the OpenXR code requires specifying an OpenGL context and that is operating system dependent and I only added support for Windows.

So in summary I would expect the ChimeraX xr command to work with any compliant OpenXR library on Windows, but not work on Linux.

Tom

comment:6 by colingauvin@…, 15 months ago

Thanks - that clarifies things. That's too bad since there's no XR
driver for the glasses on Windows. Seems like getting SteamVR working on
Linux is probably the only real shot.

Best Regards,

Colin Gauvin

On 7/25/24 15:23, ChimeraX wrote:
>
>
>
>
>
>
>

comment:7 by Tom Goddard, 15 months ago

I wrote the ChimeraX VR and OpenXR code and I have only tested it on Windows for the past 5 years. Before that I had SteamVR working on Linux and Mac but since there is almost no support for VR on those operating systems I gave that up. But since that time SteamVR officially dropped support for Mac (that never really existed) and officially supported Linux. But I have not tried whether ChimeraX VR works on Linux with SteamVR. OpenXR could also work with Linux but as I said I did not add the custom Linux code to ChimeraX OpenXR to allow that.

VR and XR hardware is so bleeding edge it barely works on the platforms that the venders are targeting, so to try it on some other platform like Linux is insane. The question is what PC support does XReality offer? Maybe the answer is "none", and that is why you are trying these desperate measures.

Note: See TracTickets for help on using tickets.