Skip to content

Develop#7

Merged
simonCatBot merged 18 commits into
masterfrom
develop
May 7, 2026
Merged

Develop#7
simonCatBot merged 18 commits into
masterfrom
develop

Conversation

@kiritigowda

Copy link
Copy Markdown
Owner

Fix Failures

kiritigowda and others added 18 commits May 5, 2026 23:16
The previous CI workflow cherry-picked ~40 test categories known to pass
and explicitly excluded failing ones (Graph.ReplicateNode, Graph.VerifyGraphLeak,
UserNode, vxConvertDepth, EqualizeHistogram, MeanStdDev, MinMaxLoc, Integral,
GaussianPyramid ORB, LaplacianPyramid, LaplacianReconstruct, OptFlowPyrLK,
Target, Matrix, vxMapRemapPatch, vxCreateImageFromChannel, etc.), giving a
false green CI status.

This change:
- Adds all 67 CTS test categories across 12 parallel jobs with no exclusions
- Uses build artifact sharing to avoid redundant rebuilds in each job
- Adds previously missing test groups: UserNode, vxConvertDepth (graph-mode),
  EqualizeHistogram, MeanStdDev, MinMaxLoc, Integral, GaussianPyramid (ORB),
  LaplacianPyramid, LaplacianReconstruct, OptFlowPyrLK, Target, Matrix,
  Image, vxMapRemapPatch, vxCopyRemapPatch, vxCreateImageFromChannel,
  GraphBase, GraphROI, Logging, SmokeTest, Distribution, vxBinOp16s,
  vxuBinOp16s, vxuNot, vxuCanny
- Fixes arithmetic_tests.rs weighted() calls to use f32 alpha (0.0-1.0)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The CTS only needs a C compiler and cmake. Remove ninja-build,
libgtest-dev, libopencv-dev, python3, and python3-pip:

- ninja-build: CTS uses Unix Makefiles by default, ninja is never invoked
- libgtest-dev: CTS has its own test engine, GTest is never linked
- libopencv-dev: only used by the off-by-default test_data_generator
  which requires the exact ancient OpenCV 2.4.7 anyway
- python3/python3-pip: not used in the build, the optional run_tests.py
  is Python 2 syntax and is not invoked by the CI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…Loc, EqualizeHist, UserNode

- Fix VX_TARGET_ANY constant to 0x13000 (was 0x00) and add VX_TARGET_STRING
- Fix vxConvertDepthNode scalar reference leak (missing vxReleaseScalar)
- Rewrite integral_image to correctly output U32 values with proper SAT formula
- Fix EqualizeHistogram: correct formula with cdf_min, proper rounding; wire
  graph-mode and vxuEqualizeHist to actual implementation (were stubs)
- Fix MinMaxLoc: separate minCount/maxCount params (was single num_min_max),
  count all occurrences, support S16 format, write native types
- Fix vxGetKernelParameterByIndex to check USER_KERNELS for user-defined kernels
- Enable CI on develop branch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- EqualizeHistogram: handle uniform image case (identity mapping when
  all pixels are the same value, scale == 0)
- MinMaxLoc: register kernel with 7 params (was 6) to match updated API
- MinMaxLoc: limit array items to array capacity to prevent overflow
- MinMaxLoc: use correct VX_ARRAY_CAPACITY constant (0x80E02)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rectory

Remove 61 unused files including planning documents, conformance reports,
build logs, CTS result dumps, scratch Rust files, test binaries, BMP test
images, and reference C++ source files that are no longer needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Clean overview of the project structure, prerequisites, and step-by-step
instructions for building rustVX and running the Khronos Conformance Test
Suite on Linux, macOS, and Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove redundant openvx-conformance.yml workflow that masked all failures
with continue-on-error at the step level. Keep conformance.yml as the
single CI workflow with continue-on-error at the job level so individual
test failures are visible but don't block the overall workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create MIT LICENSE file
- Update workspace license from "MIT OR Apache-2.0" to "MIT"
- Fix openvx-ffi to inherit workspace license/version/edition/authors
- Update placeholder author in Cargo.toml
- Fix CTS submodule link to match actual remote (simonCatBot)
- Add required -lm linker flags to Linux CTS build instructions
- Remove unverifiable Rust version claim

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…graph tests

