mirror of
https://github.com/BinomialLLC/basis_universal.git
synced 2026-06-13 10:49:14 +00:00
91 lines
2.9 KiB
Markdown
91 lines
2.9 KiB
Markdown
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 ==========
|
|
```
|