mirror of
https://github.com/RyzenDew/Lime-3DS-Emulator.git
synced 2024-06-02 15:38:50 +02:00
Merge branch 'Lime3DS:master' into master
This commit is contained in:
commit
be14833ad7
18
.github/workflows/build.yml
vendored
18
.github/workflows/build.yml
vendored
|
@ -80,6 +80,10 @@ jobs:
|
|||
key: ${{ runner.os }}-${{ matrix.target }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-${{ matrix.target }}-
|
||||
- name: Setup XCode
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
- name: Install tools
|
||||
run: brew install ccache ninja spirv-tools
|
||||
- name: Build
|
||||
|
@ -153,11 +157,13 @@ jobs:
|
|||
- name: Install extra tools (MSVC)
|
||||
run: choco install ccache ninja wget
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
- name: Install vulkan-sdk (MSVC)
|
||||
run: |
|
||||
wget https://sdk.lunarg.com/sdk/download/1.3.280.0/windows/VulkanSDK-1.3.280.0-Installer.exe -O D:/a/_temp/vulkan.exe
|
||||
D:/a/_temp/vulkan.exe --accept-licenses --default-answer --confirm-command install
|
||||
- name: Set up Vulkan SDK (MSVC)
|
||||
uses: humbletim/setup-vulkan-sdk@v1.2.0
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
with:
|
||||
vulkan-query-version: latest
|
||||
vulkan-components: SPIRV-Tools
|
||||
vulkan-use-cache: true
|
||||
- name: Set up MSYS2
|
||||
uses: msys2/setup-msys2@v2
|
||||
if: ${{ matrix.target == 'msys2' }}
|
||||
|
@ -248,6 +254,10 @@ jobs:
|
|||
key: ${{ runner.os }}-ios-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-ios-
|
||||
- name: Setup XCode
|
||||
uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: latest-stable
|
||||
- name: Install tools
|
||||
run: brew install ccache ninja
|
||||
- name: Build
|
||||
|
|
|
@ -235,7 +235,7 @@ find_package(Threads REQUIRED)
|
|||
|
||||
if (ENABLE_QT)
|
||||
if (NOT USE_SYSTEM_QT)
|
||||
download_qt(6.6.0)
|
||||
download_qt(6.7.0)
|
||||
endif()
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia Concurrent)
|
||||
|
|
21
README.md
21
README.md
|
@ -15,24 +15,25 @@
|
|||
|
||||
# Installation
|
||||
|
||||
## Linux
|
||||
|
||||
The app is available in the [Releases](https://github.com/Lime3DS/Lime3DS/releases) page as `.appimage` and `.tar.gz`.
|
||||
|
||||
<a href=https://flathub.org/apps/io.github.lime3ds.Lime3DS><img width='240' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.png'/></a>
|
||||
|
||||
## Windows & MacOS
|
||||
### Windows & MacOS
|
||||
|
||||
Download the latest release from [Releases](https://github.com/Lime3DS/Lime3DS/releases).
|
||||
|
||||
## Android
|
||||
Download the latest `.apk`/`.aab` release from [Releases](https://github.com/Lime3DS/Lime3DS/releases). (A F-Droid/IzzyOnDroid release is planned to drop soon)
|
||||
### Android
|
||||
Download the latest `.apk` release from [Releases](https://github.com/Lime3DS/Lime3DS/releases). (A F-Droid/IzzyOnDroid release is planned to drop soon)
|
||||
|
||||
### Linux
|
||||
|
||||
Lime3DS is available as an AppImage on the [Releases](https://github.com/Lime3DS/Lime3DS/releases) page.
|
||||
|
||||
We are also on Flathub:
|
||||
|
||||
<a href=https://flathub.org/apps/io.github.lime3ds.Lime3DS><img width='180' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.png'/></a>
|
||||
|
||||
# Contribute
|
||||
If you believe you can help with this project, please lend us your talent! We're a team of passionate enthusiasts who need all the help we can get.
|
||||
|
||||
## Discord
|
||||
# Discord
|
||||
Join our Discord community to discuss the project or talk with the developers.
|
||||
|
||||
[![](https://dcbadge.vercel.app/api/server/4ZjMpAp3M6)](https://discord.gg/4ZjMpAp3M6)
|
||||
|
|
5
dist/languages/da_DK.ts
vendored
5
dist/languages/da_DK.ts
vendored
|
@ -3893,11 +3893,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonym data bliver indsamlet</a>for at hjælpe med at forbedre Citra.<br/><br/>Har du lyst til at dele din brugsdata med os?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/de.ts
vendored
5
dist/languages/de.ts
vendored
|
@ -3895,11 +3895,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation>Möchten Sie <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>anonyme Nutzungsdaten</a> an das Citra Team senden und so helfen, Citra weiter zu verbessern?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/el.ts
vendored
5
dist/languages/el.ts
vendored
|
@ -3894,11 +3894,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Συλλέγονται ανώνυμα δεδομένα</a> για τη βελτίωση του Citra. <br/><br/>Θέλετε να μοιραστείτε τα δεδομένα χρήσης σας με εμάς;</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/es_ES.ts
vendored
5
dist/languages/es_ES.ts
vendored
|
@ -3896,11 +3896,6 @@ Por favor, compruebe la instalación de FFmpeg usada para la compilación.</tran
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Se recogen datos anónimos</a> para ayudar a mejorar Citra. <br/><br/>¿Quieres compartir tus datos de uso con nosotros?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/fi.ts
vendored
5
dist/languages/fi.ts
vendored
|
@ -3893,11 +3893,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonyymiä tietoa kerätään</a>parantaaksemme Citraa. <br/><br/>Haluaisitko jakaa käyttötetoa meidän kanssa?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/fr.ts
vendored
5
dist/languages/fr.ts
vendored
|
@ -3896,11 +3896,6 @@ Veuillez vérifier votre installation FFmpeg utilisée pour la compilation.</tra
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Des données anonymes sont collectées</a> afin d'aider à l'amélioration de Citra. <br/><br/>Souhaitez vous communiquer vos données avec nous ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/hu_HU.ts
vendored
5
dist/languages/hu_HU.ts
vendored
|
@ -3892,11 +3892,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/id.ts
vendored
5
dist/languages/id.ts
vendored
|
@ -3895,11 +3895,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Data anonim dikumpulkan</a>untuk membantu Citra menjadi lebih baik. <br/><br/>Apakah Anda ingin membagikan penggunaan data Anda dengan kami?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/it.ts
vendored
5
dist/languages/it.ts
vendored
|
@ -3896,11 +3896,6 @@ Verifica l'installazione di FFmpeg usata per la compilazione.</translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Vengono raccolti dati anonimi </a> per aiutare lo sviluppo di Citra. <br/><br/>Vuoi condividere i tuoi dati di utilizzo con noi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ja_JP.ts
vendored
5
dist/languages/ja_JP.ts
vendored
|
@ -3897,11 +3897,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>匿名のデータ</a>がCitraの改善のために収集されます<br/><br/>利用状況データの提供に同意しますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ko_KR.ts
vendored
5
dist/languages/ko_KR.ts
vendored
|
@ -3896,11 +3896,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation>Citra를 개선하기위해 <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>익명데이터가 수집됩니다</a>. <br/><br/>사용 데이터를 공유하시겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/lt_LT.ts
vendored
5
dist/languages/lt_LT.ts
vendored
|
@ -3891,11 +3891,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anoniminiai duomenys yra renkami </a> kad padėtumėte Citra komandai. <br/><br/>Ar norite pasidalinti savo duomenimis su mumis?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/nb.ts
vendored
5
dist/languages/nb.ts
vendored
|
@ -3894,11 +3894,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonym data samles inn</a> for å forbedre Citra. <br/><br/>Vil du dele dine brukerdata med oss?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/nl.ts
vendored
5
dist/languages/nl.ts
vendored
|
@ -3896,11 +3896,6 @@ Controleer de FFmpeg-installatie die wordt gebruikt voor de compilatie.</transla
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonieme gegevens worden verzameld</a> om Citra te helpen verbeteren. <br/><br/> Wilt u uw gebruiksgegevens met ons delen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/pl_PL.ts
vendored
5
dist/languages/pl_PL.ts
vendored
|
@ -3893,11 +3893,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonimowe dane są zbierane</a> w celu wsparcia rozwoju Citry. <br/><br/>Czy chciałbyś się z nami podzielić danymi użytkowania?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/pt_BR.ts
vendored
5
dist/languages/pt_BR.ts
vendored
|
@ -3895,11 +3895,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Dados anônimos são recolhidos</a> para ajudar a melhorar o Citra. <br/><br/>Gostaria de compartilhar os seus dados de utilização conosco?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ro_RO.ts
vendored
5
dist/languages/ro_RO.ts
vendored
|
@ -3894,11 +3894,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Date anonime sunt colectate</a> pentru a ajuta îmbunătățirea lui Citra. <br/><br/> Doriți să partajați uzul de datele cu noi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/ru_RU.ts
vendored
5
dist/languages/ru_RU.ts
vendored
|
@ -3898,11 +3898,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation>Для оказания помощи в улучшении приложения Citra <a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>проводится сбор анонимных данных</a>. <br/><br/>Поделиться данными об использовании?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/tr_TR.ts
vendored
5
dist/languages/tr_TR.ts
vendored
|
@ -3893,11 +3893,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Citrayı geliştirmeye yardımcı olmak için</a> anonim veri toplandı. <br/><br/>Kullanım verinizi bizimle paylaşmak ister misiniz?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/vi_VN.ts
vendored
5
dist/languages/vi_VN.ts
vendored
|
@ -3893,11 +3893,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Dữ liệu ẩn danh được thu thập</a> để giúp cải thiện Citra. <br/><br/>Bạn có muốn chia sẻ dữ liệu của bạn với chúng tôi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/zh_CN.ts
vendored
5
dist/languages/zh_CN.ts
vendored
|
@ -3896,11 +3896,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>我们收集匿名数据</a>来帮助改进 Citra 。<br/><br/>您愿意和我们分享你的使用数据吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
5
dist/languages/zh_TW.ts
vendored
5
dist/languages/zh_TW.ts
vendored
|
@ -3894,11 +3894,6 @@ Please check your FFmpeg installation used for compilation.</source>
|
|||
</context>
|
||||
<context>
|
||||
<name>GMainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="144"/>
|
||||
<source><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous data is collected</a> to help improve Citra. <br/><br/>Would you like to share your usage data with us?</source>
|
||||
<translation><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>收集匿名的使用資料</a>可以用來改善 Citra。<br/><br/>您同意將您的使用資料分享給 Citra 嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/lime_qt/main.cpp" line="147"/>
|
||||
<source>Telemetry</source>
|
||||
|
|
2
externals/catch2
vendored
2
externals/catch2
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 8ac8190e494a381072c89f5e161b92a08d98b37b
|
||||
Subproject commit b5373dadca40b7edc8570cf9470b9b1cb1934d40
|
2
externals/cubeb
vendored
2
externals/cubeb
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 1572ea3e8d50514d3adaba1ad17272f57b5b331c
|
||||
Subproject commit 67db4cbc18581c8a6d8ea935af9854ed9729e7a7
|
2
externals/libyuv
vendored
2
externals/libyuv
vendored
|
@ -1 +1 @@
|
|||
Subproject commit ba796a32e774270386075fa6f354598d757c1a3b
|
||||
Subproject commit 3af6cafe8d3753536a1f0e9e831fb9fd4563e10b
|
2
externals/openal-soft
vendored
2
externals/openal-soft
vendored
|
@ -1 +1 @@
|
|||
Subproject commit ee54760865d345fda8ce467976c54af73ddff5c9
|
||||
Subproject commit 111397c71a5f1c2c88e05da9c84edfdba2e472a4
|
2
externals/sdl2/SDL
vendored
2
externals/sdl2/SDL
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 4d91f0e796b146c3bcf2cda22251b1e56cc0ebfb
|
||||
Subproject commit e75d72670f66cd1943018eec9c6bfbef1c6d81c4
|
|
@ -264,8 +264,9 @@ void Config::ReadValues() {
|
|||
}
|
||||
|
||||
// Web Service
|
||||
NetSettings::values.web_api_url =
|
||||
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
|
||||
NetSettings::values.enable_telemetry =
|
||||
sdl2_config->GetBoolean("WebService", "enable_telemetry", false);
|
||||
NetSettings::values.web_api_url = sdl2_config->GetString("WebService", "web_api_url", "");
|
||||
NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");
|
||||
NetSettings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", "");
|
||||
}
|
||||
|
|
|
@ -353,8 +353,11 @@ gdbstub_port=24689
|
|||
# To LLE a service module add "LLE\<module name>=true"
|
||||
|
||||
[WebService]
|
||||
# Whether or not to enable telemetry
|
||||
# 0 (default): No, 1: Yes
|
||||
enable_telemetry =
|
||||
# URL for Web API
|
||||
web_api_url = https://api.citra-emu.org
|
||||
web_api_url =
|
||||
# Username and token for Citra Web Service
|
||||
# See https://profile.citra-emu.org/ for more info
|
||||
citra_username =
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include "core/hle/service/nfc/nfc.h"
|
||||
#include "core/loader/loader.h"
|
||||
#include "core/savestate.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "jni/android_common/android_common.h"
|
||||
#include "jni/applets/mii_selector.h"
|
||||
#include "jni/applets/swkbd.h"
|
||||
|
@ -165,7 +166,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
|
|||
#elif ENABLE_VULKAN
|
||||
window = std::make_unique<EmuWindow_Android_Vulkan>(s_surf, vulkan_library);
|
||||
#else
|
||||
// TODO: Add a null renderer backend for this, perhaps.
|
||||
// TODO: Add a null renderer backend for this, perhaps.
|
||||
#error "At least one renderer must be enabled."
|
||||
#endif
|
||||
break;
|
||||
|
@ -207,6 +208,9 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
|
|||
return load_result;
|
||||
}
|
||||
|
||||
auto& telemetry_session = system.TelemetrySession();
|
||||
telemetry_session.AddField(Common::Telemetry::FieldType::App, "Frontend", "Android");
|
||||
|
||||
stop_run = false;
|
||||
pause_emulation = false;
|
||||
|
||||
|
|
|
@ -12,10 +12,10 @@ namespace Common {
|
|||
/**
|
||||
* A background manager which ensures that all detached task is finished before program exits.
|
||||
*
|
||||
* Some tasks prefer executing asynchronously and don't care
|
||||
* about the result. These tasks are suitable for std::thread::detach().
|
||||
* However, this is unsafe if the task is launched just before the program exits
|
||||
* so we need to block on these tasks on program exit.
|
||||
* Some tasks, telemetry submission for example, prefer executing asynchronously and don't care
|
||||
* about the result. These tasks are suitable for std::thread::detach(). However, this is unsafe if
|
||||
* the task is launched just before the program exits (which is a common case for telemetry), so we
|
||||
* need to block on these tasks on program exit.
|
||||
*
|
||||
* To make detached task safe, a single DetachedTasks object should be placed in the main(), and
|
||||
* call WaitForAllTasks() after all program execution but before global/static variable destruction.
|
||||
|
|
|
@ -310,6 +310,7 @@ System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::st
|
|||
restore_plugin_context.reset();
|
||||
}
|
||||
|
||||
telemetry_session->AddInitialInfo(*app_loader);
|
||||
std::shared_ptr<Kernel::Process> process;
|
||||
const Loader::ResultStatus load_result{app_loader->Load(process)};
|
||||
if (Loader::ResultStatus::Success != load_result) {
|
||||
|
@ -565,6 +566,17 @@ void System::RegisterImageInterface(std::shared_ptr<Frontend::ImageInterface> im
|
|||
}
|
||||
|
||||
void System::Shutdown(bool is_deserializing) {
|
||||
// Log last frame performance stats
|
||||
const auto perf_results = GetAndResetPerfStats();
|
||||
constexpr auto performance = Common::Telemetry::FieldType::Performance;
|
||||
|
||||
telemetry_session->AddField(performance, "Shutdown_EmulationSpeed",
|
||||
perf_results.emulation_speed * 100.0);
|
||||
telemetry_session->AddField(performance, "Shutdown_Framerate", perf_results.game_fps);
|
||||
telemetry_session->AddField(performance, "Shutdown_Frametime", perf_results.frametime * 1000.0);
|
||||
telemetry_session->AddField(performance, "Mean_Frametime_MS",
|
||||
perf_stats ? perf_stats->GetMeanFrametime() : 0);
|
||||
|
||||
// Shutdown emulation session
|
||||
is_powered_on = false;
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "core/hw/aes/ccm.h"
|
||||
#include "core/hw/aes/key.h"
|
||||
#include "core/loader/loader.h"
|
||||
#include "core/telemetry_session.h"
|
||||
|
||||
SERVICE_CONSTRUCT_IMPL(Service::APT::Module)
|
||||
|
||||
|
@ -273,6 +274,10 @@ void Module::APTInterface::GetSharedFont(Kernel::HLERequestContext& ctx) {
|
|||
IPC::RequestParser rp(ctx);
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
|
||||
|
||||
// Log in telemetry if the game uses the shared font
|
||||
apt->system.TelemetrySession().AddField(Common::Telemetry::FieldType::Session,
|
||||
"RequiresSharedFont", true);
|
||||
|
||||
if (!apt->shared_font_loaded) {
|
||||
// On real 3DS, font loading happens on booting. However, we load it on demand to coordinate
|
||||
// with CFG region auto configuration, which happens later than APT initialization.
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "core/loader/smdh.h"
|
||||
#include "core/memory.h"
|
||||
#include "core/system_titles.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "network/network.h"
|
||||
|
||||
namespace Loader {
|
||||
|
@ -273,6 +274,9 @@ ResultStatus AppLoader_NCCH::Load(std::shared_ptr<Kernel::Process>& process) {
|
|||
overlay_ncch = &update_ncch;
|
||||
}
|
||||
|
||||
system.TelemetrySession().AddField(Common::Telemetry::FieldType::Session, "ProgramId",
|
||||
program_id);
|
||||
|
||||
if (auto room_member = Network::GetRoomMember().lock()) {
|
||||
Network::GameInfo game_info;
|
||||
ReadTitle(game_info.name);
|
||||
|
|
|
@ -326,8 +326,9 @@ void Config::ReadValues() {
|
|||
}
|
||||
|
||||
// Web Service
|
||||
NetSettings::values.web_api_url =
|
||||
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
|
||||
NetSettings::values.enable_telemetry =
|
||||
sdl2_config->GetBoolean("WebService", "enable_telemetry", false);
|
||||
NetSettings::values.web_api_url = sdl2_config->GetString("WebService", "web_api_url", "");
|
||||
NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");
|
||||
NetSettings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", "");
|
||||
|
||||
|
|
|
@ -361,8 +361,11 @@ renderer_debug =
|
|||
# To LLE a service module add "LLE\<module name>=true"
|
||||
|
||||
[WebService]
|
||||
# Whether or not to enable telemetry
|
||||
# 0 (default): No, 1: Yes
|
||||
enable_telemetry =
|
||||
# URL for Web API
|
||||
web_api_url = https://api.citra-emu.org
|
||||
web_api_url =
|
||||
# Username and token for Citra Web Service
|
||||
# See https://profile.citra-emu.org/ for more info
|
||||
citra_username =
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "core/hle/service/am/am.h"
|
||||
#include "core/hle/service/cfg/cfg.h"
|
||||
#include "core/movie.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "input_common/main.h"
|
||||
#include "network/network.h"
|
||||
#include "video_core/gpu.h"
|
||||
|
@ -385,7 +386,7 @@ int main(int argc, char** argv) {
|
|||
#elif ENABLE_SOFTWARE_RENDERER
|
||||
return std::make_unique<EmuWindow_SDL2_SW>(system, fullscreen, is_secondary);
|
||||
#else
|
||||
// TODO: Add a null renderer backend for this, perhaps.
|
||||
// TODO: Add a null renderer backend for this, perhaps.
|
||||
#error "At least one renderer must be enabled."
|
||||
#endif
|
||||
}
|
||||
|
@ -435,6 +436,8 @@ int main(int argc, char** argv) {
|
|||
break;
|
||||
}
|
||||
|
||||
system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "SDL");
|
||||
|
||||
if (use_multiplayer) {
|
||||
if (auto member = Network::GetRoomMember().lock()) {
|
||||
member->BindOnChatMessageRecieved(OnMessageReceived);
|
||||
|
|
|
@ -6,13 +6,15 @@
|
|||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
#include <QtConcurrent/qtconcurrentrun.h>
|
||||
#include "common/telemetry.h"
|
||||
#include "core/core.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "lime_qt/compatdb.h"
|
||||
#include "ui_compatdb.h"
|
||||
|
||||
CompatDB::CompatDB(QWidget* parent)
|
||||
CompatDB::CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent)
|
||||
: QWizard(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
|
||||
ui{std::make_unique<Ui::CompatDB>()} {
|
||||
ui{std::make_unique<Ui::CompatDB>()}, telemetry_session{telemetry_session_} {
|
||||
ui->setupUi(this);
|
||||
connect(ui->radioButton_Perfect, &QRadioButton::clicked, this, &CompatDB::EnableNext);
|
||||
connect(ui->radioButton_Great, &QRadioButton::clicked, this, &CompatDB::EnableNext);
|
||||
|
@ -50,11 +52,15 @@ void CompatDB::Submit() {
|
|||
case CompatDBPage::Final:
|
||||
back();
|
||||
LOG_DEBUG(Frontend, "Compatibility Rating: {}", compatibility->checkedId());
|
||||
telemetry_session.AddField(Common::Telemetry::FieldType::UserFeedback, "Compatibility",
|
||||
compatibility->checkedId());
|
||||
|
||||
button(NextButton)->setEnabled(false);
|
||||
button(NextButton)->setText(tr("Submitting"));
|
||||
button(CancelButton)->setVisible(false);
|
||||
|
||||
testcase_watcher.setFuture(
|
||||
QtConcurrent::run([this] { return telemetry_session.SubmitTestcase(); }));
|
||||
break;
|
||||
default:
|
||||
LOG_ERROR(Frontend, "Unexpected page: {}", currentId());
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
#include <QFutureWatcher>
|
||||
#include <QWizard>
|
||||
|
||||
namespace Core {
|
||||
class TelemetrySession;
|
||||
}
|
||||
|
||||
namespace Ui {
|
||||
class CompatDB;
|
||||
}
|
||||
|
@ -16,7 +20,7 @@ class CompatDB : public QWizard {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit CompatDB(QWidget* parent = nullptr);
|
||||
explicit CompatDB(Core::TelemetrySession& telemetry_session_, QWidget* parent = nullptr);
|
||||
~CompatDB();
|
||||
|
||||
private:
|
||||
|
@ -27,4 +31,6 @@ private:
|
|||
void Submit();
|
||||
void OnTestcaseSubmitted();
|
||||
void EnableNext();
|
||||
|
||||
Core::TelemetrySession& telemetry_session;
|
||||
};
|
||||
|
|
|
@ -836,10 +836,10 @@ void Config::ReadUpdaterValues() {
|
|||
void Config::ReadWebServiceValues() {
|
||||
qt_config->beginGroup(QStringLiteral("WebService"));
|
||||
|
||||
NetSettings::values.enable_telemetry =
|
||||
ReadSetting(QStringLiteral("enable_telemetry"), false).toBool();
|
||||
NetSettings::values.web_api_url =
|
||||
ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("https://api.citra-emu.org"))
|
||||
.toString()
|
||||
.toStdString();
|
||||
ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("")).toString().toStdString();
|
||||
NetSettings::values.citra_username =
|
||||
ReadSetting(QStringLiteral("citra_username")).toString().toStdString();
|
||||
NetSettings::values.citra_token =
|
||||
|
@ -1315,9 +1315,9 @@ void Config::SaveUpdaterValues() {
|
|||
void Config::SaveWebServiceValues() {
|
||||
qt_config->beginGroup(QStringLiteral("WebService"));
|
||||
|
||||
WriteSetting(QStringLiteral("enable_telemetry"), NetSettings::values.enable_telemetry, false);
|
||||
WriteSetting(QStringLiteral("web_api_url"),
|
||||
QString::fromStdString(NetSettings::values.web_api_url),
|
||||
QStringLiteral("https://api.citra-emu.org"));
|
||||
QString::fromStdString(NetSettings::values.web_api_url), QStringLiteral(""));
|
||||
WriteSetting(QStringLiteral("citra_username"),
|
||||
QString::fromStdString(NetSettings::values.citra_username));
|
||||
WriteSetting(QStringLiteral("citra_token"),
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <QtWidgets>
|
||||
#include <QtNetwork/QtNetwork>
|
||||
#include <fmt/format.h>
|
||||
#include "core/telemetry_session.h"
|
||||
#ifdef __APPLE__
|
||||
#include <unistd.h> // for chdir
|
||||
#endif
|
||||
|
@ -123,12 +124,6 @@ __declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001;
|
|||
|
||||
constexpr int default_mouse_timeout = 2500;
|
||||
|
||||
/**
|
||||
* "Callouts" are one-time instructional messages shown to the user. In the config settings, there
|
||||
* is a bitfield "callout_flags" options, used to track if a message has already been shown to the
|
||||
* user. This is 32-bits - if we have more than 32 callouts, we should retire and recycle old ones.
|
||||
*/
|
||||
|
||||
const int GMainWindow::max_recent_files_item;
|
||||
|
||||
static QString PrettyProductName() {
|
||||
|
@ -242,6 +237,9 @@ GMainWindow::GMainWindow(Core::System& system_)
|
|||
game_list->LoadCompatibilityList();
|
||||
game_list->PopulateAsync(UISettings::values.game_dirs);
|
||||
|
||||
NetSettings::values.enable_telemetry = false;
|
||||
system.ApplySettings();
|
||||
|
||||
mouse_hide_timer.setInterval(default_mouse_timeout);
|
||||
connect(&mouse_hide_timer, &QTimer::timeout, this, &GMainWindow::HideMouseCursor);
|
||||
connect(ui->menubar, &QMenuBar::hovered, this, &GMainWindow::OnMouseActivity);
|
||||
|
@ -1248,6 +1246,7 @@ bool GMainWindow::LoadROM(const QString& filename) {
|
|||
|
||||
game_path = filename;
|
||||
|
||||
system.TelemetrySession().AddField(Common::Telemetry::FieldType::App, "Frontend", "Qt");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1993,7 +1992,7 @@ void GMainWindow::OnLoadComplete() {
|
|||
|
||||
void GMainWindow::OnMenuReportCompatibility() {
|
||||
if (!NetSettings::values.citra_token.empty() && !NetSettings::values.citra_username.empty()) {
|
||||
CompatDB compatdb{this};
|
||||
CompatDB compatdb{system.TelemetrySession(), this};
|
||||
compatdb.exec();
|
||||
} else {
|
||||
QMessageBox::critical(this, tr("Missing Citra Account"),
|
||||
|
|
|
@ -152,6 +152,7 @@ private:
|
|||
void BootGame(const QString& filename);
|
||||
void ShutdownGame();
|
||||
|
||||
void ShowTelemetryCallout();
|
||||
void SetDiscordEnabled(bool state);
|
||||
void LoadAmiibo(const QString& filename);
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <glad/glad.h>
|
||||
#include "common/assert.h"
|
||||
#include "common/settings.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "video_core/custom_textures/custom_format.h"
|
||||
#include "video_core/renderer_opengl/gl_driver.h"
|
||||
#include "video_core/renderer_opengl/gl_vars.h"
|
||||
|
@ -69,11 +70,12 @@ static void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum
|
|||
level = Common::Log::Level::Debug;
|
||||
break;
|
||||
}
|
||||
|
||||
LOG_GENERIC(Common::Log::Class::Render_OpenGL, level, "{} {} {}: {}", GetSource(source),
|
||||
GetType(type), id, message);
|
||||
}
|
||||
|
||||
Driver::Driver() {
|
||||
Driver::Driver(Core::TelemetrySession& telemetry_session_) : telemetry_session{telemetry_session_} {
|
||||
const bool enable_debug = Settings::values.renderer_debug.GetValue();
|
||||
if (enable_debug) {
|
||||
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
|
||||
|
@ -133,6 +135,12 @@ void Driver::ReportDriverInfo() {
|
|||
LOG_INFO(Render_OpenGL, "GL_VERSION: {}", gl_version);
|
||||
LOG_INFO(Render_OpenGL, "GL_VENDOR: {}", gpu_vendor);
|
||||
LOG_INFO(Render_OpenGL, "GL_RENDERER: {}", gpu_model);
|
||||
|
||||
// Add the information to the telemetry system
|
||||
constexpr auto user_system = Common::Telemetry::FieldType::UserSystem;
|
||||
telemetry_session.AddField(user_system, "GPU_Vendor", std::string{gpu_vendor});
|
||||
telemetry_session.AddField(user_system, "GPU_Model", std::string{gpu_model});
|
||||
telemetry_session.AddField(user_system, "GPU_OpenGL_Version", std::string{gl_version});
|
||||
}
|
||||
|
||||
void Driver::DeduceGLES() {
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
#include <string_view>
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace Core {
|
||||
class TelemetrySession;
|
||||
}
|
||||
|
||||
namespace VideoCore {
|
||||
enum class CustomPixelFormat : u32;
|
||||
}
|
||||
|
@ -44,7 +48,7 @@ enum class DriverBug {
|
|||
*/
|
||||
class Driver {
|
||||
public:
|
||||
Driver();
|
||||
Driver(Core::TelemetrySession& telemetry_session);
|
||||
~Driver();
|
||||
|
||||
/// Returns true of the driver has a particular bug stated in the DriverBug enum
|
||||
|
@ -139,6 +143,7 @@ private:
|
|||
void FindBugs();
|
||||
|
||||
private:
|
||||
Core::TelemetrySession& telemetry_session;
|
||||
Vendor vendor = Vendor::Unknown;
|
||||
DriverBug bugs{};
|
||||
bool is_suitable{};
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "common/assert.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "core/core.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "video_core/pica/regs_framebuffer.h"
|
||||
#include "video_core/pica/regs_lighting.h"
|
||||
#include "video_core/pica/regs_texturing.h"
|
||||
|
@ -75,6 +76,9 @@ inline GLenum WrapMode(Pica::TexturingRegs::TextureConfig::WrapMode mode) {
|
|||
}
|
||||
|
||||
if (index > 3) {
|
||||
Core::System::GetInstance().TelemetrySession().AddField(
|
||||
Common::Telemetry::FieldType::Session, "VideoCore_Pica_UnsupportedTextureWrapMode",
|
||||
static_cast<u32>(index));
|
||||
LOG_WARNING(Render_OpenGL, "Using texture wrap mode {}", index);
|
||||
}
|
||||
|
||||
|
|
|
@ -75,9 +75,9 @@ static std::array<GLfloat, 3 * 2> MakeOrthographicMatrix(const float width, cons
|
|||
RendererOpenGL::RendererOpenGL(Core::System& system, Pica::PicaCore& pica_,
|
||||
Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window)
|
||||
: VideoCore::RendererBase{system, window, secondary_window}, pica{pica_},
|
||||
rasterizer{system.Memory(), pica, system.CustomTexManager(), *this, driver}, frame_dumper{
|
||||
system,
|
||||
window} {
|
||||
driver{system.TelemetrySession()}, rasterizer{system.Memory(), pica,
|
||||
system.CustomTexManager(), *this, driver},
|
||||
frame_dumper{system, window} {
|
||||
const bool has_debug_tool = driver.HasDebugTool();
|
||||
window.mailbox = std::make_unique<OGLTextureMailbox>(has_debug_tool);
|
||||
if (secondary_window) {
|
||||
|
|
|
@ -53,9 +53,9 @@ constexpr static std::array<vk::DescriptorSetLayoutBinding, 1> PRESENT_BINDINGS
|
|||
RendererVulkan::RendererVulkan(Core::System& system, Pica::PicaCore& pica_,
|
||||
Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window)
|
||||
: RendererBase{system, window, secondary_window}, memory{system.Memory()}, pica{pica_},
|
||||
instance{window, Settings::values.physical_device.GetValue()}, scheduler{instance},
|
||||
renderpass_cache{instance, scheduler}, pool{instance}, main_window{window, instance,
|
||||
scheduler},
|
||||
instance{system.TelemetrySession(), window, Settings::values.physical_device.GetValue()},
|
||||
scheduler{instance}, renderpass_cache{instance, scheduler}, pool{instance},
|
||||
main_window{window, instance, scheduler},
|
||||
vertex_buffer{instance, scheduler, vk::BufferUsageFlagBits::eVertexBuffer,
|
||||
VERTEX_BUFFER_SIZE},
|
||||
rasterizer{memory,
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "common/assert.h"
|
||||
#include "common/settings.h"
|
||||
#include "core/frontend/emu_window.h"
|
||||
#include "core/telemetry_session.h"
|
||||
#include "video_core/custom_textures/custom_format.h"
|
||||
#include "video_core/renderer_vulkan/vk_instance.h"
|
||||
#include "video_core/renderer_vulkan/vk_platform.h"
|
||||
|
@ -137,7 +138,8 @@ Instance::Instance(bool enable_validation, bool dump_command_buffers)
|
|||
enable_validation, dump_command_buffers)},
|
||||
physical_devices{instance->enumeratePhysicalDevices()} {}
|
||||
|
||||
Instance::Instance(Frontend::EmuWindow& window, u32 physical_device_index)
|
||||
Instance::Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& window,
|
||||
u32 physical_device_index)
|
||||
: library{OpenLibrary(&window)}, instance{CreateInstance(
|
||||
*library, window.GetWindowInfo().type,
|
||||
Settings::values.renderer_debug.GetValue(),
|
||||
|
@ -159,9 +161,10 @@ Instance::Instance(Frontend::EmuWindow& window, u32 physical_device_index)
|
|||
VK_VERSION_MAJOR(properties.apiVersion), VK_VERSION_MINOR(properties.apiVersion)));
|
||||
}
|
||||
|
||||
CollectTelemetryParameters(telemetry);
|
||||
CreateDevice();
|
||||
CreateFormatTable();
|
||||
CollectToolingInfo();
|
||||
CreateFormatTable();
|
||||
CreateCustomFormatTable();
|
||||
CreateAttribTable();
|
||||
}
|
||||
|
@ -642,10 +645,7 @@ void Instance::CreateAllocator() {
|
|||
}
|
||||
}
|
||||
|
||||
void Instance::CollectToolingInfo() {
|
||||
if (!tooling_info) {
|
||||
return;
|
||||
}
|
||||
void Instance::CollectTelemetryParameters(Core::TelemetrySession& telemetry) {
|
||||
const vk::StructureChain property_chain =
|
||||
physical_device
|
||||
.getProperties2<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceDriverProperties>();
|
||||
|
@ -664,6 +664,19 @@ void Instance::CollectToolingInfo() {
|
|||
LOG_INFO(Render_Vulkan, "VK_DRIVER: {}", driver_name);
|
||||
LOG_INFO(Render_Vulkan, "VK_DEVICE: {}", model_name);
|
||||
LOG_INFO(Render_Vulkan, "VK_VERSION: {}", api_version);
|
||||
|
||||
static constexpr auto field = Common::Telemetry::FieldType::UserSystem;
|
||||
telemetry.AddField(field, "GPU_Vendor", vendor_name);
|
||||
telemetry.AddField(field, "GPU_Model", model_name);
|
||||
telemetry.AddField(field, "GPU_Vulkan_Driver", driver_name);
|
||||
telemetry.AddField(field, "GPU_Vulkan_Version", api_version);
|
||||
telemetry.AddField(field, "GPU_Vulkan_Extensions", extensions);
|
||||
}
|
||||
|
||||
void Instance::CollectToolingInfo() {
|
||||
if (!tooling_info) {
|
||||
return;
|
||||
}
|
||||
const auto tools = physical_device.getToolPropertiesEXT();
|
||||
for (const vk::PhysicalDeviceToolProperties& tool : tools) {
|
||||
const std::string_view name = tool.name;
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
#include "video_core/rasterizer_cache/pixel_format.h"
|
||||
#include "video_core/renderer_vulkan/vk_platform.h"
|
||||
|
||||
namespace Core {
|
||||
class TelemetrySession;
|
||||
}
|
||||
|
||||
namespace Frontend {
|
||||
class EmuWindow;
|
||||
}
|
||||
|
@ -37,7 +41,8 @@ struct FormatTraits {
|
|||
class Instance {
|
||||
public:
|
||||
explicit Instance(bool validation = false, bool dump_command_buffers = false);
|
||||
explicit Instance(Frontend::EmuWindow& window, u32 physical_device_index);
|
||||
explicit Instance(Core::TelemetrySession& telemetry, Frontend::EmuWindow& window,
|
||||
u32 physical_device_index);
|
||||
~Instance();
|
||||
|
||||
/// Returns the FormatTraits struct for the provided pixel format
|
||||
|
@ -280,7 +285,8 @@ private:
|
|||
/// Creates the VMA allocator handle
|
||||
void CreateAllocator();
|
||||
|
||||
// Collects logging gpu info
|
||||
/// Collects telemetry information from the device.
|
||||
void CollectTelemetryParameters(Core::TelemetrySession& telemetry);
|
||||
void CollectToolingInfo();
|
||||
|
||||
private:
|
||||
|
@ -323,4 +329,4 @@ private:
|
|||
bool has_renderdoc{};
|
||||
};
|
||||
|
||||
} // namespace Vulkan
|
||||
} // namespace Vulkan
|
||||
|
|
Loading…
Reference in New Issue
Block a user