SDL: ci: test vita piglet/pvr gles support

From ecffa93f396a395c2bc2973201f1678618f44173 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sun, 22 Jan 2023 20:36:59 +0100
Subject: [PATCH] ci: test vita piglet/pvr gles support

ci: configure gl4es4vita

ci: test gles on pib AND pvr
---
 .github/workflows/vita.yml | 46 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/.github/workflows/vita.yml b/.github/workflows/vita.yml
index 068efe6e9322..2238081e44d4 100644
--- a/.github/workflows/vita.yml
+++ b/.github/workflows/vita.yml
@@ -12,19 +12,65 @@ defaults:
 
 jobs:
   vita:
+    name: ${{ matrix.platform.name }}
     runs-on: ubuntu-latest
     container:
       image: vitasdk/vitasdk:latest
+    strategy:
+      fail-fast: false
+      matrix:
+        platform:
+        - { name: GLES (pib),                    os: windows-latest, pib: true }
+        - { name: GLES (PVR_PSP2 + gl4es4vita),  os: windows-latest, pvr: true }
+
     steps:
     - uses: actions/checkout@v3
     - name: Install build requirements
       run: |
         apk update
         apk add cmake ninja pkgconf bash
+
+    - name: Configure PVR_PSP2 (GLES)
+      if: ${{ !!matrix.platform.pvr }}
+      run: |
+        pvr_psp2_version=3.9
+
+        # Configure PVR_PSP2 headers
+        wget https://github.com/GrapheneCt/PVR_PSP2/archive/refs/tags/v$pvr_psp2_version.zip -P/tmp
+        unzip /tmp/v$pvr_psp2_version.zip -d/tmp
+        cp -r /tmp/PVR_PSP2-$pvr_psp2_version/include/* ${VITASDK}/arm-vita-eabi/include
+        rm /tmp/v$pvr_psp2_version.zip
+        
+        # include guard of PVR_PSP2's khrplatform.h does not match the usual one
+        sed -i -e s/__drvkhrplatform_h_/__khrplatform_h_/ ${VITASDK}/arm-vita-eabi/include/KHR/khrplatform.h
+
+        # Configure PVR_PSP2 stub libraries
+        wget https://github.com/GrapheneCt/PVR_PSP2/releases/download/v$pvr_psp2_version/vitasdk_stubs.zip -P/tmp
+        unzip /tmp/vitasdk_stubs.zip -d/tmp/pvr_psp2_stubs
+        find /tmp/pvr_psp2_stubs -type f -name "*.a" -exec cp {} ${VITASDK}/arm-vita-eabi/lib \;
+        rm /tmp/vitasdk_stubs.zip
+        rm -rf /tmp/pvr_psp2_stubs
+
+    - name: Configure gl4es4vita (OpenGL)
+      if: ${{ !!matrix.platform.pvr }}
+      run: |
+        gl4es4vita_version=1.1.4
+
+        # Configure gl4es4vita headers
+        wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/include.zip -P/tmp
+        unzip -o /tmp/include.zip -d${VITASDK}/arm-vita-eabi/include
+        rm /tmp/include.zip
+
+        # Configure gl4es4vita stub libraries
+        wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/vitasdk_stubs.zip -P/tmp
+        unzip /tmp/vitasdk_stubs.zip -d${VITASDK}/arm-vita-eabi/lib
+
     - name: Configure CMake
       run: |
         cmake -S . -B build -G Ninja \
           -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake \
+          -DVIDEO_VITA_PIB=${{ !!matrix.platform.pib }} \
+          -DVIDEO_VITA_PVR=${{ !!matrix.platform.pvr }} \
           -DSDL_WERROR=ON \
           -DSDL_TESTS=ON \
           -DSDL_INSTALL_TESTS=ON \