Skip to content
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
1b97ff1
Media Libraries - rocDecode & rocJPEG integration (#1)
kiritigowda Jan 26, 2026
11eebe9
Review - Fixes
kiritigowda Jan 28, 2026
b7bc6b6
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Jan 28, 2026
77e3a5a
Fix - pre-commit
kiritigowda Jan 28, 2026
5a93910
Fix - Fetch source updates
kiritigowda Jan 28, 2026
e4fe5c4
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Jan 30, 2026
4cd6c52
Media - Submodules and reviewer comments fix
kiritigowda Feb 4, 2026
29a34d5
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 4, 2026
d2f3c1c
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 4, 2026
16e7031
Packaging - Cleanup deps
kiritigowda Feb 4, 2026
d5fe48f
Tests - Timeout time enhancement
kiritigowda Feb 4, 2026
632a343
CMakeLists - Media lib location fix
kiritigowda Feb 4, 2026
bc34d1e
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 4, 2026
09af194
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 6, 2026
40ff6c9
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 6, 2026
b3914b5
CMakelists - Resolve conflicts
kiritigowda Feb 6, 2026
46a771d
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 6, 2026
c832d93
Claude.md - updates
kiritigowda Feb 6, 2026
3506c93
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 6, 2026
88b3e94
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 9, 2026
d9494ce
Test - Add info tests
kiritigowda Feb 9, 2026
ac3ebb0
Test - refactor
kiritigowda Feb 10, 2026
7aef436
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 10, 2026
650e897
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 10, 2026
342db06
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 10, 2026
82a4c33
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 11, 2026
8d49687
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 23, 2026
9d15e4a
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 24, 2026
9dcd1b4
Update install_rocm_from_artifacts.py
kiritigowda Feb 24, 2026
8733de0
Update BUILD_TOPOLOGY.toml
kiritigowda Feb 24, 2026
99b11be
Update fetch_test_configurations.py - Add tests
kiritigowda Feb 25, 2026
d107593
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 25, 2026
42a2f97
Packaging - use pr#3579
kiritigowda Feb 26, 2026
fff2a18
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 26, 2026
3a2578a
CLAUDE.md - reset
kiritigowda Feb 26, 2026
137b299
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 26, 2026
75e12da
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 27, 2026
6015421
Test - enhancements
kiritigowda Feb 28, 2026
ed7f639
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Feb 28, 2026
9c46d7a
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Mar 2, 2026
c47d517
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Mar 7, 2026
d5901eb
Merge branch 'main' into kg/media-libs-for-therock
kiritigowda Mar 11, 2026
67db21c
Merge branch 'main' into kg/media-libs-for-therock
AryanSalmanpour Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/multi_arch_build_portable_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# 4. comm-libs (per-arch) - RCCL (parallel to math-libs)
# 5. dctools-core (generic) - RDC (parallel to math-libs)
# 6. profiler-apps (generic) - rocprofiler-systems (parallel to math-libs)
# 7. media (generic) - sysdeps-amd-mesa, rocdecode (todo), rocjpeg (todo)
# 7. media-libs (generic) - sysdeps-amd-mesa, rocdecode, rocjpeg
#
# Artifacts flow between stages via S3 using the artifact_manager.py tool.
#
Expand Down Expand Up @@ -684,10 +684,10 @@ jobs:
--build-dir build

# ==========================================================================
# STAGE: media (generic)
# STAGE: media-libs (generic)
# ==========================================================================
media:
name: Stage - Media
media-libs:
name: Stage - Media Libs
needs: foundation
runs-on: azure-linux-scale-rocm
timeout-minutes: 180 # 3 hours
Expand All @@ -698,7 +698,7 @@ jobs:
options: -v /runner/config:/home/awsconfig/
env:
AWS_SHARED_CREDENTIALS_FILE: /home/awsconfig/credentials.ini
STAGE_NAME: media
STAGE_NAME: media-libs
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
8 changes: 8 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,11 @@
path = math-libs/libhipcxx
url = https://github.com/ROCm/libhipcxx.git
branch = amd-develop
[submodule "rocdecode"]
path = media-libs/rocdecode
url = https://github.com/ROCm/rocDecode.git
branch = therock
[submodule "rocjpeg"]
path = media-libs/rocjpeg
url = https://github.com/ROCm/rocjpeg.git
branch = therock
Comment thread
kiritigowda marked this conversation as resolved.
Outdated
35 changes: 27 additions & 8 deletions BUILD_TOPOLOGY.toml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,11 @@ disable_platforms = ["windows"]
description = "IREE integration submodules"
submodules = ["iree", "fusilli"]

[source_sets.media-libs]
description = "ROCm media libraries submodules"
submodules = ["rocdecode", "rocjpeg"]
disable_platforms = ["windows"]

# ==============================================================================
# BUILD STAGES - Pipeline jobs that build sets of artifact groups
# ==============================================================================
Expand Down Expand Up @@ -173,9 +178,9 @@ artifact_groups = ["iree-libs"]
description = "Profiler applications (depends on profiler-core)"
artifact_groups = ["profiler-apps"]

[build_stages.media]
[build_stages.media-libs]
Comment thread
kiritigowda marked this conversation as resolved.
description = "Media Libraries"
artifact_groups = ["media"]
artifact_groups = ["media-libs"]

# ==============================================================================
# ARTIFACT GROUPS - Logical groupings of related artifacts
Expand Down Expand Up @@ -285,13 +290,11 @@ type = "generic"
artifact_group_deps = ["hip-runtime"]
source_sets = ["iree-libs"]

[artifact_groups.media]
[artifact_groups.media-libs]
description = "Media Libraries"
type = "generic"
artifact_group_deps = ["third-party-sysdeps", "base"]
# TODO: rocm-systems included for projects/hip/VERSION (see CMakeLists.txt)
# amd-mesa disabled on Windows via source_set
source_sets = ["amd-mesa", "rocm-systems"]
source_sets = ["amd-mesa", "media-libs"]

# ==============================================================================
# ARTIFACTS - The actual build outputs that can be transmitted between stages
Expand All @@ -308,10 +311,10 @@ artifact_deps = [] # No dependencies on other artifacts
feature_group = "CORE" # Part of core, enabled by default

[artifacts.sysdeps-amd-mesa]
artifact_group = "media"
artifact_group = "media-libs"
type = "target-neutral"
artifact_deps = ["sysdeps"]
feature_group = "MEDIA"
feature_group = "MEDIA_LIBS" # Controlled by THEROCK_ENABLE_MEDIA_LIBS
disable_platforms = ["windows"]

[artifacts.sysdeps-expat]
Expand Down Expand Up @@ -525,6 +528,22 @@ type = "target-neutral"
artifact_deps = ["core-runtime", "core-hip", "hipdnn"]
disable_platforms = ["windows"]

# --- Media Integration ---

[artifacts.rocdecode]
artifact_group = "media-libs"
type = "target-neutral"
artifact_deps = ["core-runtime", "core-hip", "base", "sysdeps", "sysdeps-amd-mesa"]
feature_group = "MEDIA_LIBS" # Controlled by THEROCK_ENABLE_MEDIA_LIBS
disable_platforms = ["windows"]

[artifacts.rocjpeg]
artifact_group = "media-libs"
type = "target-neutral"
artifact_deps = ["core-runtime", "core-hip", "base", "sysdeps", "sysdeps-amd-mesa"]
feature_group = "MEDIA_LIBS" # Controlled by THEROCK_ENABLE_MEDIA_LIBS
disable_platforms = ["windows"]

# --- Communication Libraries (per-arch) ---

[artifacts.rccl]
Expand Down
11 changes: 9 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,10 @@ ctest --test-dir build
cmake -B build -GNinja \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DTHEROCK_AMDGPU_FAMILIES=gfx1100
-DTHEROCK_AMDGPU_FAMILIES=gfx1100 \
-DTHEROCK_ENABLE_SYSDEPS_AMD_MESA=ON \
-DTHEROCK_ENABLE_ROCDECODE=ON \
-DTHEROCK_ENABLE_ROCJPEG=ON
```
Comment thread
kiritigowda marked this conversation as resolved.

**Debug build for specific component:**
Expand All @@ -96,7 +99,10 @@ cmake -B build -GNinja \
cmake -B build -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-Drocblas_BUILD_TYPE=RelWithDebInfo \
-DTHEROCK_AMDGPU_FAMILIES=gfx1100
-DTHEROCK_AMDGPU_FAMILIES=gfx1100 \
-DTHEROCK_ENABLE_SYSDEPS_AMD_MESA=ON \
-DTHEROCK_ENABLE_ROCDECODE=ON \
-DTHEROCK_ENABLE_ROCJPEG=ON
```

### Top-Level Targets
Expand Down Expand Up @@ -171,6 +177,7 @@ base/ # rocm-systems (driver, runtime foundations)
compiler/ # LLVM/Clang/LLD, device libraries
core/ # HIP, CLR, ROCr
math-libs/ # rocBLAS, rocFFT, etc.
media-libs/ # rocdecode, and rocJPEG.
ml-libs/ # MIOpen, composable_kernel
comm-libs/ # RCCL
profiler/ # rocprofiler, roctracer
Expand Down
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ option(THEROCK_ENABLE_MATH_LIBS "Enable building of math libraries" "${THEROCK_E
option(THEROCK_ENABLE_ML_LIBS "Enable building of ML libraries" "${THEROCK_ENABLE_ALL}")
option(THEROCK_ENABLE_PROFILER "Enable building the profiler libraries" "${THEROCK_ENABLE_ALL}")
option(THEROCK_ENABLE_DC_TOOLS "Enable building of data center tools" "${THEROCK_ENABLE_ALL}")
option(THEROCK_ENABLE_MEDIA_LIBS "Enable building of Media libraries" "${THEROCK_ENABLE_ALL}")
option(THEROCK_ENABLE_HOST_MATH "Build all bundled host math libraries by default" OFF)
option(THEROCK_RESET_FEATURES "One-shot flag which forces all feature flags to their default state for this configuration run" OFF)
# TODO(iree-org/fusilli/issues/57): Enable fusilli build once multi-arch support lands.
Expand Down Expand Up @@ -372,6 +373,8 @@ set(THEROCK_BUNDLED_NUMACTL)
set(THEROCK_BUNDLED_SQLITE3)
set(THEROCK_BUNDLED_ZLIB)
set(THEROCK_BUNDLED_ZSTD)
set(THEROCK_BUNDLED_AMDMESA)


if(THEROCK_BUNDLE_SYSDEPS)
message(STATUS "Building with bundled system dependencies enabled")
Expand All @@ -398,6 +401,9 @@ if(THEROCK_BUNDLE_SYSDEPS)
set(THEROCK_BUNDLED_SQLITE3 therock-sqlite3)
set(THEROCK_BUNDLED_ZLIB therock-zlib)
set(THEROCK_BUNDLED_ZSTD therock-zstd)
if(THEROCK_ENABLE_SYSDEPS_AMD_MESA)
set(THEROCK_BUNDLED_AMDMESA therock-amd-mesa)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(THEROCK_BUNDLED_BZIP2 therock-bzip2)
set(THEROCK_BUNDLED_SQLITE3 therock-sqlite3)
Expand Down Expand Up @@ -440,6 +446,9 @@ add_subdirectory(comm-libs)
add_subdirectory(math-libs)
add_subdirectory(ml-libs)
add_subdirectory(iree-libs)
if(THEROCK_ENABLE_SYSDEPS_AMD_MESA)
Comment thread
kiritigowda marked this conversation as resolved.
Outdated
add_subdirectory(media-libs)
endif()

if(THEROCK_BUILD_TESTING)
add_subdirectory(examples)
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ enable/disable selected subsets:
| `-DTHEROCK_ENABLE_ML_LIBS=OFF` | Disables all ML libraries |
| `-DTHEROCK_ENABLE_PROFILER=OFF` | Disables profilers |
| `-DTHEROCK_ENABLE_DC_TOOLS=OFF` | Disables data center tools |
| `-DTHEROCK_ENABLE_MEDIA_LIBS=OFF` | Disables all media libraries |

Individual features can be controlled separately (typically in combination with
`-DTHEROCK_ENABLE_ALL=OFF` or `-DTHEROCK_RESET_FEATURES=ON` to force a
Expand Down Expand Up @@ -185,6 +186,9 @@ minimal build):
| `-DTHEROCK_ENABLE_RDC=ON` | Enables ROCm Data Center Tool (Linux only) |
| `-DTHEROCK_ENABLE_FUSILLI_PLUGIN=ON` | Enables Fusilli Plugin |
| `-DTHEROCK_ENABLE_LIBHIPCXX=ON` | Enables libhipcxx |
| `-DTHEROCK_ENABLE_SYSDEPS_AMD_MESA=ON` | Enables AMD Mesa for media libs (Linux only) |
| `-DTHEROCK_ENABLE_ROCDECODE=ON` | Enables rocDecode video decoder (Linux only) |
| `-DTHEROCK_ENABLE_ROCJPEG=ON` | Enables rocJPEG JPEG decoder (Linux only) |

> [!TIP]
> Enabling any features will implicitly enable their *minimum* dependencies. Some
Expand Down
1 change: 1 addition & 0 deletions build_tools/analyze_build_times.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
"dctools",
"profiler",
"ml-libs",
"media-libs",
}

# Regex to parse artifact filenames: <project>_<variant>[_suffix].tar.xz
Expand Down
17 changes: 17 additions & 0 deletions build_tools/build_python_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,14 @@ def run(args: argparse.Namespace):
tarball_compression=args.devel_tarball_compression,
)

