Giter VIP home page Giter VIP logo

datoviz / datoviz Goto Github PK

View Code? Open in Web Editor NEW
493.0 23.0 25.0 5.34 MB

⚡ High-performance GPU interactive scientific data visualization with Vulkan

Home Page: https://datoviz.org

License: MIT License

CMake 5.29% Julia 0.01% Python 4.63% Rust 0.04% C 76.26% C++ 3.22% Shell 0.57% GLSL 3.86% Batchfile 0.06% Dockerfile 0.11% Cython 5.94%
visualization graphics data-visualization scientific-visualization gpu vulkan c cpp python scientific-computing

datoviz's Introduction

Datoviz: GPU interactive scientific data visualization with Vulkan

Datoviz is an open-source high-performance interactive scientific data visualization library leveraging the graphics processing unit (GPU) for speed, visual quality, and scalability. It supports both 2D and 3D rendering, as well as minimal graphical user interfaces (using the Dear ImGUI library).

Written in C/C++, Datoviz has been designed from the ground up for performance. It provides native Python bindings (based on Cython). Bindings to other languages could be developed thanks to community efforts (Julia, R, MATLAB, Rust, C#, and so on). Datoviz uses the Vulkan graphics API created by the Khronos consortium, successor of OpenGL. Supporting other modern graphics API, such as WebGPU, would constitute interesting developments.

Datoviz is currently being developed mostly by Cyrille Rossant at the International Brain Laboratory, a consortium of neuroscience research labs around the world.

!!! note Datoviz is at an early stage of development and the API is not yet stabilized. Use at your own risks, but feel free to share your feedback, suggestions, use-cases, feature requests on GitHub.

Screenshots

Credits: mouse brain volume: Allen SDK. France: Natural Earth. Molecule: Crystal structure of S. pyogenes Cas9 from PDB (thanks to Eric for conversion to OBJ mesh). Earth: Pixabay. Raster plot: IBL. 3D human brain: Anneke Alkemade et al. 2020, thanks to Pierre-Louis Bazin and Julia Huntenburg.

Code example

import numpy as np
from datoviz import canvas, run, colormap

panel = canvas(show_fps=True).scene().panel()
visual = panel.visual('marker')

N = 10_000
pos = np.random.randn(N, 3)
ms = np.random.uniform(low=2, high=35, size=N)
color = colormap(np.random.rand(N), cmap='viridis')

visual.data('pos', pos)
visual.data('ms', ms)
visual.data('color', color)

run()

Documentation

The documentation is divided into:

Preliminary performance results

  • scatter plot with 10M points: 250 FPS (point visual)
  • high-resolution 3D mesh with 10M triangles and 5M vertices: 400 FPS
  • 1000 signals with 30K points each (30M vertices): 200 FPS

GPU: 2019 NVIDIA GeForce RTX 2070 SUPER. Window size: 1024x768.

Features

Current features

  • High-quality antialiased 2D visuals: markers, paths, lines (contributions by Nicolas P. Rougier, code from Glumpy)
  • 3D visuals: meshes
  • Mixing 2D and 3D plots seamlessly in the same window
  • ~150 colormaps included (from matplotlib, colorcet, MATLAB)
  • High-level interactivity: pan & zoom, mouse arcball, first-person cameras
  • Axes: ticks, grids, labels
  • Subplots organized in a grid layout
  • GUIs integrated via the Dear ImGUI C++ library (Qt or other backends not required)
  • Custom visuals, with custom shaders and/or custom data transformations

Experimental/work-in-progress features

  • Multiple canvases
  • Builtin creencasts and video recording with ffmpeg (optional dependency)
  • Offscreen rendering and CPU emulation via swiftshader
  • Mouse picking
  • IPython event-loop integration
  • DPI-aware canvases
  • Continuous integration and continuous building
  • Panel linking, shared axes

Longer-term features

  • More visuals: arrows, triangulations, planar straight-line graphs (PSLG), histograms, areas, graphs, fake 3D spheres...
  • Further data transformations: logarithmic, polar, basic Earth coordinate systems for geographical data
  • Fixed aspect ratio
  • Colorbars
  • 3D axes
  • Deep zooming
  • CUDA-Vulkan interoperability example
  • Better support of multiple GPUs
  • Qt integration
  • Bindings in other languages (Julia, R, MATLAB, Rust...)
  • Automated benchmarkes
  • Distributed architecture (integration in the web browser, Jupyter...)

History and roadmap

  • late 2019: first experiments with using Vulkan for scientific visualization
  • 2020: multiple cycles of prototyping and refactoring
  • 17 Feb 2021: first public experimental release (manual compilation required)
  • 31 May 2021: first experimental release v0.1.0-alpha.0 with precompiled pip wheels for Linux, Windows, macOS
  • 20 Oct 2021: new experimental release v0.1.0-alpha.1 with bug fixes and minor improvements
  • early 2022?: final v0.1.0 release
  • late 2022?: redesigned internal architecture for multithreading and distributed environments (still a work-in-progress)

Credits and related projects

Datoviz borrows heavily ideas and code from other projects.

VisPy

VisPy is a Python scientific visualization library created in 2013 by Luke Campagnola (developer of pyqtgraph), Almar Klein (developer of visvis), Nicolas Rougier (developer of glumpy), and myself (Cyrille Rossant, developer of galry). We joined forces to create a single library unifying all of our approaches. There is today a community of users and projects based on VisPy (napari). David Hoese and some of the original VisPy developers are currently maintaining the library. The current version of VisPy suffers from the limitations of OpenGL, a 30-year-old technology.

In 2020, VisPy received a 1-year funding from the Chan Zuckerberg Initiative (CZI) to improve the documentation and knowledge base.

In 2021, VisPy received another CZI grant for building VisPy 2.0, a completely redesigned library leveraging newer GPU technology such as Vulkan and WebGPU. The current strategy is to rebuild VisPy on top of Datoviz, pygfx (a WebGPU-based library developed by Almar Klein), and other backends.

Glumpy

Glumpy, developed by Nicolas Rougier, provides efficient implementations of high-quality 2D visuals on the GPU, using algorithms from the antigrain geometry library. The GPU code of most 2D visuals in Datoviz comes directly from Glumpy.

Dependencies and algorithms

  • LunarG Vulkan SDK (mandatory)
  • GLFW (mandatory) (support for alternative window backends will be considered)
  • ffmpeg (optional), for making live screencasts
  • libpng (optional), for making PNG screenshots
  • glslang (optional), for compiling GLSL shaders to SPIR-V on the fly
  • earcut (included), developed by Mapbox, for polygon triangulations
  • triangle (included), developed by Jonathan Richard Shewchuk, for Delaunay triangulations
  • extended Wilkinson algorithm (included) for tick placement
  • Dear ImGUI (included)
  • antigrain geometry (GLSL implementation included)
  • msdfgen: multi-channel signed distance field (to do: bundle as submodule?)
  • freetype (optional)

Related projects

Funding

Datoviz is being developed by Cyrille Rossant at the International Brain Laboratory, with funding from the Simons Foundation, the Flatiron Institute, the Wellcome Trust, INCF. The logo was graciously created by Chiara Zini.

Glossary:

*[Vulkan]: Low-level graphics API created by Khronos, and successor of OpenGL *[shaders]: code written in GLSL and executed on the GPU to customize the graphics pipeline *[GLSL]: OpenGL shading language, the C-like language used to write shaders

datoviz's People

Contributors

ajknapp avatar hmaarrfk avatar mschart avatar nbonacchi avatar oliche avatar pauljurczak avatar rossant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

datoviz's Issues

Error running Datoviz-test: python -c "import datoviz; datoviz.demo()"

Datoviz - Installation guide for Windows: Running Datoviz test
python -c "import datoviz; datoviz.demo()"
gets following error:

13:40:01.092 W C:\Users\cross\Documents\GitHub\datoviz\src\ticks.h:0695: automatic tick positioning on interval [-inf, 3.696173] failed (found [-inf-3.696173] with step inf
Assertion failed: (N > 0), file C:\Users\cross\Documents\GitHub\datoviz\src\axes.h, line 141

Fifo capacity exceeded

Unsure if this is a bug or an issue with my code but I keep getting the error
reallocating buffer 2 to 512.0 MBreallocating buffer 2 to 1.0 GBAssertion failed: (fifo->capacity <= 256), file C:\Users\user\project\datoviz\src\fifo.c, line 44
I tried looking around the documentation and in the source code but i couldnt figure out why my code would be causing errors: (this is written in rust using bindings)

       let app: *mut DvzApp = dvz_app(DvzBackend_DVZ_BACKEND_GLFW);
        let gpu: *mut DvzGpu = dvz_gpu_best(app);
        let canvas: *mut DvzCanvas = dvz_canvas(gpu, 1280, 1024, 0);
        dvz_canvas_clear_color(canvas, 1.0, 1.0, 1.0);
        let scene: *mut DvzScene = dvz_scene(canvas, 1, 1);
        let mut panel = dvz_scene_panel(scene, 0, 0, DvzControllerType_DVZ_CONTROLLER_AXES_2D, 0);
        let waveforms = dvz_scene_visual(panel, DvzVisualType_DVZ_VISUAL_PATH, 0);
        let waveforms2 = dvz_scene_visual(panel, DvzVisualType_DVZ_VISUAL_PATH, 0);
        let mut pos : Vec<dvec3> = Default::default();
        let mut pos2 : Vec<dvec3> = Default::default();
        let mut color : cvec4 = [0, 0, 255, 255];
        let mut color2 : cvec4 = [255, 0, 0, 255];
        let colorc : Vec<cvec4> = vec![color, color2];
        let mut count: usize = 0;
        for i32 in &WAVEFORM {
            if count >= 2000020 {
                break;
            }
            if count % 2 == 0 {
                pos.push([count.clone() as f64 / 88200 as f64 / 2 as f64, *i32 as f64, 0.0 as f64]);
            } else {
                pos2.push([count.clone() as f64 / 88200 as f64 / 2 as f64, *i32 as f64 + 20000 as f64, 0.0 as f64]);
            }
            count += 1;
        }
        dvz_visual_data(
            waveforms2,
            DvzPropType_DVZ_PROP_TOPOLOGY,
            0,
            1000000 as u32,
            0 as *const c_void,
        );
        dvz_visual_data(
            waveforms,
            DvzPropType_DVZ_PROP_TOPOLOGY,
            0,
            1000000 as u32,
            0 as *const c_void,
        );
        dvz_visual_data(
            waveforms,
            DvzPropType_DVZ_PROP_POS,
            0,
            1000000 as u32,
            pos[..1000000].as_ptr() as *const c_void,
        );

        dvz_visual_data(
            waveforms,
            DvzPropType_DVZ_PROP_COLOR,
            0,
            1 as u32,
            color.as_ptr() as *const c_void,
        );

        dvz_visual_data(
            waveforms2,
            DvzPropType_DVZ_PROP_POS,
            0,
            1000000 as u32,
            pos2[..1000000].as_ptr() as *const c_void,
        );

        dvz_visual_data(
            waveforms,
            DvzPropType_DVZ_PROP_COLOR,
            0,
            1 as u32,
            color2.as_ptr() as *const c_void,
        );
        dvz_app_run(app, 0);

        dvz_app_destroy(app);

Error running example

Win 10, Python 3.8 running in a fresh venv with numpy and datoviz. Pip installed the windows wheels of v.0.1.0. Using PyCharm as IDE.

Running the following example code from the Datoviz website, resulted in an error.

import numpy as np
from datoviz import canvas, run, colormap

panel = canvas(show_fps=True).scene().panel()
visual = panel.visual('marker')

N = 10_000
pos = np.random.randn(N, 3)
ms = np.random.uniform(low=2, high=35, size=N)
color = colormap(np.random.rand(N), cmap='viridis')

visual.data('pos', pos)
visual.data('ms', ms)
visual.data('color', color)

run()

Error shown.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/build

Traceback (most recent call last):
  File "C:\Users\USER1\PycharmProjects\DatoViz_1\venv\lib\site-packages\datoviz\__init__.py", line 14, in <module>
    from .pydatoviz import App, colormap, demo
ImportError: DLL load failed while importing pydatoviz: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/USER1/PycharmProjects/DatoViz_1/main.py", line 2, in <module>
    from datoviz import canvas, run, colormap
  File "C:\Users\USER1\PycharmProjects\DatoViz_1\venv\lib\site-packages\datoviz\__init__.py", line 16, in <module>
    raise ImportError(
ImportError: Unable to load the shared library, make sure to run in your terminal:
`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/build`

Process finished with exit code 1

Support for aggregations

This looks like a cool project! I'm aware of vispy, pyqtgraph and other precursors, I still keep wondering if there will be support for data aggregation. What I mean by that is that instead of all points in a data series, you plot a band with summaries like average, min/max and variance. This greatly reduces the amount of polygons required to draw. Say for example a 1 minute view of a 10 kHz signal would take 600000 points. But one can reduce the amount of data required to draw by plotting a min/max band and an average line for this data. When zooming in and out, one would switch between the two modes.

My own implementation of this idea lives here: https://github.com/windelbouwman/lognplot

Maybe this could be of some use. I use this, and this feature is especially useful for live streaming of data.

can't run example app_triangle (wrong ELF class: ELFCLASS32, Could not find color_texture.img.)

(base) mic@mic-tux:~/visky$ ./manage.sh run app_triangle
ln: failed to create symbolic link 'data/data': File exists
-- Found Vulkan
-- Found FFMPEG
-- Found VNCSERVER
-- Found Qt5 >= 5.12
-- Found Freetype
Compile example /home/mic/visky/examples/app_triangle.c
Compile tests
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mic/visky/build
ninja: no work to do.
14:55:44 E vkutils.h:0093: validation layer: /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32
14:55:44 E vkutils.h:0093: validation layer: /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
14:55:44 E common.c:0181: Could not find /home/mic/visky/data/textures/color_texture.img.
./manage.sh: line 80: 27941 Segmentation fault (core dumped) ./build/$2

Not compiling library on Windows 10 with included cglm version

When I try to build the project with the included cglm in /external on Windows 10 using Winlibs it throws a bunch of warnings and doesn't compile
replacing the included cglm version with the current version on github allowed it to compile (still throws some warnings though)

With old/current

[  1%] Generating spirv/custom_point.frag.spv
[  2%] Generating spirv/custom_point.vert.spv
[  3%] Generating spirv/mandelbrot.frag.spv
[  3%] Generating spirv/mandelbrot.vert.spv
[  4%] Generating spirv/graphics_basic.frag.spv
[  5%] Generating spirv/graphics_basic.vert.spv
[  6%] Generating spirv/graphics_image.frag.spv
[  7%] Generating spirv/graphics_image.vert.spv
[  7%] Generating spirv/graphics_image_cmap.frag.spv
[  8%] Generating spirv/graphics_image_cmap.vert.spv
Scanning dependencies of target cglm
[  9%] Building C object external/cglm/CMakeFiles/cglm.dir/src/euler.c.obj
[  9%] Generating spirv/graphics_marker.frag.spv
[ 12%] Building C object external/cglm/CMakeFiles/cglm.dir/src/affine.c.obj
[ 12%] Generating spirv/graphics_marker.vert.spv
[ 13%] Building C object external/cglm/CMakeFiles/cglm.dir/src/io.c.obj
[ 14%] Generating spirv/graphics_mesh.frag.spv
[ 15%] Building C object external/cglm/CMakeFiles/cglm.dir/src/quat.c.obj
[ 15%] Generating spirv/graphics_mesh.vert.spv
[ 16%] Building C object external/cglm/CMakeFiles/cglm.dir/src/cam.c.obj
[ 17%] Generating spirv/graphics_path.frag.spv
[ 18%] Generating spirv/graphics_path.vert.spv
[ 18%] Building C object external/cglm/CMakeFiles/cglm.dir/src/vec2.c.obj
Scanning dependencies of target glfw
[ 19%] Building C object external/cglm/CMakeFiles/cglm.dir/src/vec3.c.obj
[ 21%] Generating spirv/graphics_point.frag.spv
[ 21%] Building C object external/cglm/CMakeFiles/cglm.dir/src/vec4.c.obj
[ 21%] Generating spirv/graphics_segment.frag.spv
[ 23%] Generating spirv/graphics_point.vert.spv
[ 23%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/context.c.obj
[ 24%] Generating spirv/graphics_segment.vert.spv
C:\Users\name\CLionProjects\rust-bindings\external\cglm\src\vec4.c:127:25: error: argument 1 of type 'float[4]' with mismatched bound [-Werror=array-parameter=]
  127 | glmc_vec4_scale_as(vec4 v, float s, vec4 dest) {
      |                    ~~~~~^
In file included from c:\users\name\clionprojects\rust-bindings\external\cglm\include\cglm\call.h:17,
                 from C:\Users\name\CLionProjects\rust-bindings\external\cglm\src\vec4.c:9:
c:\users\name\clionprojects\rust-bindings\external\cglm\include\cglm\call/vec4.h:102:25: note: previously declared as 'float[3]'
  102 | glmc_vec4_scale_as(vec3 v, float s, vec3 dest);
      |                    ~~~~~^
C:\Users\name\CLionProjects\rust-bindings\external\cglm\src\vec4.c:127:42: error: argument 3 of type 'float[4]' with mismatched bound [-Werror=array-parameter=]
  127 | glmc_vec4_scale_as(vec4 v, float s, vec4 dest) {
      |                                     ~~~~~^~~~
In file included from c:\users\name\clionprojects\rust-bindings\external\cglm\include\cglm\call.h:17,
                 from C:\Users\name\CLionProjects\rust-bindings\external\cglm\src\vec4.c:9:
c:\users\name\clionprojects\rust-bindings\external\cglm\include\cglm\call/vec4.h:102:42: note: previously declared as 'float[3]'
  102 | glmc_vec4_scale_as(vec3 v, float s, vec3 dest);
      |                                     ~~~~~^~~~
[ 25%] Building C object external/cglm/CMakeFiles/cglm.dir/src/mat2.c.obj
[ 26%] Building C object external/cglm/CMakeFiles/cglm.dir/src/mat3.c.obj
[ 27%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/init.c.obj
[ 28%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/input.c.obj
[ 29%] Generating spirv/graphics_text.frag.spv
[ 30%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/monitor.c.obj
[ 31%] Generating spirv/graphics_text.vert.spv
cc1.exe: all warnings being treated as errors
[ 32%] Generating spirv/graphics_volume.frag.spv
mingw32-make[3]: *** [external\cglm\CMakeFiles\cglm.dir\build.make:181: external/cglm/CMakeFiles/cglm.dir/src/vec4.c.obj] Error 1
mingw32-make[3]: *** Waiting for unfinished jobs....
[ 34%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/vulkan.c.obj
[ 34%] Generating spirv/graphics_volume.vert.spv
[ 35%] Generating spirv/graphics_volume_slice.frag.spv
[ 35%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/window.c.obj
[ 36%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/win32_init.c.obj
[ 37%] Generating spirv/graphics_volume_slice.vert.spv
[ 38%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/win32_joystick.c.obj
mingw32-make[2]: *** [CMakeFiles\Makefile2:272: external/cglm/CMakeFiles/cglm.dir/all] Error 2
mingw32-make[2]: *** Waiting for unfinished jobs....
[ 39%] Generating spirv/test_double.comp.spv
[ 40%] Generating spirv/test_pow.comp.spv
[ 41%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/win32_monitor.c.obj
[ 41%] Generating spirv/test_sum.comp.spv
[ 42%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/win32_time.c.obj
[ 42%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/win32_thread.c.obj
[ 43%] Generating spirv/test_triangle.comp.spv
[ 45%] Generating spirv/test_triangle.frag.spv
[ 46%] Generating spirv/test_triangle.vert.spv
[ 47%] Generating spirv/test_triangle_pick.frag.spv
[ 48%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/win32_window.c.obj
[ 49%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/wgl_context.c.obj
[ 49%] Generating spirv/test_triangle_pick.vert.spv
[ 50%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/egl_context.c.obj
[ 51%] Generating spirv/test_triangle_push.frag.spv
[ 52%] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/osmesa_context.c.obj
[ 53%] Generating spirv/test_triangle_push.vert.spv
[ 54%] Generating spirv/test_triangle_ubo.frag.spv
[ 56%] Generating spirv/test_triangle_ubo.vert.spv
[ 56%] Built target shaders_spirv
[ 56%] Linking C static library libglfw3.a
[ 56%] Built target glfw
mingw32-make[1]: *** [CMakeFiles\Makefile2:169: CMakeFiles/datoviz.dir/rule] Error 2
mingw32-make: *** [makefile:216: datoviz] Error 2

With new version

[ 30%] Built target shaders_spirv
[ 43%] Built target glfw
Scanning dependencies of target shaders
Scanning dependencies of target cglm
[ 44%] Generating _shaders.c
[ 44%] Building C object external/cglm/CMakeFiles/cglm.dir/src/vec4.c.obj
[ 45%] Building C object external/cglm/CMakeFiles/cglm.dir/src/mat4.c.obj
[ 45%] Building C object external/cglm/CMakeFiles/cglm.dir/src/plane.c.obj
[ 46%] Building C object external/cglm/CMakeFiles/cglm.dir/src/frustum.c.obj
[ 47%] Building C object external/cglm/CMakeFiles/cglm.dir/src/box.c.obj
[ 47%] Building C object external/cglm/CMakeFiles/cglm.dir/src/project.c.obj
[ 48%] Building C object external/cglm/CMakeFiles/cglm.dir/src/sphere.c.obj
[ 50%] Building C object external/cglm/CMakeFiles/cglm.dir/src/ease.c.obj
[ 51%] Building C object external/cglm/CMakeFiles/cglm.dir/src/curve.c.obj
[ 52%] Building C object external/cglm/CMakeFiles/cglm.dir/src/ray.c.obj
[ 52%] Building C object external/cglm/CMakeFiles/cglm.dir/src/bezier.c.obj
[ 53%] Building C object external/cglm/CMakeFiles/cglm.dir/src/affine2d.c.obj
[ 54%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/persp_lh_zo.c.obj
[ 54%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/persp_rh_zo.c.obj
[ 55%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/persp_lh_no.c.obj
[ 56%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/persp_rh_no.c.obj
[ 56%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/ortho_lh_zo.c.obj
[ 57%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/ortho_rh_zo.c.obj
[ 58%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/ortho_lh_no.c.obj
[ 59%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/ortho_rh_no.c.obj
[ 59%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/view_lh_zo.c.obj
[ 60%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/view_rh_zo.c.obj
[ 61%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/view_lh_no.c.obj
[ 63%] Building C object external/cglm/CMakeFiles/cglm.dir/src/clipspace/view_rh_no.c.obj
[ 63%] Built target shaders
[ 63%] Linking C shared library libcglm.dll
[ 70%] Built target cglm
[ 71%] Generating _colortex.c
Scanning dependencies of target datoviz
[ 72%] Building C object CMakeFiles/datoviz.dir/external/ansicolor-w32.c.obj
[ 72%] Building C object CMakeFiles/datoviz.dir/external/colorspace.c.obj
[ 73%] Building CXX object CMakeFiles/datoviz.dir/external/earcut.cpp.obj
[ 75%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/backends/imgui_impl_glfw.cpp.obj
[ 75%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/backends/imgui_impl_vulkan.cpp.obj
[ 76%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/imgui.cpp.obj
[ 77%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/imgui_demo.cpp.obj
[ 78%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/imgui_draw.cpp.obj
[ 78%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/imgui_tables.cpp.obj
[ 79%] Building CXX object CMakeFiles/datoviz.dir/external/imgui/imgui_widgets.cpp.obj
[ 80%] Building C object CMakeFiles/datoviz.dir/external/triangle.c.obj
[ 81%] Building C object CMakeFiles/datoviz.dir/external/video.c.obj
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c: In function 'printtriangle':
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2935:52: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2935 |     printf("triangle x%lx with orientation %d:\n", (unsigned long)t->tri, t->orient);
      |                                                    ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2943:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2943 |         printf("    [0] = x%lx  %d\n", (unsigned long)printtri.tri, printtri.orient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2952:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2952 |         printf("    [1] = x%lx  %d\n", (unsigned long)printtri.tri, printtri.orient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2961:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2961 |         printf("    [2] = x%lx  %d\n", (unsigned long)printtri.tri, printtri.orient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2970:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2970 |             (unsigned long)printvertex, printvertex[0], printvertex[1]);
      |             ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2977:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2977 |             (unsigned long)printvertex, printvertex[0], printvertex[1]);
      |             ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2983:71: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2983 |             "    Apex  [%d] = x%lx  (%.12g, %.12g)\n", t->orient + 3, (unsigned long)printvertex,
      |                                                                       ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2991:44: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2991 |             printf("    [6] = x%lx  %d\n", (unsigned long)printsh.ss, printsh.ssorient);
      |                                            ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:2996:44: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 2996 |             printf("    [7] = x%lx  %d\n", (unsigned long)printsh.ss, printsh.ssorient);
      |                                            ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3001:44: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3001 |             printf("    [8] = x%lx  %d\n", (unsigned long)printsh.ss, printsh.ssorient);
      |                                            ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c: In function 'printsubseg':
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3036:63: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3036 |         "subsegment x%lx with orientation %d and mark %d:\n", (unsigned long)s->ss, s->ssorient,
      |                                                               ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3045:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3045 |         printf("    [0] = x%lx  %d\n", (unsigned long)printsh.ss, printsh.ssorient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3054:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3054 |         printf("    [1] = x%lx  %d\n", (unsigned long)printsh.ss, printsh.ssorient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3062:73: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3062 |             "    Origin[%d] = x%lx  (%.12g, %.12g)\n", 2 + s->ssorient, (unsigned long)printvertex,
      |                                                                         ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3069:73: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3069 |             "    Dest  [%d] = x%lx  (%.12g, %.12g)\n", 3 - s->ssorient, (unsigned long)printvertex,
      |                                                                         ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3079:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3079 |         printf("    [6] = x%lx  %d\n", (unsigned long)printtri.tri, printtri.orient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3088:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3088 |         printf("    [7] = x%lx  %d\n", (unsigned long)printtri.tri, printtri.orient);
      |                                        ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3097:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3097 |             (unsigned long)printvertex, printvertex[0], printvertex[1]);
      |             ^
C:\Users\name\CLionProjects\rust-bindings\external\triangle.c:3104:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 3104 |             (unsigned long)printvertex, printvertex[0], printvertex[1]);
      |             ^
[ 81%] Building C object CMakeFiles/datoviz.dir/src/canvas.c.obj
[ 82%] Building C object CMakeFiles/datoviz.dir/src/common.c.obj
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:15:1: warning: no previous prototype for '__write_w32' [-Wmissing-prototypes]
   15 | __write_w32(FILE* fp, const char* buf) {
      | ^~~~~~~~~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c: In function '__write_w32':
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:16:31: warning: unsigned conversion from 'int' to 'short unsigned int' changes value from '-1' to '65535' [-Wsign-conversion]
   16 |   static WORD attr_olds[2] = {-1, -1}, attr_old;
      |                               ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:16:35: warning: unsigned conversion from 'int' to 'short unsigned int' changes value from '-1' to '65535' [-Wsign-conversion]
   16 |   static WORD attr_olds[2] = {-1, -1}, attr_old;
      |                                   ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:35:21: warning: implicit declaration of function '_get_osfhandle'; did you mean '_get_heap_handle'? [-Wimplicit-function-declaration]
   35 |   handle = (HANDLE) _get_osfhandle(fileno(fp));
      |                     ^~~~~~~~~~~~~~
      |                     _get_heap_handle
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:35:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
   35 |   handle = (HANDLE) _get_osfhandle(fileno(fp));
      |            ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:51:16: warning: conversion to 'unsigned char' from 'char' may change the sign of the result [-Wsign-conversion]
   51 |       if ((c = *ptr++) == 0) break;
      |                ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:78:27: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
   78 |                   csize = w * (h + 1);
      |                           ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:125:27: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
  125 |                   csize = w * (h + 1);
      |                           ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:238:23: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
  238 |               csize = csbi.dwSize.X - coord.X;
      |                       ^~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:241:23: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'SHORT' {aka 'short int'} may change the sign of the result [-Wsign-conversion]
  241 |               csize = coord.X;
      |                       ^~~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:245:23: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'SHORT' {aka 'short int'} may change the sign of the result [-Wsign-conversion]
  245 |               csize = csbi.dwSize.X;
      |                       ^~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:261:23: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
  261 |               csize = w * (h - coord.Y) - coord.X;
      |                       ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:265:23: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
  265 |               csize = w * coord.Y + coord.X;
      |                       ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:270:23: warning: conversion to 'DWORD' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
  270 |               csize = w * (h + 1);
      |                       ^
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:17:14: warning: unused variable 'first' [-Wunused-variable]
   17 |   static int first = 1;
      |              ^~~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c: At top level:
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:342:1: warning: no previous prototype for '_fprintf_w32' [-Wmissing-prototypes]
  342 | _fprintf_w32(FILE* fp, const char* format, ...) {
      | ^~~~~~~~~~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c: In function '_fprintf_w32':
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:347:7: warning: implicit declaration of function 'vasprintf'; did you mean 'vsprintf'? [-Wimplicit-function-declaration]
  347 |   r = vasprintf(&buf, format, args);
      |       ^~~~~~~~~
      |       vsprintf
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c: At top level:
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:356:1: warning: no previous prototype for '_fputs_w32' [-Wmissing-prototypes]
  356 | _fputs_w32(FILE* fp, const char* s) {
      | ^~~~~~~~~~
C:\Users\name\CLionProjects\rust-bindings\external\ansicolor-w32.c:17:14: warning: 'first' defined but not used [-Wunused-variable]
   17 |   static int first = 1;
      |              ^~~~~
[ 83%] Building C object CMakeFiles/datoviz.dir/src/context.c.obj
[ 83%] Building C object CMakeFiles/datoviz.dir/src/controls.c.obj
[ 84%] Building C object CMakeFiles/datoviz.dir/src/demo.c.obj
[ 85%] Building C object CMakeFiles/datoviz.dir/src/fifo.c.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\canvas.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\canvas.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from c:\users\name\clionprojects\rust-bindings\external\video.h:4,
                 from C:\Users\name\CLionProjects\rust-bindings\src\canvas.c:2:
c:\users\name\clionprojects\rust-bindings\src\vklite_utils.h: In function 'create_swapchain':
c:\users\name\clionprojects\rust-bindings\src\vklite_utils.h:1041:19: warning: comparison between pointer and integer
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
c:\users\name\clionprojects\rust-bindings\src\vklite_utils.h:1041:5: note: in expansion of macro 'ASSERT'
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
c:\users\name\clionprojects\rust-bindings\src\vklite_utils.h: In function 'create_image_view2':
c:\users\name\clionprojects\rust-bindings\src\vklite_utils.h:1359:19: warning: comparison between pointer and integer
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
c:\users\name\clionprojects\rust-bindings\src\vklite_utils.h:1359:5: note: in expansion of macro 'ASSERT'
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
[ 86%] Building C object CMakeFiles/datoviz.dir/src/graphics.c.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from C:\Users\name\CLionProjects\rust-bindings\src\common.c:14:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
[ 86%] Building CXX object CMakeFiles/datoviz.dir/src/gui.cpp.obj
[ 88%] Building C object CMakeFiles/datoviz.dir/src/interact.c.obj
[ 89%] Building C object CMakeFiles/datoviz.dir/src/log.c.obj
In file included from C:\Users\name\CLionProjects\rust-bindings\src\log.c:34:
C:\Users\name\CLionProjects\rust-bindings\src\log.c: In function 'log_log':
C:/Users/name/CLionProjects/rust-bindings/external/ansicolor-w32.h:2:23: warning: implicit declaration of function '_fprintf_w32'; did you mean '_fprintf_s_l'? [-Wimplicit-function-declaration]
    2 | # define fprintf(...) _fprintf_w32(__VA_ARGS__)
      |                       ^~~~~~~~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\log.c:108:9: note: in expansion of macro 'fprintf'
  108 |         fprintf(
      |         ^~~~~~~
[ 90%] Building C object CMakeFiles/datoviz.dir/src/mesh.c.obj
[ 90%] Building CXX object CMakeFiles/datoviz.dir/src/mesh_loader.cpp.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from C:\Users\name\CLionProjects\rust-bindings\src\context.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from c:\users\name\clionprojects\rust-bindings\include\datoviz\app.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:26,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from C:\Users\name\CLionProjects\rust-bindings\src\context.c:1:
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h: In function 'create_swapchain':
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1041:19: warning: comparison between pointer and integer
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1041:5: note: in expansion of macro 'ASSERT'
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h: In function 'create_image_view2':
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1359:19: warning: comparison between pointer and integer
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1359:5: note: in expansion of macro 'ASSERT'
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\canvas.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\controls.c:3:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
[ 91%] Building C object CMakeFiles/datoviz.dir/src/panel.c.obj
[ 92%] Building C object CMakeFiles/datoviz.dir/src/scene.c.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\canvas.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\demo.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\demo.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
[ 92%] Building C object CMakeFiles/datoviz.dir/src/spirv.c.obj
[ 93%] Building C object CMakeFiles/datoviz.dir/src/transfers.c.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\graphics.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\graphics.c:2:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
[ 94%] Building C object CMakeFiles/datoviz.dir/src/transforms.c.obj
[ 95%] Building C object CMakeFiles/datoviz.dir/src/vislib.c.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\canvas.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\interact.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\interact.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\mesh.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\mesh.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
[ 95%] Building C object CMakeFiles/datoviz.dir/src/visuals.c.obj
C:\Users\name\CLionProjects\rust-bindings\src\mesh.c: In function 'dvz_mesh_grid':
C:\Users\name\CLionProjects\rust-bindings\src\mesh.c:248:13: warning: '_vec3_copy' reading 12 bytes from a region of size 8 [-Wstringop-overread]
  248 |             _vec3_copy(uv, vertex->uv);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\mesh.c:248:13: note: referencing argument 1 of type 'const float *'
C:\Users\name\CLionProjects\rust-bindings\src\mesh.c:248:13: warning: '_vec3_copy' accessing 12 bytes in a region of size 8 [-Wstringop-overflow=]
C:\Users\name\CLionProjects\rust-bindings\src\mesh.c:248:13: note: referencing argument 2 of type 'float *'
In file included from c:\users\name\clionprojects\rust-bindings\include\datoviz\common.h:91,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\app.h:20,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:26,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\mesh.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\mesh.c:1:
c:\users\name\clionprojects\rust-bindings\include\datoviz\types.h:106:20: note: in a call to function '_vec3_copy'
  106 | static inline void _vec3_copy(const vec3 a, vec3 b)
      |                    ^~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transforms.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\panel.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\panel.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\context.h:11,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\canvas.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\interact.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\scene.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\scene.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:\Users\name\CLionProjects\rust-bindings\src\ticks.h:16,
                 from C:\Users\name\CLionProjects\rust-bindings\src\axes.h:11,
                 from C:\Users\name\CLionProjects\rust-bindings\src\scene.c:9:
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h: In function 'create_swapchain':
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1041:19: warning: comparison between pointer and integer
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1041:5: note: in expansion of macro 'ASSERT'
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h: In function 'create_image_view2':
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1359:19: warning: comparison between pointer and integer
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1359:5: note: in expansion of macro 'ASSERT'
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from C:\Users\name\CLionProjects\rust-bindings\src\spirv.c:2:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
[ 96%] Building C object CMakeFiles/datoviz.dir/src/vklite.c.obj
[ 97%] Building C object CMakeFiles/datoviz.dir/_shaders.c.obj
[ 98%] Building C object CMakeFiles/datoviz.dir/_colortex.c.obj
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transfers.h:9,
                 from C:\Users\name\CLionProjects\rust-bindings\src\transfers.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\transforms.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\transforms.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\graphics.h:8,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vislib.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\vislib.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\array.h:9,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\visuals.h:8,
                 from C:\Users\name\CLionProjects\rust-bindings\src\visuals.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct.h:28,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:30,
                 from C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:1:
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h: In function 'glms_persp_decomp_y':
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:508:10: warning: ISO C forbids 'return' with expression, in function returning void [-Wpedantic]
  508 |   return glms_persp_decomp_y_rh_no(proj, top, bottom);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/name/CLionProjects/rust-bindings/external/cglm/include/cglm/struct/cam.h:498:1: note: declared here
  498 | glms_persp_decomp_y(mat4s proj,
      | ^~~~~~~~~~~~~~~~~~~
In file included from c:\users\name\clionprojects\rust-bindings\include\datoviz\common.h:21,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\app.h:20,
                 from c:\users\name\clionprojects\rust-bindings\include\datoviz\vklite.h:26,
                 from C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:1:
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h: In function 'create_swapchain':
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1041:19: warning: comparison between pointer and integer
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1041:5: note: in expansion of macro 'ASSERT'
 1041 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h: In function 'create_image_view2':
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1359:19: warning: comparison between pointer and integer
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |                   ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite_utils.h:1359:5: note: in expansion of macro 'ASSERT'
 1359 |     ASSERT(format != VK_NULL_HANDLE);
      |     ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c: In function 'dvz_buffer_create':
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:909:26: warning: comparison between pointer and integer
  909 |     ASSERT(buffer->usage != VK_NULL_HANDLE);
      |                          ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:909:5: note: in expansion of macro 'ASSERT'
  909 |     ASSERT(buffer->usage != VK_NULL_HANDLE);
      |     ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:910:27: warning: comparison between pointer and integer
  910 |     ASSERT(buffer->memory != VK_NULL_HANDLE);
      |                           ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:910:5: note: in expansion of macro 'ASSERT'
  910 |     ASSERT(buffer->memory != VK_NULL_HANDLE);
      |     ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c: In function 'dvz_graphics_create':
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:2218:43: warning: comparison between pointer and integer
 2218 |         ASSERT(graphics->shader_stages[i] != VK_NULL_HANDLE);
      |                                           ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:2218:9: note: in expansion of macro 'ASSERT'
 2218 |         ASSERT(graphics->shader_stages[i] != VK_NULL_HANDLE);
      |         ^~~~~~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c: In function 'dvz_submit_send':
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:3060:39: warning: comparison between pointer and integer
 3060 |         ASSERT(submit->wait_stages[i] != VK_NULL_HANDLE);
      |                                       ^~
C:\Users\name\CLionProjects\rust-bindings\src\vklite.c:3060:9: note: in expansion of macro 'ASSERT'
 3060 |         ASSERT(submit->wait_stages[i] != VK_NULL_HANDLE);
      |         ^~~~~~
[ 98%] Linking CXX shared library libdatoviz.dll
[100%] Built target datoviz

Build finished

Updating Textures in an Event Loop

Hi @rossant,

First let me say -- this is an awesome project, so kudos to you for putting together such a cool, modern visualization library.

What is the proper way to render video using this tool? Or additionally, how would you recommend feeding a sequential list of images for viewing? I've messed around a little bit, but I've had some weird behavior with creating textures within an event loop.

Thanks in advance,

Ben

Full list of public headers

In the top level CMakeLists file, the following:

set_target_properties(datoviz PROPERTIES
    VERSION ${DATOVIZ_VERSION}
    SOVERSION 1
    PUBLIC_HEADER include/datoviz/datoviz.h)

declares that only datoviz.h is a public headers. However it seems to be a thin shim to other files located in
https://github.com/datoviz/datoviz/tree/main/include/datoviz

Can you comment if the whole directory https://github.com/datoviz/datoviz/tree/main/include/datoviz should be listed as public headers?

PUBLIC_HEADER include/datoviz/datoviz.h)

ps. I'm trying to build a package for this: conda-forge/staged-recipes#23164 since datoviz is only alpha for now, i may decide to not publish it on conda-forge

viskylib = load_library() ---> _skbuild/*/cmake-build/libvisky.so')).resolve()

In [3]: import visky

StopIteration Traceback (most recent call last)
in
----> 1 import visky

~/visky/bindings/python/visky/init.py in
1 import numpy as np
2
----> 3 from .wrap import viskylib as vl, make_vertices, upload_data
4 from . import _constants as const
5 from . import _types as tp

~/visky/bindings/python/visky/wrap.py in
49
50 # Load the shared library
---> 51 viskylib = load_library()
52
53

~/visky/bindings/python/visky/wrap.py in load_library()
25 if system() == 'Linux':
26 lib_path = next(Path(file).parent.parent.glob(
---> 27 '_skbuild/*/cmake-build/libvisky.so')).resolve()
28 assert lib_path.exists()
29 return ctypes.cdll.LoadLibrary(lib_path)

StopIteration:

Khronos ML summit

Hello,

I am the chair of a working group at Khronos developping standards for graphics and compute hardware accelerators (as well as a representative for Nvidia in those groups).

We are organizing a summit to gather feedback from the ecosystem, and influence the design of the next round of improvements, and I thought that you may be interested in being represented:
https://www.khronos.org/events/2021-invitation-to-the-khronos-machine-learning-summit

This summit is IP free, and will let you present your project and your needs for improvements in the ML ecosystem, as well as hearing from other companies.

regards,

Pierre Boudier
Software architect at Nvidia
chair of the Machine Learning TSG at Khronos

Build problem on OSX (Big Sur)

I'm trying to install on OSX but the compilation failed for some reason. Note that I do not have the full XCode env but only the command line tools. Could that be the reason? (I would prefer to not instal full XCode)

-- ESC[32mFound VulkanESC[m
-- ESC[32mUsing Cocoa for window creationESC[m
-- ESC[32mFound FFMPEGESC[m
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/rougier/tmp/datoviz/build
[1/66] Building C object _deps/glfw-build/src/CMakeFiles/glfw.dir/cocoa_time.c.o
FAILED: _deps/glfw-build/src/CMakeFiles/glfw.dir/cocoa_time.c.o
/usr/local/bin/gcc-9 -D_GLFW_USE_CONFIG_H -I_deps/glfw-src/include -I_deps/glfw-src/src -I_deps/glfw-build/src -g -isysroot /Library/Develope
r/CommandLineTools/SDKs/MacOSX11.1.sdk -fPIC -Wall -std=c99 -MD -MT _deps/glfw-build/src/CMakeFiles/glfw.dir/cocoa_time.c.o -MF _deps/glfw-bu
ild/src/CMakeFiles/glfw.dir/cocoa_time.c.o.d -o _deps/glfw-build/src/CMakeFiles/glfw.dir/cocoa_time.c.o -c _deps/glfw-src/src/cocoa_time.c
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Security.framework/Headers/AuthSessio
n.h:32,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Security.framework/Headers/Security.h
:42,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/OSS
ervices.framework/Headers/CSIdentity.h:43,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/OSS
ervices.framework/Headers/OSServices.h:29,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/Lau
nchServices.framework/Headers/IconsCore.h:23,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/Lau
nchServices.framework/Headers/LaunchServices.h:23,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreSe
rvices.h:39,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Carbon.framework/Headers/Carbon.h:20,
                 from _deps/glfw-src/src/cocoa_platform.h:30,
                 from _deps/glfw-src/src/internal.h:184,
                 from _deps/glfw-src/src/cocoa_time.c:29:
/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Security.framework/Headers/Authorization.h:193:7: error: va
riably modified 'bytes' at file scope
  193 |  char bytes[kAuthorizationExternalFormLength];
      |       ^~~~~

...

Python bindings

Hi, am I understanding the documentation correctly that a user has to compile Datoviz before using it with Python? If so, what would be a rough estimate when Datoviz would be available in an more accessible manner, e.g. pip install or otherwise?

Problem running examples

I'm using Ubuntu 20.04.3 on x86_64 CPU with Intel UHD Graphics 630 GPU, i915 driver and Python 3.8.10; datoviz is installed in venv. Simple test

python -c "import datoviz; datoviz.demo()"

runs fine, but examples from https://datoviz.org/examples/ fail with this error message:

python: ../src/vklite.c:3224: dvz_cmd_begin_renderpass: Assertion `(framebuffers->framebuffers[iclip] != 0)' failed.
Aborted (core dumped)

In both cases I see the same warning:

MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0

but I need a lower performance settings of i915 driver in order to avoid screen tearing.

Total CUDA Vulkan Interop without CPU Overhead

HI, I just want to know that :

  • is it possible to run a program totally on the GPU. I mean vertex/color data calculation and updation is done totally on the GPU
  • How to configure so that I can use DVZ_CONTROLLER_AXES_3D ? (NOT IMPLEMENTED YET)
  • Is it possible to do animations. I think it should be trivial because Vulkan is used in games. So, how do I do that.
    I was using the C API and I know Vulkan is hard, therefore I stopped by for some help.

missing the 3D wavefield example

Hello Cyril,

I want to do an animated 3D xyz plot, on datoviz website homepage the wavelike 3D thing above the scatter plot looks promising, could you add it as an example or provide me with anscient material that I could take myself out of bitrot :)

Thanks, kudo for datoviz, looks terrific.

The grid does not update when the zoom is changed with panel.set_lim

In panzoom the grid updates automatically when you move in and out with the mouse.
However, when you use panel.set_lim(), the spacing between ticks and grids does not update. This gives rise to very close grids and ticks when you unzoom (see screenshot below) and no grids/ticks at all when you zoom in.

EDIT 20/02/2022 15:40
adding _axes_refresh(panel->controller,true);
at the end of the function dvz_panel_lim_set in panel.c
does the job !

image

Datoviz demo showing pure white screen

OS: Linux Mint (Using BSP WM if it matters)
Error message: None
GPU Info:

04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 1638 (rev c4) (prog-if 00 [VGA controller])
	Subsystem: Razer USA Ltd. Device 2014
	Flags: bus master, fast devsel, latency 0, IRQ 58
	Memory at fc10000000 (64-bit, prefetchable) [size=256M]
	Memory at fc20000000 (64-bit, prefetchable) [size=2M]
	I/O ports at e000 [size=256]
	Memory at fc500000 (32-bit, non-prefetchable) [size=512K]
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu

I'm very interested in using the Datoviz library in an upcoming project. However I am encountering a problem: the render window is showing purely white other than ImGUI windows. I loaded the datoviz library in a pipenv virtual enviornment, and reinstalled GLFW with pipenv install glfw, but the issue persists. The issue is persisting no matter what datoviz code I attempt to run. I have tried both the demo and various examples. There is no error message or information being provided. A screenshot is below; any help would be very greatly appreciated

Output of datoviz.demo()
Screenshot from 2023-05-19 12-01-13

Rust bindings

Slowly working on some rust bindings. Opening this to ask some related questions and/or update on the progress.

[Apple M1] Compile and pip errors: Generating _shaders.c ninja: build stopped: subcommand failed.

This projects looks great so I wanted to try and compile it on my MacBook Pro M1 (Silicon). I get that this project is still in early alpha and that there are no arm releases but I will leave this feedback here anyway since others may stumble upon the same problems:

  • Installing via pip (even though it is targeted at x86_64) yields the following error: ERROR: datoviz-0.1.0a1-cp38-cp38-macosx_10_14_x86_64.whl is not a supported wheel on this platform.. I am not sure if this is related to the build or if the .wheel format is actually not supported on M1s.
  • Compiling the source via ./manage.sh build throws a bunch of errors:
...
FAILED: _deps/cglm-build/CMakeFiles/cglm.dir/src/mat4.c.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -DCGLM_EXPORTS -Dcglm_EXPORTS -I/opt/datoviz/build/_deps/cglm-src/include -I/opt/datoviz/build/_deps/cglm-src/src -g -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk -fPIC -Wall -Werror -O3 -std=gnu11 -MD -MT _deps/cglm-build/CMakeFiles/cglm.dir/src/mat4.c.o -MF _deps/cglm-build/CMakeFiles/cglm.dir/src/mat4.c.o.d -o _deps/cglm-build/CMakeFiles/cglm.dir/src/mat4.c.o -c /opt/datoviz/build/_deps/cglm-src/src/mat4.c
In file included from /opt/datoviz/build/_deps/cglm-src/src/mat4.c:8:
In file included from /opt/datoviz/build/_deps/cglm-src/src/../include/cglm/cglm.h:18:
In file included from /opt/datoviz/build/_deps/cglm-src/src/../include/cglm/affine.h:41:
In file included from /opt/datoviz/build/_deps/cglm-src/src/../include/cglm/affine-mat.h:30:
/opt/datoviz/build/_deps/cglm-src/src/../include/cglm/simd/neon/affine.h:89:29: error: variable 'r3' set but not used [-Werror,-Wunused-but-set-variable]
  glmm_128      r0, r1, r2, r3, x0;
                            ^
1 error generated.
[50/140] Generating _shaders.c
ninja: build stopped: subcommand failed.

Is development on this project still ongoing? Thanks for the effort anyway!

Installation in sites-package missing when running `./manage.sh cython`

When running ./manage.sh cython the extensions compile correctly but the poetry environment doesn't get recognized and the installer tries to add the package in the base environment and gets denied.

I've been around the issue by:

cd bindings/cython
pip install -e .

This may be related to poetry, just pointing out the workaround !

Full log of the manage.sh cython command

Compiling datoviz/pydatoviz.pyx because it depends on ./datoviz/cydatoviz.pxd.
[1/1] Cythonizing datoviz/pydatoviz.pyx
warning: datoviz/pydatoviz.pyx:731:37: Too few members for 'DvzAutorun'
/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages/setuptools/dist.py:519: InformationOnly: Normalizing '0.1.0.a1' to '0.1.0a1'
  self.metadata.version = self._normalize_version(
running build_ext
building 'datoviz.pydatoviz' extension
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -I/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages/numpy/core/include -I/home/olivier/Documents/PYTHON/datoviz/include -I/opt/vulkan/x86_64/include -I/home/olivier/Documents/PYTHON/datoviz/build/_deps/cglm-src/include -I/home/olivier/Documents/PYTHON/datoviz/build/_deps/glfw-src/include -I/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/include -I/usr/include/python3.10 -c datoviz/pydatoviz.c -o build/temp.linux-x86_64-cpython-310/datoviz/pydatoviz.o -w
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-x86_64-cpython-310/datoviz/pydatoviz.o -L/home/olivier/Documents/PYTHON/datoviz/build -L/usr/lib/x86_64-linux-gnu -ldatoviz -o build/lib.linux-x86_64-cpython-310/datoviz/pydatoviz.cpython-310-x86_64-linux-gnu.so
copying build/lib.linux-x86_64-cpython-310/datoviz/pydatoviz.cpython-310-x86_64-linux-gnu.so -> datoviz
/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages/setuptools/dist.py:519: InformationOnly: Normalizing '0.1.0.a1' to '0.1.0a1'
  self.metadata.version = self._normalize_version(
running develop
/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages/setuptools/command/develop.py:40: EasyInstallDeprecationWarning: easy_install command is deprecated.
!!

        ********************************************************************************
        Please avoid running ``setup.py`` and ``easy_install``.
        Instead, use pypa/build, pypa/installer, pypa/build or
        other standards-based tools.

        See https://github.com/pypa/setuptools/issues/917 for details.
        ********************************************************************************

!!
  easy_install.initialize_options(self)
WARNING: The user site-packages directory is disabled.
/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!

        ********************************************************************************
        Please avoid running ``setup.py`` directly.
        Instead, use pypa/build, pypa/installer, pypa/build or
        other standards-based tools.

        See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
        ********************************************************************************

!!
  self.initialize_options()
Checking .pth file support in /home/olivier/.local/lib/python3.10/site-packages
/home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/bin/python3 -E -c pass
TEST FAILED: /home/olivier/.local/lib/python3.10/site-packages does NOT support .pth files
bad install directory or PYTHONPATH

You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from.  The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

    /home/olivier/.local/lib/python3.10/site-packages

and your PYTHONPATH environment variable currently contains:

    ''

Here are some of your options for correcting the problem:

* You can choose a different installation directory, i.e., one that is
  on PYTHONPATH or supports .pth files

* You can add the installation directory to the PYTHONPATH environment
  variable.  (It must then also be on PYTHONPATH whenever you run
  Python and want to use the package(s) you are installing.)

* You can set up the installation directory to support ".pth" files by
  using one of the approaches described here:

  https://setuptools.pypa.io/en/latest/deprecated/easy_install.html#custom-installation-locations


Please make the appropriate changes for your system and try again.
running egg_info
writing datoviz.egg-info/PKG-INFO
writing dependency_links to datoviz.egg-info/dependency_links.txt
writing requirements to datoviz.egg-info/requires.txt
writing top-level names to datoviz.egg-info/top_level.txt
reading manifest file 'datoviz.egg-info/SOURCES.txt'
writing manifest file 'datoviz.egg-info/SOURCES.txt'
running build_ext
Creating /home/olivier/.local/lib/python3.10/site-packages/datoviz.egg-link (link to .)

Installed /home/olivier/Documents/PYTHON/datoviz/bindings/cython
Processing dependencies for datoviz==0.1.0a1
Searching for colorcet==3.0.1
Best match: colorcet 3.0.1
Installing colorcet script to /home/olivier/.local/bin

Using /home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages
Searching for imageio==2.29.0
Best match: imageio 2.29.0
Installing imageio_download_bin script to /home/olivier/.local/bin
Installing imageio_remove_bin script to /home/olivier/.local/bin

Using /home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages
Searching for numpy==1.24.3
Best match: numpy 1.24.3
Installing f2py script to /home/olivier/.local/bin
Installing f2py3 script to /home/olivier/.local/bin
Installing f2py3.10 script to /home/olivier/.local/bin

Using /home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages
Searching for pyct==0.5.0
Best match: pyct 0.5.0
Installing pyct script to /home/olivier/.local/bin

Using /home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages
Searching for Pillow==9.5.0
Best match: Pillow 9.5.0

Using /home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages
Searching for param==1.13.0
Best match: param 1.13.0

Using /home/olivier/.cache/pypoetry/virtualenvs/iblenv-Wd2J5L8p-py3.10/lib/python3.10/site-packages
Finished processing dependencies for datoviz==0.1.0a1

making ipython optional

Would you consider making ipython an optional dependency?

Patch below, i can make a PR if you like

the patch
From 46ecf8e079ecc25c2e62455a8ca9ae17840813ec Mon Sep 17 00:00:00 2001
From: Mark Harfouche <[email protected]>
Date: Sun, 25 Jun 2023 13:09:54 -0400
Subject: [PATCH 3/3] Make IPython an optional dependency

---
 bindings/cython/datoviz/__init__.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/bindings/cython/datoviz/__init__.py b/bindings/cython/datoviz/__init__.py
index 94da4475..6d8c832f 100644
--- a/bindings/cython/datoviz/__init__.py
+++ b/bindings/cython/datoviz/__init__.py
@@ -7,9 +7,6 @@ import sys
 import time
 import __main__ as main
 
-from IPython import get_ipython
-from IPython.terminal.pt_inputhooks import register
-
 try:
     from .pydatoviz import App, colormap, colorpal, demo
 except ImportError:
@@ -113,6 +110,7 @@ def inputhook(context):
 
 
 def enable_ipython():
+    from IPython import get_ipython
     ipython = get_ipython()
     if ipython:
         logger.info("Enabling Datoviz IPython event loop integration")
@@ -139,7 +137,12 @@ def is_interactive():
 
 
 # print(f"In IPython: {in_ipython()}, is interactive: {is_interactive()}")
-register('datoviz', inputhook)
+try:
+    from IPython.terminal.pt_inputhooks import register
+
+    register('datoviz', inputhook)
+except ImportError:
+    pass
 
 
 # Event loops
-- 
2.39.2

FFMPEG include directories not found

I have installed FFMPEG_dev. Cmake found FFMPEG, however complains on its include directories:

./manage.sh build
-- Found Vulkan
-- Using X11 for window creation
-- Found FFMPEG
-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
/home/myusername/datoviz/FFMPEG_INCLUDE_DIRS
used as include directory in directory /home/myusername/datoviz

I've tried soft link to /usr/include/ffmpeg as FFMPEG_INCLUDE_DIRS but it doesn't help.

Please help.
Thanks.

Is Repo Still Active?

Hey,
I Noticed that the last commit on this repo is for nearly three months ago. Is this library still being actively developed?
Is there a release schedule?
If there is could you announce it?

Drawing more than 50 images to a scene

I am attempting to draw more than 50 images to a panel but I seem to be hitting some sort of limit.

For testing I am using 1x1 pixel images so it seems to be a texture limit and not data related.

If I increase DVZ_MAX_FIFO_CAPACITY I can get 64 images to draw and then it begins to crash again.

Is there a better way to display many images to a scene?

Below is the script I am using to test.

import numpy as np
from datoviz import canvas, run


def tile_image(panel, image_shape, index, texture):
    visual = panel.visual('image', transform='init')
    visual.data('pos', np.array([[
        image_shape[1] * (index[1] + 1),
        image_shape[0] * (index[0] + 0),
        0,
    ]]), idx=0)  # noqa
    visual.data('pos', np.array([[
        image_shape[1] * (index[1] + 1),
        image_shape[0] * (index[0] + 1),
        0,
    ]]), idx=1)  # noqa
    visual.data('pos', np.array([[
        image_shape[1] * (index[1] + 0),
        image_shape[0] * (index[0] + 1),
        0,
    ]]), idx=2)  # noqa
    visual.data('pos', np.array([[
        image_shape[1] * (index[1] + 0),
        image_shape[0] * (index[0] + 0),
        0,
    ]]), idx=3)  # noqa

    visual.data('texcoords', np.atleast_2d([
        1,
        0,
    ]), idx=0)
    visual.data('texcoords', np.atleast_2d([
        1,
        1,
    ]), idx=1)
    visual.data('texcoords', np.atleast_2d([
        0,
        1,
    ]), idx=2)
    visual.data('texcoords', np.atleast_2d([
        0,
        0,
    ]), idx=3)

    visual.texture(texture)


def add_image(image):
    tex = ctx.texture(image.shape[0], image.shape[1])
    tex.set_filter('linear')
    tex.upload(image)
    return tex


c = canvas(show_fps=True)
panel = c.scene().panel(controller='panzoom')
ctx = c.gpu().context()

shape = (7, 7)

for i in np.ndindex(shape):
    img = np.dstack((
        np.random.randint(0, 256, (1, 1, 4), dtype=np.uint8),
        255 * np.ones((1, 1), dtype=np.uint8)
    ))
    texture = add_image(img)
    tile_image(panel, img.shape[:2], i, texture)

run()

Thank you for taking the time to look at this

get url_cbin and url_ch from alyx - you may want to copy this "collection__endswith"

Hi Cyrill,
In line 132 and 139 in
https://github.com/viskydev/visky/blob/master/bindings/python/examples/ephysview.py
, where you do self.one.alyx.rest you may want to include this "collection__endswith" thing. Something along the lines of:


    pdict = {'probe00': 0,'probe01': 1}
    probe_idx = pdict[probe]
    dsets = one.alyx.rest(
        'datasets', 'list', session=eid,
        django='name__icontains,ap.cbin,collection__endswith,%s' %probe)
    for fr in dsets[probe_idx]['file_records']:
        if fr['data_url']:
            url_cbin = fr['data_url']

    dsets = one.alyx.rest(
        'datasets', 'list', session=eid,
        django='name__icontains,ap.ch,collection__endswith,%s' %probe)
    for fr in dsets[probe_idx]['file_records']:
        if fr['data_url']:
            url_ch = fr['data_url']

Unable to load the shared library

I'm at the last step of the installation but unfortunately I ran into another issue. When I run the python example it gives the error

Traceback (most recent call last):
  File "/home/guido/Repositories/datoviz/bindings/cython/datoviz/__init__.py", line 10, in <module>
    from .pydatoviz import App, colormap
ImportError: /lib/x86_64-linux-gnu/librsvg-2.so.2: undefined symbol: cairo_tag_end

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "bindings/cython/examples/quickstart.py", line 12, in <module>
    from datoviz import canvas, run, colormap
  File "/home/guido/Repositories/datoviz/bindings/cython/datoviz/__init__.py", line 13, in <module>
    "Unable to load the shared library, make sure to run in your terminal:\n"
ImportError: Unable to load the shared library, make sure to run in your terminal:
`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/build`

I ran source setup-env.sh which is basically the command given in the error message, but when I run $LD_LIBRARY_PATH it says
bash: :/home/guido/Repositories/datoviz/build: No such file or directory
However, this is the correct path so I don't understand why it can't find it.

Selecting which GPU to use

TL;DR: Is it / could it be possible to enforce which GPU will be used (e.g. by env variable)?

I compiled dataviz from sources and ran examples. All of them except gui were displaying blank window.
After some time I discovered DVZ_LOG_LEVEL and noticed the following output:

prybicki@titan:/tmp/datoviz$ ./manage.sh demo mandelbrot                                                                                                                                                               
19:02:28.075 D           vklite.c:0137: found device #0: Intel(R) UHD Graphics (CML GT2)                                                                                                                                                      
19:02:28.075 D           vklite.c:0137: found device #1: NVIDIA GeForce RTX 3060 Laptop GPU                                                                                                                                                   
19:02:28.075 D           vklite.c:0137: found device #2: llvmpipe (LLVM 12.0.0, 256 bits)    

I have a dual-gpu machine, with NVIDIA gpu active (I'm using Linux Mint builtin feature to switch between them, which I guess uses prime). I thought that dataviz may choose the first device (Intel), while the second is active and that causes blank window (?).
I modified vklite.c:0137 to skip gpus 0 and 2. After that, all examples worked correctly!

Therefore, my suggestion is to provide (or document/expose) a way to select which GPU is used. For example, cuda driver (libcuda) respects env variable CUDA_VISIBLE_DEVICES which allows to influence which GPU is selected as the default. Perhaps it is possible to implement similar mechanism in datoviz?

Error when running demo

I just installed vulkan-sdk through apt (following the instructions on the LunarXchange site) and then built datoviz and ran manage.sh demo and got this error:

(base) davidh@janet:~/repos/git/datoviz$ ./manage.sh demo
X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  149 ()
  Minor opcode of failed request:  4
  Resource id in failed request:  0x440000b
  Serial number of failed request:  157
  Current serial number in output stream:  163

I am able to get some vulkan-based demos to run, like when I run vkvia it shows the rotating cube but also shows some errors:

(base) davidh@janet:~/repos/git/datoviz$ vkvia
VIA_INFO:    SDK Found! - Will attempt to run tests
VIA_INFO:       Attempting to run ./vkcube in /home/davidh/vulkan/1.2.170.0/x86_64/bin
VIA_INFO:           Command-line: ./vkcube --c 100 --suppress_popups
Selected GPU 1: GeForce GTX 1660 Ti, type: 2
VIA_INFO:           Command-line: ./vkcube --c 100 --suppress_popups --validate
ERROR : GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32

        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 0xfff530

ERROR : GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32

        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 0xfff530

Selected GPU 1: GeForce GTX 1660 Ti, type: 2
SUCCESS: Vulkan analysis completed properly using Vulkan 1.2

vulkaninfo subset:

==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.170


Instance Extensions: count = 18
===============================
        VK_EXT_acquire_xlib_display            : extension revision 1
        VK_EXT_debug_report                    : extension revision 9
        VK_EXT_debug_utils                     : extension revision 2
        VK_EXT_direct_mode_display             : extension revision 1
        VK_EXT_display_surface_counter         : extension revision 1
        VK_KHR_device_group_creation           : extension revision 1
        VK_KHR_display                         : extension revision 23
        VK_KHR_external_fence_capabilities     : extension revision 1
        VK_KHR_external_memory_capabilities    : extension revision 1
        VK_KHR_external_semaphore_capabilities : extension revision 1
        VK_KHR_get_display_properties2         : extension revision 1
        VK_KHR_get_physical_device_properties2 : extension revision 1
        VK_KHR_get_surface_capabilities2       : extension revision 1
        VK_KHR_surface                         : extension revision 25
        VK_KHR_surface_protected_capabilities  : extension revision 1
        VK_KHR_wayland_surface                 : extension revision 6
        VK_KHR_xcb_surface                     : extension revision 6
        VK_KHR_xlib_surface                    : extension revision 6

Layers: count = 13
==================
VK_LAYER_KHRONOS_synchronization2 (Khronos Synchronization2 layer) Vulkan version 1.2.170, layer version 1:
        Layer Extensions: count = 0
        Devices: count = 2
                GPU id = 0 (Intel(R) UHD Graphics 630 (CFL GT2))
                Layer-Device Extensions: count = 1
                        VK_KHR_synchronization2 : extension revision 1

                GPU id = 1 (GeForce GTX 1660 Ti)
                Layer-Device Extensions: count = 1
                        VK_KHR_synchronization2 : extension revision 1

... lots of other layer info ...


Presentable Surfaces:
=====================
GPU id : 0 (Intel(R) UHD Graphics 630 (CFL GT2)):
        Surface types: count = 2
                VK_KHR_xcb_surface
                VK_KHR_xlib_surface
        Formats: count = 2
                SurfaceFormat[0]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[1]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        Present Modes: count = 4
                PRESENT_MODE_IMMEDIATE_KHR
                PRESENT_MODE_MAILBOX_KHR
                PRESENT_MODE_FIFO_KHR
                PRESENT_MODE_FIFO_RELAXED_KHR
        VkSurfaceCapabilitiesKHR:
        -------------------------
                minImageCount       = 3
                maxImageCount       = 0
                currentExtent:
                        width  = 256
                        height = 256
                minImageExtent:
                        width  = 256
                        height = 256
                maxImageExtent:
                        width  = 256
                        height = 256
                maxImageArrayLayers = 1
                supportedTransforms: count = 1
                        SURFACE_TRANSFORM_IDENTITY_BIT_KHR
                currentTransform    = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
                supportedCompositeAlpha: count = 2
                        COMPOSITE_ALPHA_OPAQUE_BIT_KHR
                        COMPOSITE_ALPHA_INHERIT_BIT_KHR
                supportedUsageFlags: count = 5
                        IMAGE_USAGE_TRANSFER_SRC_BIT
                        IMAGE_USAGE_TRANSFER_DST_BIT
                        IMAGE_USAGE_SAMPLED_BIT
                        IMAGE_USAGE_STORAGE_BIT
                        IMAGE_USAGE_COLOR_ATTACHMENT_BIT
        VkSurfaceCapabilities2EXT:
        --------------------------
                supportedSurfaceCounters: count = 0
                        None
        VkSurfaceProtectedCapabilitiesKHR:
        ----------------------------------
                supportsProtected = false

GPU id : 1 (GeForce GTX 1660 Ti):
        Surface types: count = 2
                VK_KHR_xcb_surface
                VK_KHR_xlib_surface
        Formats: count = 2
                SurfaceFormat[0]:
                        format = FORMAT_B8G8R8A8_UNORM
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
                SurfaceFormat[1]:
                        format = FORMAT_B8G8R8A8_SRGB
                        colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        Present Modes: count = 3
                PRESENT_MODE_FIFO_KHR
                PRESENT_MODE_FIFO_RELAXED_KHR
                PRESENT_MODE_IMMEDIATE_KHR
        VkSurfaceCapabilitiesKHR:
        -------------------------
                minImageCount       = 2
                maxImageCount       = 8
                currentExtent:
                        width  = 256
                        height = 256
                minImageExtent:
                        width  = 256
                        height = 256
                maxImageExtent:
                        width  = 256
                        height = 256
                maxImageArrayLayers = 1
                supportedTransforms: count = 1
                        SURFACE_TRANSFORM_IDENTITY_BIT_KHR
                currentTransform    = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
                supportedCompositeAlpha: count = 1
                        COMPOSITE_ALPHA_OPAQUE_BIT_KHR
                supportedUsageFlags: count = 6
                        IMAGE_USAGE_TRANSFER_SRC_BIT
                        IMAGE_USAGE_TRANSFER_DST_BIT
                        IMAGE_USAGE_SAMPLED_BIT
                        IMAGE_USAGE_STORAGE_BIT
                        IMAGE_USAGE_COLOR_ATTACHMENT_BIT
                        IMAGE_USAGE_INPUT_ATTACHMENT_BIT
        VkSurfaceCapabilities2EXT:
        --------------------------
                supportedSurfaceCounters: count = 0
                        None
        VkSurfaceProtectedCapabilitiesKHR:
        ----------------------------------
                supportsProtected = false

...

uname -a:

Linux janet 5.8.0-7642-generic #47~1614007149~20.10~82fb226-Ubuntu SMP Tue Feb 23 02:59:01 UTC  x86_64 x86_64 x86_64 GNU/Linux

"cimported module has no attribute" when compiling with Cython 3.0

Hello,

I was trying a fresh installation of datoviz and couldn't compile using ./manage.sh cython

Here is an excerpt of the otherwise very long and repetitive error message

Error compiling Cython file:
------------------------------------------------------------
...
    elif dt == cv.DVZ_EVENT_MOUSE_WHEEL:
        x = c_ev.u.w.pos[0]
        y = c_ev.u.w.pos[1]
        dx = c_ev.u.w.dir[0]
        dy = c_ev.u.w.dir[1]
        modifiers = _get_modifiers(c_ev.u.w.modifiers)
                                       ^
------------------------------------------------------------

datoviz/pydatoviz.pyx:517:39: Cannot select attribute of incomplete type 'DvzEvent'

Error compiling Cython file:
------------------------------------------------------------
...


# TODO: add more keys
_KEYS = {
    cv.DVZ_KEY_LEFT: 'left',
    cv.DVZ_KEY_RIGHT: 'right',
      ^
------------------------------------------------------------

datoviz/pydatoviz.pyx:55:6: cimported module has no attribute 'DVZ_KEY_RIGHT'

This was fixed by downgrading cython to 0.29.36 in this manner:
pip install Cython==0.29.36

If this is reproducible on other machines and not a weird configuration on my end, I suggest pinning the cython version until the build recipe is compatible with Cython 3 +

Datoviz expects to be top level CMake project

Hello Cyril,

First: as a VisPy user looking to include a performant visualization library into a non-Python project, Datoviz looks like an absolute godsend!

Note that I am using MinGW on a Windows 10 system.

Trying various ways to include Datoviz as a dependency into another (CMake) project, I ran into the issue that the CMakeLists.txt file uses the "${CMAKE_SOURCE_DIR}" / "${CMAKE_BINARY_DIR}" variables. While this is no issue when precompiling and adding Datoviz as a shared library, it prevents smooth adding of the library via e.g.:

add_subdirectory(libs/datoviz)

Trying this, one currently has to add the "cmake", "data" and "external" folders as well as "include/datoviz" to the top-level folder referenced by ${CMAKE_SOURCE_DIR}. Upon quick testing, simply replacing the two variables by ${PROJECT_SOURCE_DIR}" and ${PROJECT_BINARY_DIR} resolved this, and a test project adding Datoviz via "add_subdirectory" worked just fine.

I suspect that with this change, also simply pulling in Datoviz via "FetchContent_Declare / FetchContent_MakeAvailable" might just work; trying this, currently one runs into similar issues as with "add_subdirectory" which can also be resolved by adding the respective folders to top level, but then I ran into ODR violation issues with ImGui involving standard and GLFW headers.

In any case thank you for the great work, and kind regards!
Wolfgang

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.