| Python support is still new and coming online, but is entirely functional. |
| The library's pure C (WASM friendly) API's are completely exposed to Python. Our next goal is to work on official [Wheels](https://pythonwheels.com/), once the API is settled and more examples are written. |
| |
| The Python integration first tries to use native .so's in the basisu_py |
| directory. If they don't exist, it tries the slower and single threaded WASM |
| fallbacks under basisu_py/wasm, which requires wasmtime for Python to be |
| installed. Some tests require an input.ktx2 or test.ktx2 to be in the current |
| directory. |
| |
| Building: |
| |
| Under the repo's root directory - build the native SO's: |
| |
| ``` |
| mkdir build_python |
| cd build_python |
| cmake -DBASISU_BUILD_PYTHON=ON .. |
| make |
| ``` |
| |
| Build the WASM modules (see README_WASI.md file for instructions on how to |
| install the WASI SDK, which is required): |
| |
| ``` |
| mkdir build_wasm_st |
| cd build_wasm_st |
| cmake .. -DCMAKE_TOOLCHAIN_FILE=$WASI_SDK_PATH/share/cmake/wasi-sdk.cmake -DCMAKE_BUILD_TYPE=Release -DBASISU_WASM_THREADING=OFF |
| make |
| ``` |
| |
| --- |
| |
| Running Tests |
| ------------- |
| |
| The tests assume the current directory is "python". Under Windows we've tested with Python v3.12.10, and under Linux v3.12.13. |
| |
| Higher-level tests: |
| |
| - python3 -m tests.test_backend_loading |
| - python3 -m tests.test_basic_wasm_selection |
| - python3 -m tests.test_basic_backend_selection |
| - python3 -m tests.test_basic_decode |
| - python3 -m tests.test_basic_transcode |
| - python3 -m tests.test_compress_swirl |
| - python3 -m tests.test_compress_swirl_hdr |
| - python3 -m tests.test_transcoder_astc |
| - python3 -m tests.test_transcoder_backend_loading |
| - python3 -m tests.test_transcoder_end_to_end |
| - python3 -m tests.test_transcoder_end_to_end_hdr |
| - python3 -m tests.test_transcoder_helpers |
| |
| Low-level tests (used while bringing up the codec): |
| |
| - python3 -m lowlevel_test_native.basic_test |
| - python3 -m lowlevel_test_native.test_transcoder_basic |
| - python3 -m lowlevel_test_native.example_capi_python |
| - python3 -m lowlevel_test_wasm.basic_test |
| - python3 -m lowlevel_test_wasm.compress_test |
| - python3 -m lowlevel_test_wasm.compress_test_float |
| |
| Example output: |
| |
| ``` |
| richg@ryzen9:/mnt/c/dev/bu_1_22_snapshot2/basis_universal-master/python$ python3 -m tests.test_backend_loading |
| ========== BACKEND LOADING TEST ========== |
| |
| Testing native backend... |
| [Encoder] Using native backend |
| [OK] Native backend loaded |
| Hello from basisu_wasm_api.cpp version 200 |
| Native get_version() ? 200 |
| Native alloc() returned ptr = 685784256 |
| Native free() OK |
| [OK] Native basic operations working. |
| |
| |
| Testing WASM backend... |
| [WASM Encoder] Loaded: /mnt/c/dev/bu_1_22_snapshot2/basis_universal-master/python/basisu_py/wasm/basisu_module_st.wasm |
| [Encoder] Using WASM backend |
| [OK] WASM backend loaded |
| Hello from basisu_wasm_api.cpp version 200 |
| WASM get_version() ? 200 |
| WASM alloc() returned ptr = 26920160 |
| WASM free() OK |
| [OK] WASM basic operations working. |
| |
| |
| ========== DONE ========== |
| ``` |