diff options
-rw-r--r-- | README.txt | 14 | ||||
-rwxr-xr-x | intel-linux-gfx-mirror-docs | 243 |
2 files changed, 257 insertions, 0 deletions
diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..cca12a3 --- /dev/null +++ b/README.txt @@ -0,0 +1,14 @@ +Overview +======== + +This project provides scripts for working with Intel Linux graphics +documentation. + + +Scripts +======= + +intel-linux-gfx-mirror-docs +--------------------------- +Download the Intel OpenSource HD Graphics Programmer's Reference Manuals from +http://intellinuxgraphics.org. diff --git a/intel-linux-gfx-mirror-docs b/intel-linux-gfx-mirror-docs new file mode 100755 index 0000000..5fb2b42 --- /dev/null +++ b/intel-linux-gfx-mirror-docs @@ -0,0 +1,243 @@ +#!/bin/bash + +set -e + +kw_prog_name="$(basename $0)" +kw_config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/intel-linux-gfx-mirror-docs" + +# These vars are set in ~/.config/intel-linux-docs/config. +DOCDIR= +PREHOOK= +POSTHOOK= + +function kw_print_help() { + echo "NAME" + echo " $kw_prog_name" + echo "" + echo "SYNOPSIS" + echo " $kw_prog_name [-h|--help] <all|ivb|snb|ilk|g45|g35>" + echo "" + echo "DESCRIPTION" + echo " Download the Intel OpenSource HD Graphics Programmer's Reference" + echo " Manuals from http://intellinuxgraphics.org." +} + +function kw_fatal_error() { + echo "error: $kw_prog_name: $@" + exit 1 +} + +function kw_usage_error() { + echo "usage error: $kw_prog_name" + echo + kw_print_help + exit 1 +} + +function kw_load_config() { + local conf_file="$kw_config_dir/conf" + local example_file="$conf_file.example" + + # Write out example file. + mkdir -p "$kw_config_dir" + cat > "$example_file" <<-EOF + #DOCDIR="\$HOME/doc/intel-linux-gfx/prm" + #PREHOOK= + #POSTHOOK= + EOF + + if [[ -r "$conf_file" ]]; then + source "$conf_file" + fi + + # Set defaults for config vars. + DOCDIR="${DOCDIR:-$HOME/doc/intel-linux-gfx/prm}" +} + +function kw_run_prehook() { + if [[ "$PREHOOK" ]]; then + cd "$kw_config_dir" + "$PREHOOK" "$@" + fi +} + +function kw_run_posthook() { + if [[ "$POSTHOOK" ]]; then + cd "$kw_config_dir" + "$POSTHOOK" "$@" + fi +} + +function kw_download_files() { + local outdir="$DOCDIR/$1" + shift + + local cutdirs=$(echo $1 | sed 's@[^/]@@g' | wc -c) + + for x in "$@"; do + wget \ + "--mirror" \ + "--no-parent" \ + "--directory-prefix=$outdir" \ + "--no-host-directories" \ + "--cut-dirs=$cutdirs" \ + "http://intellinuxgraphics.org/$x" + done +} + +function kw_mirror_ivb() { + kw_run_prehook ivb + + kw_download_files 'ivb' \ + \ + 'documentation/IVB/IHD_OS_Vol1_Part1.pdf' \ + 'documentation/IVB/IHD_OS_Vol1_Part2.pdf' \ + 'documentation/IVB/IHD_OS_Vol1_Part3.pdf' \ + 'documentation/IVB/IHD_OS_Vol1_Part4.pdf' \ + 'documentation/IVB/IHD_OS_Vol1_Part5.pdf' \ + 'documentation/IVB/IHD_OS_Vol1_Part6.pdf' \ + 'documentation/IVB/IHD_OS_Vol1_Part7.pdf' \ + \ + 'documentation/IVB/IHD_OS_Vol2_Part1.pdf' \ + 'documentation/IVB/IHD_OS_Vol2_Part2.pdf' \ + 'documentation/IVB/IHD_OS_Vol2_Part3.pdf' \ + \ + 'documentation/IVB/IHD_OS_Vol3_Part1.pdf' \ + 'documentation/IVB/IHD_OS_Vol3_Part2.pdf' \ + 'documentation/IVB/IHD_OS_Vol3_Part3.pdf' \ + 'documentation/IVB/IHD_OS_Vol3_Part4.pdf' \ + \ + 'documentation/IVB/IHD_OS_Vol4_Part1.pdf' \ + 'documentation/IVB/IHD_OS_Vol4_Part2.pdf' \ + 'documentation/IVB/IHD_OS_Vol4_Part3.pdf' \ + + kw_run_posthook ivb +} + +function kw_mirror_snb() { + kw_run_prehook snb + + kw_download_files 'snb' \ + \ + 'documentation/SNB/IHD_OS_Vol1_Part1.pdf' \ + 'documentation/SNB/IHD_OS_Vol1_Part2.pdf' \ + 'documentation/SNB/IHD_OS_Vol1_Part3.pdf' \ + 'documentation/SNB/IHD_OS_Vol1_Part4.pdf' \ + 'documentation/SNB/IHD_OS_Vol1_Part5.pdf' \ + \ + 'documentation/SNB/IHD_OS_Vol2_Part1.pdf' \ + 'documentation/SNB/IHD_OS_Vol2_Part2.pdf' \ + \ + 'documentation/SNB/IHD_OS_Vol3_Part1.pdf' \ + 'documentation/SNB/IHD_OS_Vol3_Part2.pdf' \ + 'documentation/SNB/IHD_OS_Vol3_Part3.pdf' \ + \ + 'documentation/SNB/IHD_OS_Vol4_Part1.pdf' \ + 'documentation/SNB/IHD_OS_Vol4_Part2.pdf' \ + + kw_run_posthook snb +} + +function kw_mirror_ilk() { + kw_run_prehook ilk + + kw_download_files 'ilk' \ + \ + 'IHD_OS_Vol1_Part1.pdf' \ + 'IHD_OS_Vol1_Part2.pdf' \ + 'IHD_OS_Vol1_Part3.pdf' \ + 'IHD_OS_Vol1_Part4.pdf' \ + 'IHD_OS_Vol1_Part5.pdf' \ + \ + 'IHD_OS_Vol2_Part1.pdf' \ + 'IHD_OS_Vol2_Part2.pdf' \ + \ + 'IHD_OS_Vol3_Part1.pdf' \ + 'IHD_OS_Vol3_Part2.pdf' \ + 'IHD_OS_Vol3_Part3.pdf' \ + \ + 'IHD_OS_Vol4_Part1.pdf' \ + 'IHD_OS_Vol4_Part2.pdf' \ + + kw_run_posthook ilk +} + +function kw_mirror_g45() { + kw_run_prehook g45 + + kw_download_files 'g45' \ + 'Vol_1a_G45_core_updated.pdf' \ + 'Vol_2_G45_3dmedia.pdf' \ + 'Vol_3_G45_register.pdf' \ + 'Vol_4_G45_subsystem.pdf' \ + + kw_run_posthook g45 +} + +function kw_mirror_g35() { + kw_run_prehook g35 + + kw_download_files 'g35' \ + 'VOL_1_graphics_core.pdf' \ + 'VOL_2_3D_media_web_updated.pdf' \ + 'VOL_3_display_registers_updated.pdf' \ + 'VOL_4_subsystem_core.pdf' \ + + kw_run_posthook g35 +} + +# ---------------------------------------------- +# main +# ---------------------------------------------- + + +if [[ $# -eq 0 ]]; then + kw_usage_error +fi + +if [[ "$1" = "-h" ]] || [[ "$1" = "--help" ]]; then + kw_print_help + exit +fi + +for x in "$@"; do + case "$x" in + "all"|"ivb"|"snb"|"ilk"|"g45"|"g35") + ;; + *) + kw_usage_error + ;; + esac +done + +kw_load_config + +for api in "$@"; do + case "$1" in + "ivb") + kw_mirror_ivb + ;; + "snb") + kw_mirror_snb + ;; + "ilk") + kw_mirror_ilk + ;; + "g45") + kw_mirror_g45 + ;; + "g35") + kw_mirror_g35 + ;; + "all") + kw_mirror_ivb + kw_mirror_snb + kw_mirror_ilk + kw_mirror_g45 + kw_mirror_g35 + ;; + *) + kw_usage_error + ;; + esac +done |