Add mixed-vendor GPU summary and fix startup heap corruption
Collect AMD amdgpu sysfs and optional NVIDIA nvidia-smi stats in the background, auto-detecting supported adapters in PCI order and rotating additional pairs alongside CPU/RAM. Explicit PCI selection and off mode remain supported; missing metrics render as N/A. Initialize the bitmap-only canvas locally instead of the ABI-dependent libg15render initializer: the installed TTF-enabled renderer wrote an 8-byte FreeType pointer past the smaller bitmap-only allocation, corrupting the heap before GPU threads started. Add collector, rendering and full-main regression tests.
This commit is contained in:
1 parent
076641c867
commit
7c06a8089d
12 files changed
+1417
-4
No files matched your search
@@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
# Convert existing render-test exports without trimming, resampling or labels
|
||||
# inside the framebuffer. ImageMagick is optional, not a make check dependency.
|
||||
set -eu
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: sh tests/render-images.sh ABSOLUTE_OUTPUT_DIRECTORY" >&2
|
||||
exit 2
|
||||
fi
|
||||
cd "$1"
|
||||
for pgm in ./*-[01].pgm; do
|
||||
[ -f "$pgm" ] || continue
|
||||
base=${pgm%.pgm}
|
||||
[ "$(wc -c < "$base.bin")" -eq 860 ]
|
||||
{ printf 'P4\n160 43\n'; cat "$base.bin"; } > "$base.pbm"
|
||||
# Compare the packed 1-bit buffer independently with the PGM export.
|
||||
compare -metric AE "$base.pbm" "$pgm" null: 2> "$base-pixels.log"
|
||||
convert "$pgm" +repage -type TrueColor "PNG24:$base-native.png"
|
||||
convert "$base-native.png" -sample 800% +repage "PNG24:$base-8x.png"
|
||||
convert "$base-8x.png" -sample 160x43! +repage "PNG24:$base-roundtrip.png"
|
||||
compare -metric AE "$pgm" "$base-native.png" null: 2>> "$base-pixels.log"
|
||||
compare -metric AE "$pgm" "$base-roundtrip.png" null: 2>> "$base-pixels.log"
|
||||
rm "$base-roundtrip.png"
|
||||
# Smaller contact tiles avoid shrinking wide sheets in image viewers.
|
||||
# Keep the eightfold originals available for individual pixel inspection.
|
||||
convert "$base-native.png" -sample 400% +repage "PNG24:$base-4x.png"
|
||||
done
|
||||
for group in off nvidia amd single dual large unknown odd maximum; do
|
||||
[ -f "$group-0-4x.png" ] || continue
|
||||
montage -font DejaVu-Sans -pointsize 14 -background '#dddddd' \
|
||||
-label "$group: five-row summary (4x)" "$group-0-4x.png" \
|
||||
-label "$group: four-row summary (4x)" "$group-1-4x.png" \
|
||||
-tile 1x2 -geometry +8+8 "PNG24:contact-$group.png"
|
||||
height=$(identify -format '%h' "contact-$group.png")
|
||||
for variant in 0 1; do
|
||||
top=$((8 + variant * height / 2))
|
||||
convert "contact-$group.png" -crop "640x172+8+$top" +repage \
|
||||
"PNG24:$group-tile-check.png"
|
||||
compare -metric AE "$group-$variant-4x.png" "$group-tile-check.png" \
|
||||
null: 2>> "$group-contact-pixels.log"
|
||||
done
|
||||
rm "$group-tile-check.png"
|
||||
done
|
||||
if [ -f contact-off.png ] && [ -f contact-nvidia.png ] && [ -f contact-amd.png ]; then
|
||||
convert contact-off.png contact-nvidia.png contact-amd.png -append +repage \
|
||||
PNG24:contact-legacy.png
|
||||
fi
|
||||
if [ -f contact-dual.png ] && [ -f contact-large.png ] && [ -f contact-unknown.png ]; then
|
||||
convert contact-dual.png contact-large.png contact-unknown.png -append +repage \
|
||||
PNG24:contact-metrics.png
|
||||
fi
|
||||
if [ -f contact-odd.png ] && [ -f contact-maximum.png ]; then
|
||||
convert contact-odd.png contact-maximum.png -append +repage PNG24:contact-paging.png
|
||||
fi
|
||||
Reference in new issue
Block a user