Rebuilt the rustVX vision implementation to fix CTS (Conformance Test Suite) failures. Focused on the key issues identified in the CTS test reports.
Problem: References were starting with count 0 instead of 1
Impact: vxRetainReferenceBase test failing - expected count 1, got 0
Fix Applied:
- Modified
vxCreateContext()inc_api.rs- initializes reference count to 1 at creation - Modified
vxCreateGraph()inc_api.rs- initializes reference count to 1, also registers graph in unified registry - Modified
vxRetainReference()inc_api.rs- now returns VX_ERROR_INVALID_REFERENCE if reference doesn't exist in registry
Problem: Graphs created via c_api weren't visible to vxQueryReference in unified_c_api Impact: Graph query operations failing
Fix Applied:
- Modified
vxCreateGraph()to register graphs in bothGRAPHS(c_api) andGRAPHS_DATA(unified_c_api) registries - Added proper unified graph data structure creation with all required fields
Problem: Several functions returning incorrect error codes per CTS expectations Impact: Tests expecting specific error codes failing
Fix Applied:
vxGetStatus()now returnsVX_ERROR_NO_RESOURCES(-12) for null reference (per CTS expectation)- Error constants aligned in
c_api.rs
Problem: Already fixed - returns vx_bool (0 or 1) not vx_status
Location: unified_c_api.rs line 390-411
Status: Already correct - returns 0 (vx_false_e) for null graph, not error code
Problem: vxQueryGraph only checking unified registry, not c_api registry Impact: Graphs created via c_api not queryable
Fix Applied:
- Added check for graph in c_api registry within VX_GRAPH_ATTRIBUTE_STATE case
-
/home/simon/.openclaw/workspace/rustVX/openvx-core/src/c_api.rsvxCreateContext()- reference count initializationvxCreateGraph()- complete rewrite with unified registry supportvxRetainReference()- proper validationvxGetStatus()- correct error code
-
/home/simon/.openclaw/workspace/rustVX/openvx-core/src/unified_c_api.rsvxQueryGraph()- added c_api registry check
After building with cargo build, run CTS tests to verify:
cd openvx-rust/OpenVX-cts/build
./bin/test_vx -f base -e "TestCaseName" --verboseSpecific tests to verify:
SmokeTestBase.vxRetainReferenceBase- should now passSmokeTestBase.vxReleaseReferenceBase- should now passGraphBase.vxIsGraphVerifiedBase- should return 0 (false) for nullGraphBase.vxQueryGraph- should handle c_api graphsSmokeTestBase.vxGetStatus- should return -12 for null
The following may still need attention:
- vxLoadKernels - May need additional implementation for test module loading
- vxUnloadKernels - Cleanup logic may need refinement
- Reference name handling - vxQueryReference for VX_REFERENCE_NAME already fixed
- Node creation - May need similar cross-registry registration
cd /home/simon/.openclaw/workspace/rustVX
cargo build --releaseThe shared library will be at target/release/libopenvx_core.so