139 lines
4.2 KiB
PowerShell
139 lines
4.2 KiB
PowerShell
Get-Date
|
|
Write-Host "Downloading Freeglut"
|
|
|
|
$freeglut_zip = 'freeglut-MSVC.zip'
|
|
$freeglut_url = "https://www.transmissionzero.co.uk/files/software/development/GLUT/$freeglut_zip"
|
|
|
|
For ($i = 0; $i -lt 5; $i++) {
|
|
Invoke-WebRequest -Uri $freeglut_url -OutFile $freeglut_zip
|
|
$freeglut_downloaded = $?
|
|
if ($freeglut_downloaded) {
|
|
Break
|
|
}
|
|
}
|
|
|
|
if (!$freeglut_downloaded) {
|
|
Write-Host "Failed to download Freeglut"
|
|
Exit 1
|
|
}
|
|
|
|
Get-Date
|
|
Write-Host "Installing Freeglut"
|
|
Expand-Archive $freeglut_zip -DestinationPath C:\
|
|
if (!$?) {
|
|
Write-Host "Failed to install Freeglut"
|
|
Exit 1
|
|
}
|
|
|
|
$MyPath = $MyInvocation.MyCommand.Path | Split-Path -Parent
|
|
. "$MyPath\mesa_vs_init.ps1"
|
|
|
|
Get-Date
|
|
Write-Host "Downloading glext.h"
|
|
New-Item -ItemType Directory -Path ".\glext" -Name "GL"
|
|
$ProgressPreference = "SilentlyContinue"
|
|
Invoke-WebRequest -Uri 'https://www.khronos.org/registry/OpenGL/api/GL/glext.h' -OutFile '.\glext\GL\glext.h' | Out-Null
|
|
|
|
Get-Date
|
|
Write-Host "Cloning Piglit"
|
|
git clone --no-progress --single-branch --no-checkout https://gitlab.freedesktop.org/mesa/piglit.git 'C:\src\piglit'
|
|
if (!$?) {
|
|
Write-Host "Failed to clone Piglit repository"
|
|
Exit 1
|
|
}
|
|
Push-Location -Path C:\src\piglit
|
|
git checkout f7f2a6c2275cae023a27b6cc81be3dda8c99492d
|
|
Pop-Location
|
|
|
|
Get-Date
|
|
$piglit_build = New-Item -ItemType Directory -Path "C:\src\piglit" -Name "build"
|
|
Push-Location -Path $piglit_build.FullName
|
|
Write-Host "Compiling Piglit"
|
|
cmake .. `
|
|
-GNinja `
|
|
-DCMAKE_BUILD_TYPE=Release `
|
|
-DCMAKE_INSTALL_PREFIX="C:\Piglit" `
|
|
-DGLUT_INCLUDE_DIR=C:\freeglut\include `
|
|
-DGLUT_glut_LIBRARY_RELEASE=C:\freeglut\lib\x64\freeglut.lib `
|
|
-DGLEXT_INCLUDE_DIR=.\glext && `
|
|
ninja -j32
|
|
$buildstatus = $?
|
|
ninja -j32 install | Out-Null
|
|
$installstatus = $?
|
|
Pop-Location
|
|
Remove-Item -Recurse -Path $piglit_build
|
|
if (!$buildstatus -Or !$installstatus) {
|
|
Write-Host "Failed to compile or install Piglit"
|
|
Exit 1
|
|
}
|
|
|
|
Copy-Item -Path C:\freeglut\bin\x64\freeglut.dll -Destination C:\Piglit\lib\piglit\bin\freeglut.dll
|
|
|
|
Get-Date
|
|
Write-Host "Cloning spirv-samples"
|
|
git clone --no-progress --single-branch --no-checkout https://github.com/dneto0/spirv-samples.git C:\spirv-samples\
|
|
Push-Location -Path C:\spirv-samples\
|
|
git checkout 36372636df06a24c4e2de1551beee055db01b91d
|
|
Pop-Location
|
|
|
|
Get-Date
|
|
Write-Host "Cloning Vulkan and GL Conformance Tests"
|
|
$deqp_source = "C:\src\VK-GL-CTS\"
|
|
git clone --no-progress --single-branch https://github.com/KhronosGroup/VK-GL-CTS.git -b vulkan-cts-1.3.4 $deqp_source
|
|
if (!$?) {
|
|
Write-Host "Failed to clone deqp repository"
|
|
Exit 1
|
|
}
|
|
|
|
Push-Location -Path $deqp_source
|
|
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
|
# libpng (sigh). The archives get their checksums checked anyway, and git
|
|
# always goes through ssh or https.
|
|
py .\external\fetch_sources.py --insecure
|
|
Pop-Location
|
|
|
|
Get-Date
|
|
$deqp_build = New-Item -ItemType Directory -Path "C:\deqp"
|
|
Push-Location -Path $deqp_build.FullName
|
|
Write-Host "Compiling deqp"
|
|
cmake -S $($deqp_source) `
|
|
-B . `
|
|
-GNinja `
|
|
-DCMAKE_BUILD_TYPE=Release `
|
|
-DDEQP_TARGET=default && `
|
|
ninja -j32
|
|
$buildstatus = $?
|
|
Pop-Location
|
|
if (!$buildstatus -Or !$installstatus) {
|
|
Write-Host "Failed to compile or install deqp"
|
|
Exit 1
|
|
}
|
|
|
|
# Copy test result templates
|
|
Copy-Item -Path "$($deqp_source)\doc\testlog-stylesheet\testlog.css" -Destination $deqp_build
|
|
Copy-Item -Path "$($deqp_source)\doc\testlog-stylesheet\testlog.xsl" -Destination $deqp_build
|
|
|
|
# Copy Vulkan must-pass list
|
|
$deqp_mustpass = New-Item -ItemType Directory -Path $deqp_build -Name "mustpass"
|
|
$root_mustpass = Join-Path -Path $deqp_source -ChildPath "external\vulkancts\mustpass\main"
|
|
$files = Get-Content "$($root_mustpass)\vk-default.txt"
|
|
foreach($file in $files) {
|
|
Get-Content "$($root_mustpass)\$($file)" | Add-Content -Path "$($deqp_mustpass)\vk-main.txt"
|
|
}
|
|
Remove-Item -Force -Recurse $deqp_source
|
|
|
|
Get-Date
|
|
$url = 'https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe';
|
|
Write-Host ('Downloading {0} ...' -f $url);
|
|
Invoke-WebRequest -Uri $url -OutFile 'rustup-init.exe';
|
|
Write-Host "Installing rust toolchain"
|
|
C:\rustup-init.exe -y;
|
|
Remove-Item C:\rustup-init.exe;
|
|
|
|
Get-Date
|
|
Write-Host "Installing deqp-runner"
|
|
$env:Path += ";$($env:USERPROFILE)\.cargo\bin"
|
|
cargo install --git https://gitlab.freedesktop.org/anholt/deqp-runner.git
|
|
|
|
Get-Date
|
|
Write-Host "Complete"
|