Fix segfault (don't pass pointers between functions in different SDL versions), minor refactor

[?]
Jul 4, 2021, 10:19 PM
E742MTJAS6KZGXIFVCZMKREGQK34LA45VBIT4E7ODBL7J64FKJFAC

Dependencies

  • [2] 6AXPZL5P Try to offload tight loop to rust (for now it segfaults)
  • [3] QBDHX7BH Add a makefile to express python dependencies since pipenv doesn't like tensorflow
  • [4] ROQCAPZJ Begin function for showing the map (for now just opens SDL window)
  • [5] ZRPV3GAJ Model trainer: Add function to make tensor of cartesian coordinates for drawing the map (equirectangular projection)
  • [6] IGYI5RVV Figure out how to draw on the sdl2 window
  • [7] VKA5CCGC Add pysdl2 to the trainmodel dependencies so I'll be able to visualize what's going on.
  • [*] SXR7KEVO Initial commit
  • [*] X5U7KRUI Parse some of the data into tensors

Change contents

  • file addition: .ignore (----------)
    [9.13]
    *.so
    *.dylib
  • edit in trainmodel/src/drawmap.py at line 3
    [3.12][2.252:262](),[2.262][2.262:263]()
    import os
  • edit in trainmodel/src/drawmap.py at line 7
    [3.37]
    [3.53]
    from . import nativehelpers as helpers
  • edit in trainmodel/src/drawmap.py at line 10
    [3.65][3.65:98]()
    # Use equirectangular projection
  • edit in trainmodel/src/drawmap.py at line 17
    [3.168][2.264:459]()
    print("rendered")
    print(image)
    print(image.contents)
    print("pixels: " + hex(image.contents.pixels))
    print(ctypes.cast(image.contents.pixels, ctypes.POINTER(ctypes.c_uint32)).contents)
  • edit in trainmodel/src/drawmap.py at line 18
    [3.225][2.460:480]()
    print("blitted")
  • edit in trainmodel/src/drawmap.py at line 41
    [3.407][2.481:576](),[2.576][2.576:742]()
    helpers = ctypes.cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/helpers.so')
    helpers.render_tensor.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int, ctypes.c_int]
    helpers.render_tensor.restype = ctypes.POINTER(sdl2.surface.SDL_Surface)
  • edit in trainmodel/src/drawmap.py at line 43
    [3.278]
    [3.460]
  • replacement in trainmodel/src/helpers.rs at line 33
    [2.1409][2.1409:1431]()
    #[link(name = "SDL")]
    [2.1409]
    [2.1431]
    #[link(name = "SDL2")]
  • edit in trainmodel/src/helpers.rs at line 52
    [2.2171][2.2171:2319]()
    println!("surface: {:?}, pixels: {:?}, w: {}, h: {}", surface, unsafe { (*surface).pixels }, unsafe { (*surface).w }, unsafe { (*surface).h });
  • edit in trainmodel/src/helpers.rs at line 96
    [2.3998][2.3998:4084]()
    println!("Surface = {:?}, pixels = {:?}", surface, unsafe { (*surface).pixels });
  • file addition: nativehelpers.py (----------)
    [10.6]
    import ctypes
    import os
    import platform
    import sdl2
    native = ctypes.cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/helpers.' + ('dylib' if platform.system() == 'Darwin' else 'so'))
    native.render_tensor.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int, ctypes.c_int]
    native.render_tensor.restype = ctypes.POINTER(sdl2.surface.SDL_Surface)
    render_tensor = native.render_tensor
  • replacement in trainmodel/Makefile at line 1
    [3.11][2.0:27]()
    setup: venv src/helpers.so
    [3.11]
    [2.27]
    ifeq ($(shell uname -s),Darwin)
    SO_SUFFIX = dylib
    else
    SO_SUFFIX = so
    endif
    setup: venv src/helpers.$(SO_SUFFIX)
  • replacement in trainmodel/Makefile at line 16
    [2.53][2.53:250]()
    src/helpers.so: src/helpers.rs
    rustc --crate-name helpers --edition=2018 src/helpers.rs -o src/helpers.so --crate-type cdylib --emit=link -C embed-bitcode=no -C link-args="$$(sdl2-config --libs)"
    [2.53]
    [2.250]
    src/helpers.$(SO_SUFFIX): src/helpers.rs
    rustc --crate-name helpers --edition=2018 src/helpers.rs -o src/helpers.$(SO_SUFFIX) --crate-type cdylib --emit=link -C embed-bitcode=no