mirror of
https://github.com/izzy2lost/WeeU.git
synced 2026-07-06 00:19:59 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1c70588fe | ||
|
|
4442efa8ac | ||
|
|
e9d10a9581 | ||
|
|
2842615edb | ||
|
|
94b179ef5a | ||
|
|
7f21104b54 | ||
|
|
bbd8d6d5ac | ||
|
|
4d68446f14 | ||
|
|
a0e69ffbbd | ||
|
|
c3d6cad428 | ||
|
|
58c7b56c60 | ||
|
|
be287a1f4e | ||
|
|
5adb1e9618 | ||
|
|
138510106c | ||
|
|
948460cad7 | ||
|
|
3df8217a02 | ||
|
|
ec6726e85c | ||
|
|
348d86648f | ||
|
|
592c9b2776 | ||
|
|
5d156672e8 | ||
|
|
2f86622a68 | ||
|
|
a40b226e00 | ||
|
|
521f2fb707 | ||
|
|
a129d22a57 | ||
|
|
d4e14d2b05 | ||
|
|
dfa7774c4c | ||
|
|
c3182aedd9 | ||
|
|
f41f7b63e8 | ||
|
|
c143950dd1 | ||
|
|
4e991d603a | ||
|
|
e0aaf631c4 | ||
|
|
9ebbfb3ae2 | ||
|
|
3869b47c35 | ||
|
|
d303a7f502 | ||
|
|
2461464ba7 | ||
|
|
76c75f767b | ||
|
|
88f63ca373 | ||
|
|
643ac57a30 | ||
|
|
4561a6929c |
+38
-14
@@ -22,34 +22,36 @@ jobs:
|
|||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
|
|
||||||
- name: Setup release mode parameters (for deploy)
|
- name: Setup release mode parameters (for deploy)
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
if: ${{ inputs.deploymode == 'release' }}
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||||||
echo "Build mode is release"
|
echo "Build mode is release"
|
||||||
|
|
||||||
- name: Setup debug mode parameters (for continous build)
|
- name: Setup debug mode parameters (for continous build)
|
||||||
if: ${{ inputs.deploymode != 'release' }}
|
if: ${{ inputs.deploymode != 'release' }}
|
||||||
run: |
|
run: |
|
||||||
echo "BUILD_MODE=debug" >> $GITHUB_ENV
|
echo "BUILD_MODE=debug" >> $GITHUB_ENV
|
||||||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||||||
echo "Build mode is debug"
|
echo "Build mode is debug"
|
||||||
|
|
||||||
- name: Setup version for experimental
|
- name: Setup version for experimental
|
||||||
if: ${{ inputs.experimentalversion != '' }}
|
if: ${{ inputs.experimentalversion != '' }}
|
||||||
run: |
|
run: |
|
||||||
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
||||||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: "Install system dependencies"
|
- name: "Install system dependencies"
|
||||||
run: |
|
run: |
|
||||||
sudo apt update -qq
|
sudo apt update -qq
|
||||||
sudo apt install -y ninja-build cmake libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm
|
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build
|
||||||
|
|
||||||
- name: "Bootstrap vcpkg"
|
- name: "Bootstrap vcpkg"
|
||||||
run: |
|
run: |
|
||||||
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
||||||
|
|
||||||
- name: 'Setup NuGet Credentials for vcpkg'
|
- name: 'Setup NuGet Credentials for vcpkg'
|
||||||
shell: 'bash'
|
shell: 'bash'
|
||||||
run: |
|
run: |
|
||||||
@@ -66,15 +68,12 @@ jobs:
|
|||||||
|
|
||||||
- name: "cmake"
|
- name: "cmake"
|
||||||
run: |
|
run: |
|
||||||
mkdir -p build
|
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DPORTABLE=OFF -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
||||||
cd build
|
|
||||||
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
|
||||||
|
|
||||||
- name: "Build Cemu"
|
- name: "Build Cemu"
|
||||||
run: |
|
run: |
|
||||||
cd build
|
cmake --build build
|
||||||
ninja
|
|
||||||
|
|
||||||
- name: Prepare artifact
|
- name: Prepare artifact
|
||||||
if: ${{ inputs.deploymode == 'release' }}
|
if: ${{ inputs.deploymode == 'release' }}
|
||||||
run: mv bin/Cemu_release bin/Cemu
|
run: mv bin/Cemu_release bin/Cemu
|
||||||
@@ -85,8 +84,33 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: cemu-bin-linux-x64
|
name: cemu-bin-linux-x64
|
||||||
path: ./bin/Cemu
|
path: ./bin/Cemu
|
||||||
|
|
||||||
|
build-appimage:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
needs: build-ubuntu
|
||||||
|
steps:
|
||||||
|
- name: Checkout Upstream Repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: cemu-bin-linux-x64
|
||||||
|
path: bin
|
||||||
|
|
||||||
|
- name: "Install system dependencies"
|
||||||
|
run: |
|
||||||
|
sudo apt update -qq
|
||||||
|
sudo apt install -y clang-12 cmake freeglut3-dev libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build
|
||||||
|
|
||||||
|
- name: "Build AppImage"
|
||||||
|
run: dist/linux/appimage.sh
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: cemu-appimage-x64
|
||||||
|
path: artifacts
|
||||||
|
|
||||||
build-windows:
|
build-windows:
|
||||||
runs-on: windows-2022
|
runs-on: windows-2022
|
||||||
steps:
|
steps:
|
||||||
@@ -239,4 +263,4 @@ jobs:
|
|||||||
if: ${{ inputs.deploymode == 'release' }}
|
if: ${{ inputs.deploymode == 'release' }}
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-macos-x64
|
name: cemu-bin-macos-x64
|
||||||
path: ./bin/Cemu.dmg
|
path: ./bin/Cemu.dmg
|
||||||
|
|||||||
@@ -13,13 +13,18 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: call-release-build
|
needs: call-release-build
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-linux-x64
|
name: cemu-bin-linux-x64
|
||||||
path: cemu-bin-linux-x64
|
path: cemu-bin-linux-x64
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: cemu-appimage-x64
|
||||||
|
path: cemu-appimage-x64
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-windows-x64
|
name: cemu-bin-windows-x64
|
||||||
@@ -53,7 +58,14 @@ jobs:
|
|||||||
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
|
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
|
||||||
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
|
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
|
||||||
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
||||||
|
|
||||||
|
- name: Create appimage
|
||||||
|
run: |
|
||||||
|
VERSION=${{ env.CEMU_VERSION }}
|
||||||
|
echo "Cemu Version is $VERSION"
|
||||||
|
ls cemu-appimage-x64
|
||||||
|
mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage
|
||||||
|
|
||||||
- name: Create release from linux-bin
|
- name: Create release from linux-bin
|
||||||
run: |
|
run: |
|
||||||
ls ./
|
ls ./
|
||||||
|
|||||||
@@ -15,13 +15,18 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: call-release-build
|
needs: call-release-build
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-linux-x64
|
name: cemu-bin-linux-x64
|
||||||
path: cemu-bin-linux-x64
|
path: cemu-bin-linux-x64
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: cemu-appimage-x64
|
||||||
|
path: cemu-appimage-x64
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: cemu-bin-windows-x64
|
name: cemu-bin-windows-x64
|
||||||
@@ -44,11 +49,7 @@ jobs:
|
|||||||
echo "Cemu CI version: $(./getversion)"
|
echo "Cemu CI version: $(./getversion)"
|
||||||
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)" >> $GITHUB_ENV
|
echo "CEMU_FOLDER_NAME=Cemu_$(./getversion)" >> $GITHUB_ENV
|
||||||
echo "CEMU_VERSION=$(./getversion)" >> $GITHUB_ENV
|
echo "CEMU_VERSION=$(./getversion)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Create appimage
|
|
||||||
run: |
|
|
||||||
echo "to do"
|
|
||||||
|
|
||||||
- name: Create release from windows-bin
|
- name: Create release from windows-bin
|
||||||
run: |
|
run: |
|
||||||
ls ./
|
ls ./
|
||||||
@@ -57,6 +58,13 @@ jobs:
|
|||||||
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
|
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
|
||||||
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
|
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
|
||||||
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
rm -r ./${{ env.CEMU_FOLDER_NAME }}
|
||||||
|
|
||||||
|
- name: Create appimage
|
||||||
|
run: |
|
||||||
|
VERSION=${{ env.CEMU_VERSION }}
|
||||||
|
echo "Cemu Version is $VERSION"
|
||||||
|
ls cemu-appimage-x64
|
||||||
|
mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage
|
||||||
|
|
||||||
- name: Create release from ubuntu-bin
|
- name: Create release from ubuntu-bin
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
*.out
|
*.out
|
||||||
*.app
|
*.app
|
||||||
.vs
|
.vs
|
||||||
|
.vscode
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
build/
|
build/
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
|
|||||||
### Installing dependencies
|
### Installing dependencies
|
||||||
|
|
||||||
#### For Ubuntu and derivatives:
|
#### For Ubuntu and derivatives:
|
||||||
`sudo apt install -y git curl cmake ninja-build nasm libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev libpulse-dev`
|
`sudo apt install -y cmake curl freeglut3-dev git libgcrypt20-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build`
|
||||||
|
|
||||||
*Additionally, for Ubuntu 22.04 only:*
|
*Additionally, for Ubuntu 22.04 only:*
|
||||||
- `sudo apt install -y clang-12`
|
- `sudo apt install -y clang-12`
|
||||||
@@ -33,10 +33,10 @@ To compile Cemu, a recent enough compiler and STL with C++20 support is required
|
|||||||
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
|
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
|
||||||
|
|
||||||
#### For Arch and derivatives:
|
#### For Arch and derivatives:
|
||||||
`sudo pacman -S --needed git cmake llvm clang ninja nasm base-devel linux-headers gtk3 libsecret libgcrypt systemd freeglut zip unzip libpulse`
|
`sudo pacman -S --needed base-devel clang cmake freeglut git gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
|
||||||
|
|
||||||
#### For Fedora and derivatives:
|
#### For Fedora and derivatives:
|
||||||
`sudo dnf install git cmake clang ninja-build nasm kernel-headers gtk3-devel libsecret-devel libgcrypt-devel systemd-devel freeglut-devel perl-core zlib-devel cubeb-devel`
|
`sudo dnf install clang cmake cubeb-devel freeglut-devel git gtk3-devel kernel-headers libgcrypt-devel libsecret-devel nasm ninja-build perl-core systemd-devel zlib-devel`
|
||||||
|
|
||||||
### Build Cemu using cmake and clang
|
### Build Cemu using cmake and clang
|
||||||
1. `git clone --recursive https://github.com/cemu-project/Cemu`
|
1. `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||||
@@ -57,21 +57,32 @@ You can use it by replacing the step 3 with the following:
|
|||||||
- If step 3 is still failing or if you're not able to find the cause, please make an issue on our Github about it!
|
- If step 3 is still failing or if you're not able to find the cause, please make an issue on our Github about it!
|
||||||
- If step 4 gives you an error that contains something like `main.cpp.o: in function 'std::__cxx11::basic_string...`, you likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see below.
|
- If step 4 gives you an error that contains something like `main.cpp.o: in function 'std::__cxx11::basic_string...`, you likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see below.
|
||||||
- If step 4 gives you a different error, you could report it to this repo or try using GCC. Just make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
|
- If step 4 gives you a different error, you could report it to this repo or try using GCC. Just make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
|
||||||
- If step 4 gives you undefined libdecor_xx, you are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile.
|
- If step 4 gives you undefined libdecor_xx, you are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile.
|
||||||
|
- If step 3 fails during rebuild after `git pull` with an error that mentions RPATH, add this to the end of step 3: `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
|
||||||
|
|
||||||
## MacOS
|
## macOS
|
||||||
|
|
||||||
To compile Cemu, a recent enough compiler and STL with C++20 support is required! LLVM 13 and
|
To compile Cemu, a recent enough compiler and STL with C++20 support is required! LLVM 13 and
|
||||||
below, built in LLVM, and Xcode LLVM don't support the C++20 feature set required. Currently,
|
below, built in LLVM, and Xcode LLVM don't support the C++20 feature set required. Currently,
|
||||||
LLVM 15 isn't supported due to compatibility issues with Boost dependency. The OpenGL graphics
|
LLVM 15 isn't supported due to compatibility issues with Boost dependency. The OpenGL graphics
|
||||||
API isn't support on MacOS, Vulkan must be used. Additionally Vulkan must be used through the
|
API isn't support on macOS, Vulkan must be used. Additionally Vulkan must be used through the
|
||||||
Molten-VK compatibility layer.
|
Molten-VK compatibility layer
|
||||||
|
|
||||||
|
### On Apple Silicon Macs, Rosetta 2 and the x86_64 version of Homebrew must be used
|
||||||
|
|
||||||
|
You can skip this section if you have an Intel Mac. Every time you compile, you need to perform steps 2.
|
||||||
|
|
||||||
|
1. `softwareupdate --install-rosetta` # Install Rosetta 2 if you don't have it. This only has to be done once
|
||||||
|
2. `arch -x86_64 zsh` # run an x64 shell
|
||||||
|
|
||||||
### Installing brew
|
### Installing brew
|
||||||
`/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
|
||||||
|
1. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
||||||
|
2. `eval "$(/usr/local/Homebrew/bin/brew shellenv)"` # set x86_64 brew env
|
||||||
|
|
||||||
### Installing dependencies
|
### Installing dependencies
|
||||||
`brew install git cmake llvm@14 ninja nasm molten-vk`
|
|
||||||
|
`brew install boost git cmake llvm@14 ninja nasm molten-vk`
|
||||||
|
|
||||||
### Build Cemu using cmake and clang
|
### Build Cemu using cmake and clang
|
||||||
1. `git clone --recursive https://github.com/cemu-project/Cemu`
|
1. `git clone --recursive https://github.com/cemu-project/Cemu`
|
||||||
|
|||||||
+9
-2
@@ -6,7 +6,14 @@ option(MACOS_BUNDLE "The executable when built on macOS will be created as an ap
|
|||||||
set(EXPERIMENTAL_VERSION "" CACHE STRING "") # used by CI script to set experimental version
|
set(EXPERIMENTAL_VERSION "" CACHE STRING "") # used by CI script to set experimental version
|
||||||
|
|
||||||
if (EXPERIMENTAL_VERSION)
|
if (EXPERIMENTAL_VERSION)
|
||||||
add_definitions(-DEMULATOR_VERSION_MINOR=${EXPERIMENTAL_VERSION})
|
add_definitions(-DEMULATOR_VERSION_MINOR=${EXPERIMENTAL_VERSION})
|
||||||
|
execute_process(
|
||||||
|
COMMAND git log --format=%h -1
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
add_definitions(-DEMULATOR_HASH=${GIT_HASH})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_VCPKG)
|
if (ENABLE_VCPKG)
|
||||||
@@ -21,7 +28,7 @@ if (ENABLE_VCPKG)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
project(Cemu VERSION 2.0)
|
project(Cemu VERSION 2.0.0)
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
|
|||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -z "${GITHUB_WORKSPACE}" ]; then
|
||||||
|
export GITHUB_WORKSPACE="."
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
|
||||||
|
chmod a+x linuxdeploy*.AppImage
|
||||||
|
curl -sSfL https://github.com$(curl https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous | grep "mkappimage-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2) -o mkappimage.AppImage
|
||||||
|
chmod a+x mkappimage.AppImage
|
||||||
|
curl -sSfLO "https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh"
|
||||||
|
chmod a+x linuxdeploy-plugin-gtk.sh
|
||||||
|
|
||||||
|
if [[ ! -e /usr/lib/x86_64-linux-gnu ]]; then
|
||||||
|
sed -i 's#lib\/x86_64-linux-gnu#lib64#g' linuxdeploy-plugin-gtk.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p AppDir/usr/
|
||||||
|
cp dist/linux/{info.cemu.Cemu.desktop,info.cemu.Cemu.png} AppDir/
|
||||||
|
|
||||||
|
mkdir -p AppDir/usr/share/applications
|
||||||
|
mkdir -p AppDir/usr/share/icons/hicolor/scalable/apps
|
||||||
|
mkdir -p AppDir/usr/lib
|
||||||
|
|
||||||
|
cp -r bin AppDir/usr/
|
||||||
|
cp /usr/lib/x86_64-linux-gnu/{libsepol.so.1,libffi.so.7,libpcre.so.3,libGLU.so.1,libthai.so.0} AppDir/usr/lib
|
||||||
|
|
||||||
|
chmod +x AppDir/usr/bin/Cemu
|
||||||
|
#chmod +x AppDir/AppRun
|
||||||
|
|
||||||
|
export UPD_INFO="gh-releases-zsync|cemu-project|Cemu|ci|Cemu.AppImage.zsync"
|
||||||
|
./linuxdeploy-x86_64.AppImage --appimage-extract-and-run\
|
||||||
|
--appdir="$GITHUB_WORKSPACE"/AppDir/ \
|
||||||
|
-d "$GITHUB_WORKSPACE"/AppDir/info.cemu.Cemu.desktop \
|
||||||
|
-i "$GITHUB_WORKSPACE"/AppDir/info.cemu.Cemu.png \
|
||||||
|
-e "$GITHUB_WORKSPACE"/AppDir/usr/bin/Cemu \
|
||||||
|
--plugin gtk
|
||||||
|
|
||||||
|
GITVERSION=$(git rev-parse --short HEAD)
|
||||||
|
echo $GITVERSION
|
||||||
|
if [[ -z ${GITVERSION} ]]; then
|
||||||
|
GITVERSION=experimental
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Cemu Version Cemu-${GITVERSION}"
|
||||||
|
rm AppDir/usr/lib/libwayland-client.so.0
|
||||||
|
echo "export LC_ALL=C" >> AppDir/apprun-hooks/linuxdeploy-plugin-gtk.sh
|
||||||
|
VERSION=${GITVERSION} ./mkappimage.AppImage --appimage-extract-and-run "$GITHUB_WORKSPACE"/AppDir
|
||||||
|
|
||||||
|
mkdir -p "$GITHUB_WORKSPACE"/artifacts/
|
||||||
|
mv Cemu-${GITVERSION}-x86_64.AppImage "$GITHUB_WORKSPACE"/artifacts/
|
||||||
Vendored
+1
-1
@@ -3,7 +3,7 @@ Name=Cemu
|
|||||||
Type=Application
|
Type=Application
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Icon=info.cemu.Cemu
|
Icon=info.cemu.Cemu
|
||||||
Exec=cemu
|
Exec=Cemu
|
||||||
GenericName=Wii U Emulator
|
GenericName=Wii U Emulator
|
||||||
GenericName[fi]=Wii U -emulaattori
|
GenericName[fi]=Wii U -emulaattori
|
||||||
GenericName[el]=Πρόγραμμα προσομοίωσης Wii U
|
GenericName[el]=Πρόγραμμα προσομοίωσης Wii U
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -75,6 +75,13 @@ if (MACOS_BUNDLE)
|
|||||||
set(RESOURCE_FILES "${CMAKE_SOURCE_DIR}/src/resource/cemu.icns")
|
set(RESOURCE_FILES "${CMAKE_SOURCE_DIR}/src/resource/cemu.icns")
|
||||||
target_sources(CemuBin PRIVATE "${RESOURCE_FILES}")
|
target_sources(CemuBin PRIVATE "${RESOURCE_FILES}")
|
||||||
|
|
||||||
|
set(MACOSX_BUNDLE_ICON_FILE "cemu.icns")
|
||||||
|
set(MACOSX_BUNDLE_GUI_IDENTIFIER "info.cemu.Cemu")
|
||||||
|
set(MACOSX_BUNDLE_BUNDLE_NAME "Cemu")
|
||||||
|
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${CMAKE_PROJECT_VERSION})
|
||||||
|
set(MACOSX_BUNDLE_BUNDLE_VERSION ${CMAKE_PROJECT_VERSION})
|
||||||
|
set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2022 Cemu Project")
|
||||||
|
|
||||||
set(MACOSX_BUNDLE_CATEGORY "public.app-category.games")
|
set(MACOSX_BUNDLE_CATEGORY "public.app-category.games")
|
||||||
|
|
||||||
set_target_properties(CemuBin PROPERTIES
|
set_target_properties(CemuBin PROPERTIES
|
||||||
@@ -115,6 +122,12 @@ target_link_libraries(CemuBin PRIVATE
|
|||||||
SDL2::SDL2
|
SDL2::SDL2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
# due to nasm output some linkers will make stack executable.
|
||||||
|
# cemu does not require this so we explicity disable it.
|
||||||
|
target_link_options(CemuBin PRIVATE -z noexecstack)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (ENABLE_WXWIDGETS)
|
if (ENABLE_WXWIDGETS)
|
||||||
target_link_libraries(CemuBin PRIVATE wx::base wx::core)
|
target_link_libraries(CemuBin PRIVATE wx::base wx::core)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -178,6 +178,8 @@ add_library(CemuCafe
|
|||||||
HW/Latte/Renderer/Vulkan/LatteTextureVk.h
|
HW/Latte/Renderer/Vulkan/LatteTextureVk.h
|
||||||
HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp
|
HW/Latte/Renderer/Vulkan/RendererShaderVk.cpp
|
||||||
HW/Latte/Renderer/Vulkan/RendererShaderVk.h
|
HW/Latte/Renderer/Vulkan/RendererShaderVk.h
|
||||||
|
HW/Latte/Renderer/Vulkan/SwapchainInfoVk.cpp
|
||||||
|
HW/Latte/Renderer/Vulkan/SwapchainInfoVk.h
|
||||||
HW/Latte/Renderer/Vulkan/TextureReadbackVk.cpp
|
HW/Latte/Renderer/Vulkan/TextureReadbackVk.cpp
|
||||||
HW/Latte/Renderer/Vulkan/VKRBase.h
|
HW/Latte/Renderer/Vulkan/VKRBase.h
|
||||||
HW/Latte/Renderer/Vulkan/VKRMemoryManager.cpp
|
HW/Latte/Renderer/Vulkan/VKRMemoryManager.cpp
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include "Cafe/HW/Espresso/Interpreter/PPCInterpreterInternal.h"
|
#include "Cafe/HW/Espresso/Interpreter/PPCInterpreterInternal.h"
|
||||||
#include "Cafe/HW/Espresso/Recompiler/PPCRecompiler.h"
|
#include "Cafe/HW/Espresso/Recompiler/PPCRecompiler.h"
|
||||||
#include "audio/IAudioAPI.h"
|
#include "audio/IAudioAPI.h"
|
||||||
|
#include "audio/IAudioInputAPI.h"
|
||||||
#include "Cafe/HW/Espresso/Debugger/Debugger.h"
|
#include "Cafe/HW/Espresso/Debugger/Debugger.h"
|
||||||
|
|
||||||
#include "config/ActiveSettings.h"
|
#include "config/ActiveSettings.h"
|
||||||
@@ -402,6 +403,7 @@ void cemu_initForGame()
|
|||||||
GraphicPack2::ActivateForCurrentTitle();
|
GraphicPack2::ActivateForCurrentTitle();
|
||||||
// print audio log
|
// print audio log
|
||||||
IAudioAPI::PrintLogging();
|
IAudioAPI::PrintLogging();
|
||||||
|
IAudioInputAPI::PrintLogging();
|
||||||
// everything initialized
|
// everything initialized
|
||||||
forceLog_printf("------- Run title -------");
|
forceLog_printf("------- Run title -------");
|
||||||
// wait till GPU thread is initialized
|
// wait till GPU thread is initialized
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ bool fsc_nextDir(FSCVirtualFile* fscFile, FSCDirEntry* dirEntry)
|
|||||||
/*
|
/*
|
||||||
* Create directory
|
* Create directory
|
||||||
*/
|
*/
|
||||||
bool fsc_createDir(char* path, sint32* fscStatus)
|
bool fsc_createDir(const char* path, sint32* fscStatus)
|
||||||
{
|
{
|
||||||
fscDeviceC* fscDevice = NULL;
|
fscDeviceC* fscDevice = NULL;
|
||||||
*fscStatus = FSC_STATUS_UNDEFINED;
|
*fscStatus = FSC_STATUS_UNDEFINED;
|
||||||
@@ -461,7 +461,7 @@ bool fsc_createDir(char* path, sint32* fscStatus)
|
|||||||
/*
|
/*
|
||||||
* Rename file or directory
|
* Rename file or directory
|
||||||
*/
|
*/
|
||||||
bool fsc_rename(char* srcPath, char* dstPath, sint32* fscStatus)
|
bool fsc_rename(const char* srcPath, const char* dstPath, sint32* fscStatus)
|
||||||
{
|
{
|
||||||
std::string srcDevicePath;
|
std::string srcDevicePath;
|
||||||
std::string dstDevicePath;
|
std::string dstDevicePath;
|
||||||
@@ -481,7 +481,7 @@ bool fsc_rename(char* srcPath, char* dstPath, sint32* fscStatus)
|
|||||||
/*
|
/*
|
||||||
* Delete file or subdirectory
|
* Delete file or subdirectory
|
||||||
*/
|
*/
|
||||||
bool fsc_remove(char* path, sint32* fscStatus)
|
bool fsc_remove(const char* path, sint32* fscStatus)
|
||||||
{
|
{
|
||||||
std::string devicePath;
|
std::string devicePath;
|
||||||
fscDeviceC* fscDevice = NULL;
|
fscDeviceC* fscDevice = NULL;
|
||||||
|
|||||||
@@ -167,9 +167,9 @@ void fsc_unmountAll();
|
|||||||
|
|
||||||
FSCVirtualFile* fsc_open(const char* path, FSC_ACCESS_FLAG accessFlags, sint32* fscStatus, sint32 maxPriority=FSC_PRIORITY_MAX);
|
FSCVirtualFile* fsc_open(const char* path, FSC_ACCESS_FLAG accessFlags, sint32* fscStatus, sint32 maxPriority=FSC_PRIORITY_MAX);
|
||||||
FSCVirtualFile* fsc_openDirIterator(const char* path, sint32* fscStatus);
|
FSCVirtualFile* fsc_openDirIterator(const char* path, sint32* fscStatus);
|
||||||
bool fsc_createDir(char* path, sint32* fscStatus);
|
bool fsc_createDir(const char* path, sint32* fscStatus);
|
||||||
bool fsc_rename(char* srcPath, char* dstPath, sint32* fscStatus);
|
bool fsc_rename(const char* srcPath, const char* dstPath, sint32* fscStatus);
|
||||||
bool fsc_remove(char* path, sint32* fscStatus);
|
bool fsc_remove(const char* path, sint32* fscStatus);
|
||||||
bool fsc_nextDir(FSCVirtualFile* fscFile, FSCDirEntry* dirEntry);
|
bool fsc_nextDir(FSCVirtualFile* fscFile, FSCDirEntry* dirEntry);
|
||||||
void fsc_close(FSCVirtualFile* fscFile);
|
void fsc_close(FSCVirtualFile* fscFile);
|
||||||
uint32 fsc_getFileSize(FSCVirtualFile* fscFile);
|
uint32 fsc_getFileSize(FSCVirtualFile* fscFile);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#include "util/IniParser/IniParser.h"
|
#include "util/IniParser/IniParser.h"
|
||||||
#include "util/helpers/StringHelpers.h"
|
#include "util/helpers/StringHelpers.h"
|
||||||
#include "Cafe/CafeSystem.h"
|
#include "Cafe/CafeSystem.h"
|
||||||
|
#include <cinttypes>
|
||||||
|
|
||||||
std::vector<GraphicPackPtr> GraphicPack2::s_graphic_packs;
|
std::vector<GraphicPackPtr> GraphicPack2::s_graphic_packs;
|
||||||
std::vector<GraphicPackPtr> GraphicPack2::s_active_graphic_packs;
|
std::vector<GraphicPackPtr> GraphicPack2::s_active_graphic_packs;
|
||||||
@@ -660,7 +661,7 @@ void GraphicPack2::LoadShaders()
|
|||||||
uint64 shader_base_hash = 0;
|
uint64 shader_base_hash = 0;
|
||||||
uint64 shader_aux_hash = 0;
|
uint64 shader_aux_hash = 0;
|
||||||
wchar_t shader_type[256]{};
|
wchar_t shader_type[256]{};
|
||||||
if (filename.size() < 256 && swscanf(filename.c_str(), L"%I64x_%I64x_%ls", &shader_base_hash, &shader_aux_hash, shader_type) == 3)
|
if (filename.size() < 256 && swscanf(filename.c_str(), L"%" SCNx64 "_%" SCNx64 "_%ls", &shader_base_hash, &shader_aux_hash, shader_type) == 3)
|
||||||
{
|
{
|
||||||
if (shader_type[0] == 'p' && shader_type[1] == 's')
|
if (shader_type[0] == 'p' && shader_type[1] == 's')
|
||||||
m_custom_shaders.emplace_back(LoadShader(p, shader_base_hash, shader_aux_hash, GP_SHADER_TYPE::PIXEL));
|
m_custom_shaders.emplace_back(LoadShader(p, shader_base_hash, shader_aux_hash, GP_SHADER_TYPE::PIXEL));
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ struct LatteGPUState_t
|
|||||||
{
|
{
|
||||||
bool isEnabled;
|
bool isEnabled;
|
||||||
MPTR physPtr;
|
MPTR physPtr;
|
||||||
volatile uint32 flipRequestCount;
|
std::atomic<uint32> flipRequestCount;
|
||||||
volatile uint32 flipExecuteCount;
|
std::atomic<uint32> flipExecuteCount;
|
||||||
}screen[2];
|
}screen[2];
|
||||||
}osScreen;
|
}osScreen;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -123,8 +123,8 @@ void LatteOverlay_renderOverlay(ImVec2& position, ImVec2& pivot, sint32 directio
|
|||||||
g_renderer->AppendOverlayDebugInfo();
|
g_renderer->AppendOverlayDebugInfo();
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
@@ -170,8 +170,8 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
ImGui::TextUnformatted(s_mii_name.c_str());
|
ImGui::TextUnformatted(s_mii_name.c_str());
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
|
|
||||||
// controller
|
// controller
|
||||||
std::vector<std::pair<int, std::string>> profiles;
|
std::vector<std::pair<int, std::string>> profiles;
|
||||||
@@ -209,8 +209,8 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
}
|
}
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
s_init_overlay = true;
|
s_init_overlay = true;
|
||||||
@@ -254,10 +254,8 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
}
|
}
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,8 +304,8 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
}
|
}
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,8 +361,8 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
}
|
}
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,8 +433,8 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -475,10 +473,9 @@ void LatteOverlay_RenderNotifications(ImVec2& position, ImVec2& pivot, sint32 di
|
|||||||
}
|
}
|
||||||
|
|
||||||
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
position.y += (ImGui::GetWindowSize().y + 10.0f) * direction;
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
ImGui::PopFont();
|
ImGui::PopFont();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include "util/Zir/EmitterGLSL/ZpIREmitGLSL.h"
|
#include "util/Zir/EmitterGLSL/ZpIREmitGLSL.h"
|
||||||
#include "util/Zir/Core/ZpIRDebug.h"
|
#include "util/Zir/Core/ZpIRDebug.h"
|
||||||
#include "util/containers/flat_hash_map.hpp"
|
#include "util/containers/flat_hash_map.hpp"
|
||||||
|
#include <cinttypes>
|
||||||
|
|
||||||
struct _ShaderHashCache
|
struct _ShaderHashCache
|
||||||
{
|
{
|
||||||
@@ -294,7 +295,7 @@ void LatteShader_CreateRendererShader(LatteDecompilerShader* shader, bool compil
|
|||||||
{
|
{
|
||||||
if (shader->hasError )
|
if (shader->hasError )
|
||||||
{
|
{
|
||||||
forceLog_printf("Unable to compile shader %I64x", shader->baseHash);
|
forceLog_printf("Unable to compile shader %" PRIx64, shader->baseHash);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -350,10 +350,10 @@ void LatteShaderCache_load()
|
|||||||
|
|
||||||
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureTVId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureTVId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
||||||
}
|
}
|
||||||
ImGui::End();
|
|
||||||
ImGui::PopStyleVar(2);
|
|
||||||
g_renderer->ImguiEnd();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
|
ImGui::PopStyleVar(2);
|
||||||
|
g_renderer->ImguiEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
g_renderer->BeginFrame(false);
|
g_renderer->BeginFrame(false);
|
||||||
@@ -365,7 +365,7 @@ void LatteShaderCache_load()
|
|||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 0,0 });
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 0,0 });
|
||||||
|
|
||||||
if (ImGui::Begin("Background texture2", nullptr, kPopupFlags))
|
if (ImGui::Begin("Background texture2", nullptr, kPopupFlags))
|
||||||
{
|
{
|
||||||
if (g_shaderCacheLoaderState.textureDRCId)
|
if (g_shaderCacheLoaderState.textureDRCId)
|
||||||
{
|
{
|
||||||
float imageDisplayWidth = io.DisplaySize.x;
|
float imageDisplayWidth = io.DisplaySize.x;
|
||||||
@@ -383,11 +383,11 @@ void LatteShaderCache_load()
|
|||||||
|
|
||||||
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureDRCId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureDRCId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
||||||
}
|
}
|
||||||
ImGui::End();
|
}
|
||||||
ImGui::PopStyleVar(2);
|
ImGui::End();
|
||||||
g_renderer->ImguiEnd();
|
ImGui::PopStyleVar(2);
|
||||||
}
|
g_renderer->ImguiEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
g_renderer->SwapBuffers(true, true);
|
g_renderer->SwapBuffers(true, true);
|
||||||
}
|
}
|
||||||
@@ -452,8 +452,8 @@ void LatteShaderCache_ShowProgress(const std::function <bool(void)>& loadUpdateF
|
|||||||
}
|
}
|
||||||
|
|
||||||
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureTVId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureTVId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
ImGui::PopStyleVar(2);
|
ImGui::PopStyleVar(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -502,8 +502,8 @@ void LatteShaderCache_ShowProgress(const std::function <bool(void)>& loadUpdateF
|
|||||||
text = fmt::format("{}/{} ({}%)", g_shaderCacheLoaderState.loadedShaderFiles, g_shaderCacheLoaderState.shaderFileCount, (int)(percentLoaded * 100));
|
text = fmt::format("{}/{} ({}%)", g_shaderCacheLoaderState.loadedShaderFiles, g_shaderCacheLoaderState.shaderFileCount, (int)(percentLoaded * 100));
|
||||||
ImGui::SetCursorPosX(width - ImGui::CalcTextSize(text.c_str()).x / 2);
|
ImGui::SetCursorPosX(width - ImGui::CalcTextSize(text.c_str()).x / 2);
|
||||||
ImGui::Text("%s", text.c_str());
|
ImGui::Text("%s", text.c_str());
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
ImGui::PopFont();
|
ImGui::PopFont();
|
||||||
ImGui::PopStyleColor(2);
|
ImGui::PopStyleColor(2);
|
||||||
|
|
||||||
@@ -529,13 +529,11 @@ void LatteShaderCache_ShowProgress(const std::function <bool(void)>& loadUpdateF
|
|||||||
ImGui::Text("Geometry shaders");
|
ImGui::Text("Geometry shaders");
|
||||||
ImGui::SameLine(offset);
|
ImGui::SameLine(offset);
|
||||||
ImGui::Text("%d", shaderCacheScreenStats.geometryShaderCount);
|
ImGui::Text("%d", shaderCacheScreenStats.geometryShaderCount);
|
||||||
|
|
||||||
ImGui::End();
|
|
||||||
}
|
}
|
||||||
|
ImGui::End();
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
ImGui::PopFont();
|
ImGui::PopFont();
|
||||||
}
|
}
|
||||||
|
|
||||||
g_renderer->ImguiEnd();
|
g_renderer->ImguiEnd();
|
||||||
lastFrameUpdate = tick_cached();
|
lastFrameUpdate = tick_cached();
|
||||||
}
|
}
|
||||||
@@ -565,11 +563,11 @@ void LatteShaderCache_ShowProgress(const std::function <bool(void)>& loadUpdateF
|
|||||||
}
|
}
|
||||||
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureDRCId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
ImGui::GetWindowDrawList()->AddImage(g_shaderCacheLoaderState.textureDRCId, ImVec2(paddingLeftAndRight, paddingTopAndBottom), ImVec2(io.DisplaySize.x-paddingLeftAndRight, io.DisplaySize.y-paddingTopAndBottom), { 0,1 }, { 1,0 });
|
||||||
}
|
}
|
||||||
ImGui::End();
|
}
|
||||||
ImGui::PopStyleVar(2);
|
ImGui::End();
|
||||||
g_renderer->ImguiEnd();
|
ImGui::PopStyleVar(2);
|
||||||
}
|
g_renderer->ImguiEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
// finish frame
|
// finish frame
|
||||||
g_renderer->SwapBuffers(true, true);
|
g_renderer->SwapBuffers(true, true);
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ bool LatteHandleOSScreen_TV()
|
|||||||
LatteRenderTarget_copyToBackbuffer(osScreenTVTex[bufferIndexTV]->baseTexture->baseView, false);
|
LatteRenderTarget_copyToBackbuffer(osScreenTVTex[bufferIndexTV]->baseTexture->baseView, false);
|
||||||
|
|
||||||
if (LatteGPUState.osScreen.screen[0].flipExecuteCount != LatteGPUState.osScreen.screen[0].flipRequestCount)
|
if (LatteGPUState.osScreen.screen[0].flipExecuteCount != LatteGPUState.osScreen.screen[0].flipRequestCount)
|
||||||
LatteGPUState.osScreen.screen[0].flipExecuteCount = LatteGPUState.osScreen.screen[0].flipRequestCount;
|
LatteGPUState.osScreen.screen[0].flipExecuteCount.store(LatteGPUState.osScreen.screen[0].flipRequestCount);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ bool LatteHandleOSScreen_DRC()
|
|||||||
LatteRenderTarget_copyToBackbuffer(osScreenDRCTex[bufferIndexDRC]->baseTexture->baseView, true);
|
LatteRenderTarget_copyToBackbuffer(osScreenDRCTex[bufferIndexDRC]->baseTexture->baseView, true);
|
||||||
|
|
||||||
if (LatteGPUState.osScreen.screen[1].flipExecuteCount != LatteGPUState.osScreen.screen[1].flipRequestCount)
|
if (LatteGPUState.osScreen.screen[1].flipExecuteCount != LatteGPUState.osScreen.screen[1].flipRequestCount)
|
||||||
LatteGPUState.osScreen.screen[1].flipExecuteCount = LatteGPUState.osScreen.screen[1].flipRequestCount;
|
LatteGPUState.osScreen.screen[1].flipExecuteCount.store(LatteGPUState.osScreen.screen[1].flipRequestCount);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user