FROM ubuntu:25.04

RUN apt update; \
    apt-get -y install git meson clang ninja-build rustc bindgen glslang-tools pkg-config libclc-20 python3-mako libdrm-intel1 libdrm-dev libllvmspirvlib-20-dev libclang-20-dev libelf-dev bison flex libwayland-dev libwayland-egl-backend-dev libx11-xcb-dev libxcb-randr0-dev libxext-dev libxfixes-dev libxcb-glx0-dev libxcb-shm0-dev libxcb-dri3-dev libxcb-present-dev libxshmfence-dev libxxf86vm-dev libxrandr-dev python3-ply cbindgen libclang-cpp20-dev libxcb-dri2-0-dev
RUN git clone https://chromium.googlesource.com/chromiumos/third_party/mesa; \
    cd mesa; \
    git checkout upstream/mesa-25.2.3; \
    mkdir buildASAN; \
    cd buildASAN; \
    LLVM_CONFIG=/usr/bin/llvm-config-20 CC=clang-20 CXX=clang++-20 meson .. ; \
    meson configure -Db_sanitize=address -Db_lundef=false -Db_ndebug=true -Dtools="intel,drm-shim"; \
    ASAN_OPTIONS=detect_leaks=0 LLVM_CONFIG=/usr/bin/llvm-config-20 ninja src/amd/vulkan/libvulkan_radeon.so; \
    ASAN_OPTIONS=detect_leaks=0 LLVM_CONFIG=/usr/bin/llvm-config-20 ninja src/amd/drm-shim/libamdgpu_noop_drm_shim.so; \
    ninja src/amd/vulkan/radeon_icd.x86_64.json; \
    sed 's/library_path": .*/library_path": "\/mesa\/buildASAN\/src\/amd\/vulkan\/libvulkan_radeon.so"/' -i src/amd/vulkan/radeon_icd.x86_64.json

RUN apt-get install -y cmake build-essential libx11-xcb-dev libxcb-keysyms1-dev libwayland-dev libxrandr-dev zlib1g-dev liblz4-dev libzstd-dev libxcb-glx0-dev libvulkan1; \
    git clone https://github.com/LunarG/gfxreconstruct.git; \
    cd /gfxreconstruct; \
    git submodule update --init; \
    cmake . -Bbuild -DCMAKE_BUILD_TYPE=Debug; \
    cd build; \
    cmake --build .

COPY combine.gfxr /gfxrecon.gfxr

# LD_PRELOAD="/usr/lib/llvm-20/lib/clang/20/lib/linux/libclang_rt.asan-x86_64.so /mesa/buildASAN/src/amd/drm-shim/libamdgpu_noop_drm_shim.so" VK_DRIVER_FILES=/mesa/buildASAN/src/amd/vulkan/radeon_icd.x86_64.json /gfxreconstruct/build/tools/replay/gfxrecon-replay /gfxrecon.gfxr
