Skip to content

images: Remove global variables to allow for parallel execution#2696

Open
rjodinchr wants to merge 2 commits into
KhronosGroup:mainfrom
rjodinchr:image-streams
Open

images: Remove global variables to allow for parallel execution#2696
rjodinchr wants to merge 2 commits into
KhronosGroup:mainfrom
rjodinchr:image-streams

Conversation

@rjodinchr
Copy link
Copy Markdown
Collaborator

This patch removes the use of global state across the image conformance tests and replaces it with a passed context_t structure.

The goal of this change is to be able to run image_streams in parallel by removing global variables as they were not thread-safe. This refactoring had to be applied everywhere because image_streams needs to update test_format_set_fn, which is used by all the image tests.

Key changes:

  • Removed global flags such as gTestSmallImages, gTestMipmaps, gDebugTrace, gEnablePitch, etc.
  • Initialized a context_t struct in the main.cpp files to store test configuration.
  • Updated test function signatures across clCopyImage, clFillImage, clGetInfo, and kernel_read_write to accept const context_t &ctx.

@rjodinchr
Copy link
Copy Markdown
Collaborator Author

Many diffs are needed to comply with clang-format.

@rjodinchr rjodinchr changed the title images: Temove global variables to allow for parallel execution images: Remove global variables to allow for parallel execution May 18, 2026
@rjodinchr rjodinchr force-pushed the image-streams branch 3 times, most recently from 5af5e97 to ea162c1 Compare May 27, 2026 07:08
The primary goal of this commit is to improve CI tracking by
introducing a new golden format that can differentiate test results
based on command-line arguments. To cleanly extract and pass these
arguments into the JSON result outputs, the command-line parsing
infrastructure across the CTS required a significant refactoring.

Key changes include:
* Enhanced CI Tracking: Updates `ci/compare_results.py`,
`ci/pocl/golden.json`, and `saveResultsToJson` to include and evaluate
an `args` key. The golden JSON now uses a nested format mapping
specific argument strings (e.g., `--wimpy -1`) to their expected
results, allowing the CI to validate the same binary run under
different parameters.
* Centralized Parsing Infrastructure: Introduces the `ParseArgsFn`
callback and `runTestHarnessWithCheckAndParse`. This offloads custom
argument parsing from individual test `main()` functions and safely
extracts the arguments used so they can be logged by the test harness.
* Help Text Consolidation: Replaces fragmented `printUsage()`
functions with unified `help` string references populated directly by
the standard parsing callbacks.

[run-test: test_computeinfo]
[run-test: test_bruteforce -1 -w]
[run-test: test_cl_copy_images small_images --num-worker-threads 2 1D]
[run-test: test_image_streams 1D --num-worker-threads 2 CL_R CL_FILTER_NEAREST]
@rjodinchr
Copy link
Copy Markdown
Collaborator Author

Depends on #2706

@rjodinchr rjodinchr force-pushed the image-streams branch 5 times, most recently from d22d2f6 to 159f333 Compare May 28, 2026 17:20
This patch removes the use of global state across the image
conformance tests and replaces it with a passed `context_t` structure.

The goal of this change is to be able to run `image_streams` in
parallel by removing global variables as they were not
thread-safe. This refactoring had to be applied everywhere because
`image_streams` needs to update `test_format_set_fn`, which is used by
all the image tests.

Key changes:
* Removed global flags such as `gTestSmallImages`, `gTestMipmaps`, `gDebugTrace`, `gEnablePitch`, etc.
* Initialized a `context_t` struct in the `main.cpp` files to store test configuration.
* Updated test function signatures across `clCopyImage`, `clFillImage`, `clGetInfo`, and `kernel_read_write` to accept `const context_t &ctx`.

[run-test: test_image_streams 1D --num-worker-threads 2 CL_A CL_FILTER_NEAREST]
[run-test: test_cl_copy_images small_images --num-worker-threads 2 1D]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants