From 0120d69caacca1cf719fc9925261ab1009629fe1 Mon Sep 17 00:00:00 2001 From: Christopher Milan Date: Mon, 5 Jan 2026 20:30:25 -0800 Subject: [PATCH] autogen: avcodec (and simplify workflow) (#14031) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * simplify autogen workflow and add avcodec verification - Consolidate all regeneration into single steps (delete + import) - Remove continue-on-error and individual diff checks - Use git diff at end to catch all differences - Show artifact URL in failure message - Add avcodec.py verification 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * patch avcodec --------- Co-authored-by: Claude Opus 4.5 --- .github/workflows/autogen.yml | 151 +++++++--------------------- tinygrad/runtime/autogen/avcodec.py | 3 +- 2 files changed, 36 insertions(+), 118 deletions(-) diff --git a/.github/workflows/autogen.yml b/.github/workflows/autogen.yml index a8989cdc85..47b9f4c7fa 100644 --- a/.github/workflows/autogen.yml +++ b/.github/workflows/autogen.yml @@ -14,10 +14,12 @@ on: paths: - 'tinygrad/runtime/autogen/**/*' - 'tinygrad/runtime/support/autogen.py' + - '.github/workflows/autogen.yml' workflow_dispatch: paths: - 'tinygrad/runtime/autogen/**/*' - 'tinygrad/runtime/support/autogen.py' + - '.github/workflows/autogen.yml' jobs: autogen: @@ -39,125 +41,45 @@ jobs: pydeps: 'pyyaml mako' - name: Install autogen support packages run: sudo apt-get install -y --no-install-recommends libclang-20-dev llvm-20-dev hip-dev libusb-1.0-0-dev - - name: Verify OpenCL autogen - continue-on-error: true + - name: Regenerate autogen files run: | - mv tinygrad/runtime/autogen/opencl.py /tmp/opencl.py.bak + rm tinygrad/runtime/autogen/opencl.py python3 -c "from tinygrad.runtime.autogen import opencl" - diff /tmp/opencl.py.bak tinygrad/runtime/autogen/opencl.py - - name: Verify CUDA autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/cuda.py /tmp/cuda.py.bak - mv tinygrad/runtime/autogen/nvrtc.py /tmp/nvrtc.py.bak - mv tinygrad/runtime/autogen/nvjitlink.py /tmp/nvjitlink.py.bak - mv tinygrad/runtime/autogen/nv_570.py /tmp/nv_570.py.bak - mv tinygrad/runtime/autogen/nv.py /tmp/nv.py.bak + rm tinygrad/runtime/autogen/{cuda,nvrtc,nvjitlink,nv_570,nv}.py python3 -c "from tinygrad.runtime.autogen import cuda, nvrtc, nvjitlink, nv_570, nv" - diff /tmp/cuda.py.bak tinygrad/runtime/autogen/cuda.py - diff /tmp/nvrtc.py.bak tinygrad/runtime/autogen/nvrtc.py - diff /tmp/nvjitlink.py.bak tinygrad/runtime/autogen/nvjitlink.py - diff /tmp/nv_570.py.bak tinygrad/runtime/autogen/nv_570.py - diff /tmp/nv.py.bak tinygrad/runtime/autogen/nv.py - - name: Verify AMD autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/comgr.py /tmp/comgr.py.bak - mv tinygrad/runtime/autogen/hsa.py /tmp/hsa.py.bak - mv tinygrad/runtime/autogen/hip.py /tmp/hip.py.bak - mv tinygrad/runtime/autogen/amd_gpu.py /tmp/amd_gpu.py.bak - mv tinygrad/runtime/autogen/sqtt.py /tmp/sqtt.py.bak - mv tinygrad/runtime/autogen/rocprof.py /tmp/rocprof.py.bak - mv tinygrad/runtime/autogen/am/am.py /tmp/am_am.py.bak - mv tinygrad/runtime/autogen/am/pm4_soc15.py /tmp/am_pm4_soc15.py.bak - mv tinygrad/runtime/autogen/am/pm4_nv.py /tmp/am_pm4_nv.py.bak - mv tinygrad/runtime/autogen/am/sdma_4_0_0.py /tmp/am_sdma_4_0_0.py.bak - mv tinygrad/runtime/autogen/am/sdma_5_0_0.py /tmp/am_sdma_5_0_0.py.bak - mv tinygrad/runtime/autogen/am/sdma_6_0_0.py /tmp/am_sdma_6_0_0.py.bak - mv tinygrad/runtime/autogen/am/smu_v13_0_0.py /tmp/am_smu_v13_0_0.py.bak - mv tinygrad/runtime/autogen/am/smu_v14_0_2.py /tmp/am_smu_v14_0_2.py.bak - python3 -c "from tinygrad.runtime.autogen import comgr, hsa, hip, amd_gpu, sqtt, rocprof; from tinygrad.runtime.autogen.am import am, pm4_soc15, pm4_nv, sdma_4_0_0, sdma_5_0_0, sdma_6_0_0, smu_v13_0_0, smu_v14_0_2" - diff /tmp/comgr.py.bak tinygrad/runtime/autogen/comgr.py - diff /tmp/hsa.py.bak tinygrad/runtime/autogen/hsa.py - diff /tmp/hip.py.bak tinygrad/runtime/autogen/hip.py - diff /tmp/amd_gpu.py.bak tinygrad/runtime/autogen/amd_gpu.py - diff /tmp/sqtt.py.bak tinygrad/runtime/autogen/sqtt.py - diff /tmp/rocprof.py.bak tinygrad/runtime/autogen/rocprof.py - diff /tmp/am_am.py.bak tinygrad/runtime/autogen/am/am.py - diff /tmp/am_pm4_soc15.py.bak tinygrad/runtime/autogen/am/pm4_soc15.py - diff /tmp/am_pm4_nv.py.bak tinygrad/runtime/autogen/am/pm4_nv.py - diff /tmp/am_sdma_4_0_0.py.bak tinygrad/runtime/autogen/am/sdma_4_0_0.py - diff /tmp/am_sdma_5_0_0.py.bak tinygrad/runtime/autogen/am/sdma_5_0_0.py - diff /tmp/am_sdma_6_0_0.py.bak tinygrad/runtime/autogen/am/sdma_6_0_0.py - diff /tmp/am_smu_v13_0_0.py.bak tinygrad/runtime/autogen/am/smu_v13_0_0.py - diff /tmp/am_smu_v14_0_2.py.bak tinygrad/runtime/autogen/am/smu_v14_0_2.py - - name: Verify Linux autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/libc.py /tmp/libc.py.bak - mv tinygrad/runtime/autogen/kfd.py /tmp/kfd.py.bak - mv tinygrad/runtime/autogen/io_uring.py /tmp/io_uring.py.bak - mv tinygrad/runtime/autogen/ib.py /tmp/ib.py.bak - mv tinygrad/runtime/autogen/pci.py /tmp/pci.py.bak - mv tinygrad/runtime/autogen/vfio.py /tmp/vfio.py.bak + rm tinygrad/runtime/autogen/{comgr,hsa,hip,amd_gpu,sqtt,rocprof}.py + python3 -c "from tinygrad.runtime.autogen import comgr, hsa, hip, amd_gpu, sqtt, rocprof" + rm tinygrad/runtime/autogen/am/{am,pm4_soc15,pm4_nv,sdma_4_0_0,sdma_5_0_0,sdma_6_0_0,smu_v13_0_0,smu_v14_0_2}.py + python3 -c "from tinygrad.runtime.autogen.am import am, pm4_soc15, pm4_nv, sdma_4_0_0, sdma_5_0_0, sdma_6_0_0, smu_v13_0_0, smu_v14_0_2" + rm tinygrad/runtime/autogen/{libc,kfd,io_uring,ib,pci,vfio}.py python3 -c "from tinygrad.runtime.autogen import libc, kfd, io_uring, ib, pci, vfio" - diff /tmp/libc.py.bak tinygrad/runtime/autogen/libc.py - diff /tmp/kfd.py.bak tinygrad/runtime/autogen/kfd.py - diff /tmp/io_uring.py.bak tinygrad/runtime/autogen/io_uring.py - diff /tmp/ib.py.bak tinygrad/runtime/autogen/ib.py - diff /tmp/pci.py.bak tinygrad/runtime/autogen/pci.py - diff /tmp/vfio.py.bak tinygrad/runtime/autogen/vfio.py - - name: Verify LLVM autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/llvm.py /tmp/llvm.py.bak + rm tinygrad/runtime/autogen/llvm.py python3 -c "from tinygrad.runtime.autogen import llvm" - diff /tmp/llvm.py.bak tinygrad/runtime/autogen/llvm.py - - name: Verify WebGPU autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/webgpu.py /tmp/webgpu.py.bak + rm tinygrad/runtime/autogen/webgpu.py python3 -c "from tinygrad.runtime.autogen import webgpu" - diff /tmp/webgpu.py.bak tinygrad/runtime/autogen/webgpu.py - - name: Verify Qualcomm autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/kgsl.py /tmp/kgsl.py.bak - mv tinygrad/runtime/autogen/qcom_dsp.py /tmp/qcom_dsp.py.bak + rm tinygrad/runtime/autogen/{kgsl,qcom_dsp}.py python3 -c "from tinygrad.runtime.autogen import kgsl, qcom_dsp" - diff /tmp/kgsl.py.bak tinygrad/runtime/autogen/kgsl.py - diff /tmp/qcom_dsp.py.bak tinygrad/runtime/autogen/qcom_dsp.py - - name: Verify libusb autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/libusb.py /tmp/libusb.py.bak + rm tinygrad/runtime/autogen/libusb.py python3 -c "from tinygrad.runtime.autogen import libusb" - diff /tmp/libusb.py.bak tinygrad/runtime/autogen/libusb.py - - name: Verify mesa autogen - continue-on-error: true - run: | - mv tinygrad/runtime/autogen/mesa.py /tmp/mesa.py.bak + rm tinygrad/runtime/autogen/mesa.py python3 -c "from tinygrad.runtime.autogen import mesa" - diff /tmp/mesa.py.bak tinygrad/runtime/autogen/mesa.py - - name: Verify libclang autogen - continue-on-error: true - run: | - cp tinygrad/runtime/autogen/libclang.py /tmp/libclang.py.bak + rm tinygrad/runtime/autogen/avcodec.py + python3 -c "from tinygrad.runtime.autogen import avcodec" REGEN=1 python3 -c "from tinygrad.runtime.autogen import libclang" - diff /tmp/libclang.py.bak tinygrad/runtime/autogen/libclang.py - - name: Generate patch for differences + - name: Check for differences run: | if ! git diff --quiet; then git diff > autogen-ubuntu.patch + echo "Autogen files out of date. Apply patch from: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" + exit 1 fi - name: Upload patch artifact + if: failure() uses: actions/upload-artifact@v4 with: name: autogen-ubuntu-patch path: autogen-ubuntu.patch - if-no-files-found: ignore - - name: Fail if differences found - run: git diff --quiet + autogen-mac: name: In-tree Autogen (macos) runs-on: macos-14 @@ -169,25 +91,24 @@ jobs: uses: ./.github/actions/setup-tinygrad with: llvm: 'true' - - name: Verify macos autogen - continue-on-error: true + - name: Regenerate autogen files run: | - mv tinygrad/runtime/autogen/metal.py /tmp/metal.py.bak + rm tinygrad/runtime/autogen/metal.py LIBCLANG_PATH=/opt/homebrew/opt/llvm@20/lib/libclang.dylib python3 -c "from tinygrad.runtime.autogen import metal" - diff /tmp/metal.py.bak tinygrad/runtime/autogen/metal.py - - name: Generate patch for differences + - name: Check for differences run: | if ! git diff --quiet; then git diff > autogen-macos.patch + echo "Autogen files out of date. Apply patch from: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" + exit 1 fi - name: Upload patch artifact + if: failure() uses: actions/upload-artifact@v4 with: name: autogen-macos-patch path: autogen-macos.patch - if-no-files-found: ignore - - name: Fail if differences found - run: git diff --quiet + autogen-comgr-3: name: In-tree Autogen (comgr 3) runs-on: ubuntu-24.04 @@ -206,22 +127,20 @@ jobs: echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600 sudo apt -qq update || true sudo apt-get install -y --no-install-recommends libclang-20-dev comgr - - name: Verify comgr (3) autogen - continue-on-error: true + - name: Regenerate autogen files run: | - mv tinygrad/runtime/autogen/comgr_3.py /tmp/comgr_3.py.bak + rm tinygrad/runtime/autogen/comgr_3.py python3 -c "from tinygrad.runtime.autogen import comgr_3" - diff /tmp/comgr_3.py.bak tinygrad/runtime/autogen/comgr_3.py - - name: Generate patch for differences + - name: Check for differences run: | if ! git diff --quiet; then git diff > autogen-comgr3.patch + echo "Autogen files out of date. Apply patch from: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" + exit 1 fi - name: Upload patch artifact + if: failure() uses: actions/upload-artifact@v4 with: name: autogen-comgr3-patch path: autogen-comgr3.patch - if-no-files-found: ignore - - name: Fail if differences found - run: git diff --quiet diff --git a/tinygrad/runtime/autogen/avcodec.py b/tinygrad/runtime/autogen/avcodec.py index 37cc054c9d..12c78663b2 100644 --- a/tinygrad/runtime/autogen/avcodec.py +++ b/tinygrad/runtime/autogen/avcodec.py @@ -1,7 +1,6 @@ # mypy: ignore-errors import ctypes -from tinygrad.helpers import unwrap -from tinygrad.runtime.support.c import Struct, CEnum, _IO, _IOW, _IOR, _IOWR +from tinygrad.runtime.support.c import DLL, Struct, CEnum, _IO, _IOW, _IOR, _IOWR enum_HEVCNALUnitType = CEnum(ctypes.c_uint32) HEVC_NAL_TRAIL_N = enum_HEVCNALUnitType.define('HEVC_NAL_TRAIL_N', 0) HEVC_NAL_TRAIL_R = enum_HEVCNALUnitType.define('HEVC_NAL_TRAIL_R', 1)