NVidia 3D Vision on Linux

This page contains some notes and status about the NVidia Vision 3D on Linux. To put it simple the problem is that the monitor is receiving frame sequential images, and without a Quadro the Emitter is synchronised via USB with some visible ghosting effects. The main point is that it is needed a quite high-end NVidia Card because DIN has been dropped in low-end Quadro.

Why do we need it? Because of the setup in the context of the FP7 ReMeDi project in which we use 3D Display with Haptic interaction for Remote Ultrasonography and Palpation [IROS15 Paper]

The key issue is the support of Quad Buffering for non-Quadro devices and the Driver automatic interface to the USB IR Emitter. Windows supports this since 314.07, while Linux is still locked.

NVidia forum discussions: 2017 (375 regresses over 367), here and previously here.


Windows API

Under Windows the API stays in nvstereo.h of the SDK and as seen from one of the project in the resources the API controls the glasses directly (when using USB), and introduced by NVidia (PDF).

The stereo Direct3D API works by creating a side-by-side 3D with the addition of one row at the end with NVSTEREOIMAGEHEADER. This structure contains signature, width, height, bpp and flags.

The OpenGL-Direct3D technique is also used by H3DAPI under Windows


Recent Programs with Support for NVidia Vision

  • CloudCompare: OpenGL Quad Buffer (GL_STEREO)
  • H3DAPI: OpenGL-D3D bridge with special row
  • PyMol
  • Coot
  • Chimera

SOMA – An OpenMP Toolchain For Multicore Partitioning

The SOMA (Static OpenMP multicore Allocator) framework has the purpose of analyzing OpenMP applications thanks to the CLang compiler of LLVM and then create static schedules via multicore partitioning. It has has been presented at the ACM SAC 2016 conference in Pisa. SOMA is research tool developed with PhD students Brizzi, Dabisias, and with Prof. Buttazzo of the RETIS Laboratory,

SOMA Structure

The source code has not been released yet due to the need of porting to recent version of CLang, but I have posted some code for OpenMP pragma and structure extraction for CLang.

This is the reference to the this work

Ruffaldi E., Dabisias G., Brizzi F. & Buttazzo G. (2016). SOMA: An OpenMP Toolchain For Multicore Partitioning. In 31st ACM/SIGAPP Symposium on Applied Computing . ACM. (PDF,Slides) DOI: 10.1145/2851613.2851720

BibTeX citation:

 abstract = {Advancements in multicore platforms enabled the develop- ment of complex embedded systems incorporating algorithms that were typically executed on high-performance worksta- tions. Although many solutions exist today for supporting software development on multicore platforms, they rarely take timing constraints into account. This work presents a toolchain aimed at guaranteeing real-time constraints into parallel OpenMP code. This toolchain, called SOMA uses code profiling for estimating the multicore requirements and produces a static schedule for a set of parallel tasks. The toolchain is implemented using the source-to-source transla- tion capabilities of CLang. Performance results are provided on a computer vision application},
 author = {Ruffaldi, Emanuele and Dabisias, Giacomo and Brizzi, Filippo and Buttazzo, Giorgio},
 booktitle = {31st ACM/SIGAPP Symposium on Applied Computing},
 howpresented = {oral},
 keyword = {multicore,OpenMP,pdf:2016_C_RuffaldiMP},
 link = {http://},
 doi = {10.1145/2851613.2851720},
 publisher = {ACM},
 title = {SOMA: An OpenMP Toolchain For Multicore Partitioning},
 year = {2016}