# populate the media package
media = PopulatedDistPackage(params, logical_name="media")
media.populate_runtime_files(
params.filter_artifacts(
filter=functools.partial(media_artifact_filter),
)
)

if args.build_packages:
build_packages(args.dest_dir, wheel_compression=args.wheel_compression)

Expand Down Expand Up @@ -126,6 +134,15 @@ def libraries_artifact_filter(target_family: str, an: ArtifactName) -> bool:
return libraries


def media_artifact_filter(an: ArtifactName) -> bool:
media = an.name in [
"rocdecode",
"rocjpeg",
"sysdeps-amd-mesa",
]
return media


def main(argv: list[str]):
p = argparse.ArgumentParser()
p.add_argument(
Expand Down
8 changes: 4 additions & 4 deletions build_tools/bump_submodules.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,10 @@ def parse_components(components: list[str]) -> list[list]:
else:
arguments.append("--no-include-debug-tools")

if "rocm-media" in components:
arguments.append("--include-rocm-media")
if "media-libs" in components:
arguments.append("--include-media-libs")
else:
arguments.append("--no-include-rocm-media")
arguments.append("--no-include-media-libs")

if "math-libraries" in components:
arguments.append("--include-math-libraries")
Expand Down Expand Up @@ -204,7 +204,7 @@ def main(argv):
profiler,
iree-libs,
debug-tools,
rocm-media,
media-libs,
math-libraries
""",
)
Expand Down
2 changes: 2 additions & 0 deletions build_tools/detail/linux_portable_build_in_container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ set -o xtrace
time cmake -GNinja -S /therock/src -B "$OUTPUT_DIR/build" \
-DTHEROCK_BUNDLE_SYSDEPS=ON \
-DTHEROCK_ENABLE_SYSDEPS_AMD_MESA=ON \
-DTHEROCK_ENABLE_ROCDECODE=ON \
-DTHEROCK_ENABLE_ROCJPEG=ON \
${PYTHON_EXECUTABLES_ARG} \
"$@"
time cmake --build "$OUTPUT_DIR/build" --target therock-archives therock-dist
10 changes: 6 additions & 4 deletions build_tools/fetch_sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ def get_enabled_projects(args) -> List[str]:
projects.extend(["rocm-systems"])
if args.include_ml_frameworks:
projects.extend(args.ml_framework_projects)
if args.include_rocm_media:
projects.extend(args.rocm_media_projects)
if args.include_media_libs:
projects.extend(args.media_libs_projects)
if args.include_iree_libs:
projects.extend(args.iree_libs_projects)
if args.include_math_libraries:
Expand Down Expand Up @@ -463,7 +463,7 @@ def main(argv):
help="Include machine learning frameworks that are part of ROCM",
)
parser.add_argument(
"--include-rocm-media",
"--include-media-libs",
default=True,
action=argparse.BooleanOptionalAction,
help="Include media projects that are part of ROCM",
Expand Down Expand Up @@ -509,7 +509,7 @@ def main(argv):
default=[],
)
parser.add_argument(
"--rocm-media-projects",
"--media-libs-projects",
nargs="+",
type=str,
default=(
Expand All @@ -518,6 +518,8 @@ def main(argv):
else [
# Linux only projects.
"amd-mesa",
"rocdecode",
"rocjpeg",
Comment thread
kiritigowda marked this conversation as resolved.
Outdated
]
),
)
Expand Down
2 changes: 2 additions & 0 deletions build_tools/github_actions/build_configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ def build_configure(manylinux=False):
)
cmd.append(f"-DTHEROCK_DIST_PYTHON_EXECUTABLES={python_executables}")
cmd.append("-DTHEROCK_ENABLE_SYSDEPS_AMD_MESA=ON")
cmd.append("-DTHEROCK_ENABLE_ROCDECODE=ON")
cmd.append("-DTHEROCK_ENABLE_ROCJPEG=ON")

if PLATFORM == "windows":
# VCToolsInstallDir is required for build. Throwing an error if environment variable doesn't exist
Expand Down
18 changes: 18 additions & 0 deletions build_tools/github_actions/fetch_test_configurations.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,24 @@ def _get_script_path(script_name: str) -> str:
"platform": ["linux"],
"total_shards": 1,
},
# rocdecode
"rocdecode": {
"job_name": "rocdecode",
"fetch_artifact_args": "--rocdecode",
"timeout_minutes": 60,
Comment thread
kiritigowda marked this conversation as resolved.
Outdated
"test_script": f"python {_get_script_path('test_rocdecode.py')}",
"platform": ["linux"],
"total_shards": 1,
},
# rocjpeg
"rocjpeg": {
"job_name": "rocjpeg",
"fetch_artifact_args": "--rocjpeg",
"timeout_minutes": 60,
Comment thread
kiritigowda marked this conversation as resolved.
Outdated
"test_script": f"python {_get_script_path('test_rocjpeg.py')}",
"platform": ["linux"],
"total_shards": 1,
},
# aqlprofile tests
"aqlprofile": {
"job_name": "aqlprofile",
Expand Down
Loading
Loading