Skip to content

patternspandemic/s7-kinc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

s7-kinc

Here you’ll find Kinc bindings for s7 Scheme, as well as an s7 Scheme interpreter embedded into a Kinc application meant for interactive development.

Status

Work in Progress, not usable by others.

Progress of Documentation

  • [ ] Documentation
    • [ ] Getting Started
    • [ ] Project Layout
    • [ ] Naming
    • [ ] Building
    • [ ] Interactive Development
      • [ ] Developer shell environment vars
        • [ ] S7KINC_DEV_SHELL
        • [ ] S7KINC_DEV_ROOT
    • [ ] main.scm and special defines, hooks, reqlet, helper procs (i.e. with/make-g4-*-buffer), etc.
    • [ ] Examples

Progress of Application

  • [-] s7-kinc
    • [X] embed s7 interpreter
    • [X] allow access to the interpreter via a socket server
    • [X] redirect s7’s stderr out to socket clients
    • [ ] organize logging
    • [X] get .so reloads to work. Done, but existing objects are still tied to previously loaded c-functions. New c-objects use newly loaded so.
    • [-] Builds
      • [-] release build with stripped dependencies / source
      • [ ] assert / s7 error stripping?
      • [X] development build with shell / load-paths overridden

Some Notes

  • Prebuilt shared libs for kinc bindings seem to work, but themselves are not linked to some needed functions (sds, s7ctypes). Seems not to be a problem as they’re found when loaded into the main application.
  • While bindings for kinc_init and kinc_start work, the main loop is kept on the C side to avoid scheme-side errors halting the loop (which occurs when it’s started on the scheme side). This way the REPL remains useful.
  • opaque types
    • kinc_compute_constant_location
    • kinc_compute_shader
    • kinc_compute_texture_unit
    • kinc_event
    • kinc_fiber
    • kinc_mutex
    • kinc_semaphore
    • kinc_thread
    • kinc_thread_local
    • kinc_uber_mutex
    • kinc_g4_constant_location
    • kinc_g4_index_buffer
    • kinc_g4_shader
    • kinc_g4_texture_array
    • kinc_g4_texture_unit
    • kinc_g4_vertex_buffer
    • kinc_g5_command_list
    • kinc_g5_compute_shader
    • kinc_g5_constant_location
    • kinc_g5_index_buffer
    • kinc_g5_shader
    • kinc_g5_texture_unit
    • kinc_g5_vertex_buffer
    • kinc_video

Progress of Bindings

  • [-] Kinc
    • [X] color
    • [X] display
    • [ ] error
    • [-] image
    • [ ] log
    • [X] system
    • [ ] video
    • [X] window
    • [ ] audio1
      • [ ] audio
      • [ ] sound
      • [ ] soundstream
    • [ ] audio2
    • [ ] compute
    • [X] graphics1
    • [ ] graphics2
    • [-] graphics4
      • [X] constantlocation
      • [-] graphics
      • [X] indexbuffer
      • [-] pipeline
      • [ ] rendertarget
      • [X] shader
      • [ ] texture
      • [ ] texturearray
      • [X] textureunit
      • [X] usage
      • [-] vertexbuffer
      • [X] vertexstructure
    • [ ] graphics5
      • [ ] commandlist
      • [ ] compute
      • [ ] constantbuffer
      • [ ] constantlocation
      • [ ] graphics
      • [ ] indexbuffer
      • [ ] pipeline
      • [ ] raytrace
      • [ ] rendertarget
      • [ ] shader
      • [ ] texture
      • [ ] textureunit
      • [ ] vertexbuffer
      • [ ] vertexstructure
    • [ ] input
      • [ ] acceleration
      • [ ] gamepad
      • [ ] keyboard
      • [ ] mouse
      • [ ] pen
      • [ ] rotation
      • [ ] surface
    • [ ] io
      • [ ] filereader
      • [ ] filewriter
    • [ ] math
      • [ ] core
      • [ ] matrix
      • [ ] quaternion
      • [ ] random
      • [ ] vector
    • [ ] network
      • [ ] http
      • [ ] socket
    • [ ] simd
    • [ ] threads
      • [ ] atomic
      • [ ] event
      • [ ] fiber
      • [ ] mutex
      • [ ] semaphore
      • [ ] thread
      • [ ] threadlocal
    • [ ] vr

Linux Backend Not Implemented

The following functions are ‘!’ (not yet implemented / empty definition), or ‘~’ (may possibly be improved), in Kinc’s Linux backend:

display.h

  • ~ kinc_display_available
  • ~ kinc_display_name
  • ~ kinc_display_count_available_modes
  • ~ kinc_display_available_mode

window.h

  • ! kinc_window_create
  • ! kinc_window_destroy
  • ! kinc_count_windows
  • ! kinc_window_resize
  • ! kinc_window_move
  • ! kinc_window_change_features
  • ! kinc_window_change_framebuffer
  • ! kinc_window_x
  • ! kinc_window_y
  • ! kinc_window_display
  • ! kinc_window_show
  • ! kinc_window_hide
  • ! kinc_window_set_ppi_changed_callback
  • ! kinc_window_vsynced

system.h

  • ! kinc_login
  • ! kinc_unlock_achievement
  • ! kinc_disallow_user_change
  • ! kinc_allow_user_change
  • ! kinc_set_keep_screen_on

graphics4/graphics.h (opengl backend)

  • ~ kinc_g4_render_occlusion_query -> in backend / not in api (OpenGL only?)
  • ~ kinc_g4_start_occlusion_query -> in api / not in backend (Direct3D only?)
  • ~ kinc_g4_end_occlusion_query - in api / not in backend (Direct3D only?)

About

Kinc and s7 Scheme Bound Together

Resources

License

Stars

Watchers

Forks

Releases

No releases published