#!/bin/bash # GPU Setup Script for YouTube Predownloader # This script sets up Intel GPU hardware acceleration echo "🚀 Setting up Intel GPU hardware acceleration..." # Check if user is in video and render groups if ! groups "$USER" | grep -q "\bvideo\b"; then echo "Adding $USER to video group..." sudo usermod -a -G video "$USER" NEED_RELOGIN=true fi if ! groups "$USER" | grep -q "\brender\b"; then echo "Adding $USER to render group..." sudo usermod -a -G render "$USER" NEED_RELOGIN=true fi # Fix GPU device permissions echo "Setting GPU device permissions..." sudo chmod 666 /dev/dri/renderD128 sudo chmod 666 /dev/dri/card1 # Create udev rule for persistent permissions echo "Creating udev rule for persistent GPU permissions..." sudo tee /etc/udev/rules.d/99-gpu-permissions.rules > /dev/null << 'EOF' # Intel GPU permissions for hardware acceleration SUBSYSTEM=="drm", KERNEL=="renderD*", GROUP="render", MODE="0666" SUBSYSTEM=="drm", KERNEL=="card*", GROUP="video", MODE="0666" EOF # Reload udev rules sudo udevadm control --reload-rules sudo udevadm trigger # Test hardware acceleration echo "Testing hardware acceleration..." if vainfo --display drm --device /dev/dri/renderD128 > /dev/null 2>&1; then echo "✅ Intel VAAPI hardware acceleration is working!" else echo "❌ Hardware acceleration test failed" fi # Test FFmpeg VAAPI echo "Testing FFmpeg VAAPI support..." if ffmpeg -hide_banner -f lavfi -i testsrc=duration=1:size=320x240:rate=1 \ -vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \ -c:v h264_vaapi -frames:v 1 -f null - > /dev/null 2>&1; then echo "✅ FFmpeg VAAPI H.264 encoding is working!" else echo "❌ FFmpeg VAAPI test failed" fi if [[ "$NEED_RELOGIN" == "true" ]]; then echo "" echo "⚠️ Group membership changes require a logout/login to take effect." echo " Either logout and login again, or restart your session." fi echo "" echo "🎬 GPU acceleration setup complete!" echo " Your OptiPlex with Intel HD Graphics 630 is ready for fast video conversions!"