- Fix vxCreateMatrixFromPatternAndOrigin cols/rows parameter swap
- Fix mean_std_dev to respect image valid region bounds
- Implement vxMapRemapPatch/vxUnmapRemapPatch with correct signatures
- Add VX_CONTEXT_OPTICAL_FLOW_MAX_WINDOW_DIMENSION support
- Fix vxuOpticalFlowPyrLK to use vx_scalar params (ABI fix)
- Fix ORB pyramid scale: use integer Gaussian blur (>>8) + nearest-neighbor resample
- Fix ORB pyramid dimensions: ceil(base * 2^(-level/4))
- Implement Laplacian pyramid using Burt-Adelson expand (zero-interleave + Gaussian + 4x)
- Implement Laplacian reconstruct with matching expand algorithm
- Fix LaplacianPyramidNode/ReconstructNode signatures and implementations
- Fix vxReplicateNode signature: (graph, node, *const vx_bool, vx_uint32)
- Fix vxSetMetaFormatAttribute/vxSetMetaFormatFromReference to store attributes
- Fix vxSetKernelAttribute to accept kernel attributes
- Fix vxAddParameterToKernel to validate and reject VX_TYPE_DELAY outputs
- Fix vxRemoveKernel to reject built-in kernel removal
- Add user kernel validator callback invocation in vxVerifyGraph
- Add user kernel init/deinit callback invocation in graph execution
- Fix vxGetKernelParameterByIndex to return correct direction from user kernel params

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…yrLK, and virtual pyramids

- Fix VxKernelValidateF type signature to use *mut vx_meta_format (array)
  instead of single vx_reference, preventing segfault when CTS callbacks
  access metas[1]
- Allocate one VxMetaFormat per parameter in validator invocation
- Add missing num_iterations, use_initial_estimate, window_dimension
  params to vxOpticalFlowPyrLKNode
- Add virtual pyramid dimension resolution in vxVerifyGraph
- Add vxWaitGraph infinite loop protection for non-running graphs
- Fix vxCreateVirtualRemap to extract context from graph properly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix OptFlowPyrLK kernel registration: 7 -> 10 params to match the
  full OpenVX spec (was causing vxSetParameterByIndex to fail at index 7)
- Fix vxVerifyGraph deadlock: drop GRAPHS_DATA lock before calling user
  kernel validator callbacks, which may call vxQueryReference and need
  to re-acquire GRAPHS_DATA (Rust Mutex is not reentrant)
- Fix dispatch_kernel_with_border_impl: extract user kernel callback
  function pointers and release USER_KERNELS lock before invoking them,
  preventing deadlock when callbacks call back into the API

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ci: run all 67 CTS test categories without exclusions
… images

- Fix vxMapImagePatch NV12/NV21 UV plane addressing: return Convention B
  (dim=full image size, step=2, stride_x=1) instead of Convention A
  (dim=plane size, step=1, stride_x=2), matching the CTS check function's
  expected indexing pattern
- Fix vxCreateImageFromChannel to share parent memory instead of copying:
  for external memory parents, point to parent's plane pointer directly;
  for internal memory parents, share the parent's data Arc with a
  channel_plane_offset to access the correct plane
- Add channel_plane_offset field to VxCImage struct for channel image
  data sharing, used in vxCopyImagePatch and vxMapImagePatch offset
  calculations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…s safety

- Add parent_plane_index to VxCImage for channel images from handle
  parents, fixing ChannelFromHandle YUV4 U/V tests (6 new passes)
- Clamp vxCopyImagePatch region to actual plane dimensions, preventing
  out-of-bounds reads on subsampled NV12/NV21 UV planes
- Apply OpenVX spec scale formula to vxFormatImagePatchAddress1d/2d
  for correct subsampled plane offset computation
- Use Convention B addressing (full-image dims, step_x/step_y=2,
  scale_x/scale_y=512) for NV12/NV21 UV in both handle and internal
  memory paths of vxMapImagePatch
- Update CTS submodule with ct_image_copy_impl NV12/NV21 UV fix

All 559 baseline image tests pass with zero crashes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Point submodule to kiritigowda/OpenVX-cts which contains the
NV12/NV21 ct_image_copy_impl fix needed for CI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…Patch

Use full-image dimensions with subsampling scale factors (dim_x=full_width,
dim_y=full_height, step_x=2, step_y=2, scale_x=512, scale_y=512) for
NV12/NV21 UV plane in both external and internal memory paths. This matches
the CTS own_check_image_patch_plane_vx_layout verification formula.

Also fix ct_image_to_vx_image and ct_image_from_vx_image to use full-image
coordinates for the rect parameter per the OpenVX spec, and simplify stride
computation. Revert CTS submodule URL to simonCatBot/OpenVX-cts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch CTS submodule URL from simonCatBot fork to the official
KhronosGroup/OpenVX-cts repository at openvx_1.3 branch HEAD.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: resolve image-ops NV12/NV21 and channel image failures
@simonCatBot simonCatBot merged commit ae91819 into kiritigowda:master May 7, 2026
10 of 12 checks passed
@kiritigowda kiritigowda deleted the develop branch May 7, 2026 17:43
simonCatBot pushed a commit that referenced this pull request May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants