Commit graph

78 commits

Author SHA1 Message Date
wheremyfoodat
082b6216b3
Update home menu branch (#759)
* Fix typo (#680)

Co-authored-by: Noumi <139501014+noumidev@users.noreply.github.com>

* More PTM stuff

Co-Authored-By: Noumi <139501014+noumidev@users.noreply.github.com>

* Make system language configurable

* Fix building crypto++ for x64 target on Apple silicon MacOS

* Attempt to switch to M1 runners again

* Prevent selecting Vulkan renderer in Qt frontend and present a message

* Libretro: Add system language option

* Only enable audio by default on libretro for now

* CMake: Bump version

* Store configuration file in AppData root if not in working directory (#693)

* Store configuration file in AppData root if not in working directory

This fixes MacOS app bundles, as the emulator cannot write the config
file into the app bundle.

* Remove duplicate fs calls

* I'm an idiot sandwich

---------

Co-authored-by: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com>

* GL: Add usingGLES to driverInfo struct (#694)

* Wayland fixes part 1

* Support GLES on desktop

* Qt: Fix Wayland support

Qt will only create a Wayland surface when show() is called on the main
window and on the ScreenWidget. Thus, call the function before creating
the GL context.

Doesn't cause regressions on XWayland, untested in other platforms.

Fixes #586

* No need to call screen->show() twice

* Fix disabling Wayland & building on some distros (#700)

* GLES: Properly stub out logic ops

* Fix git versioning

* Android_Build: Implement ccache (#703)

* Android_Build: Implement ccache

* Update Android_Build.yml

* Update Android_Build.yml

---------

Co-authored-by: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com>

* Removed dead Citra link in readme (#706)

* CRO: Lighter icache flushes

* Implement Luma icache SVCs

* Add missing SVC logs

* GPU: Add sw texture copies

* Use vk::detail::DynamicLoader instead of vk::DynamicLoader (#710)

* Use vk::detail::DynamicLoader instead of vk::DynamicLoader

* Update renderer_vk.cpp

* Vk: Fix typo

* Vk: Lock CI runners to SDK version 1.3.301 temporarily

* Vk: Fixing CI pt 2

* Vulkan: Fixing CI pt 3

* Vk: Fix typo

* Temporarily give 80MB to all processes (#715)

* Try to cross-compile Libretro core for arm64 (#717)

* Try to cross-compile Libretro core for arm64

* Bonk

* Update Hydra_Build.yml

* [WIP] Libretro: Add audio support (#714)

* Libretro: Add audio support

* Adding audio interface part 1

* Audio device pt 2

* More audio device

* More audio device

* Morea uudi odevice

* More audio device

* More audio device

* More audio device

---------

Co-authored-by: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com>

* Libretro audio device: Fix frame count

* Mark audio devices as final

* Add toggle for libretro audio device (#719)

* Very important work (#720)

* Very important work

* Most important fix

* Add more HLE service calls for eshop (#721)

* CI: Fix Vulkan SDK action (#723)

* GPU registers: Fix writes to some registers ignoring the mask (#725)

Co-authored-by: henry <23128103+atem2069@users.noreply.github.com>

* OLED theme

* OLED theme config fix (#736)

Co-authored-by: smiRaphi <neogt404@gmail.com>

* Adding Swedish translation

* Fix Metal renderer compilation on iOS

* [Core] Improve iOS compilation workflow

* [Qt] Hook Swedish to UI

* AppDataDocumentProvider: Typo (#740)

* More iOS work

* More iOS progress

* More iOS work

* AppDataDocumentProvider: Add missing ``COLUMN_FLAGS`` in the default document projectation (#741)

Fixes unable to copy files from device to app's internal storage problem

* More iOS work

* ios: Simplify MTKView interface (still doesn't work though)

* ios: Pass CAMetalLayer instead of void* to Obj-C++ bridging header

* Fix bridging cast

* FINALLY IOS GRAPHICS

* ios: Remove printf spam

* Metal: Reimplement some texture formats on iOS

* metal: implement texture decoder

* metal: check for format support

* metal: implement texture swizzling

* metal: remove unused texture functions

* Shadergen types: Add Metal & MSL

* Format

* Undo submodule changes

* Readme: Add Chonkystation 3

* Metal: Use std::unique_ptr for texture decode

* AppDataDocumentProvider: Allow to remove documents (#744)

* AppDataDocumentProvider: Allow to remove documents

* Typo

* Metal renderer fixes for iOS

* iOS driver: Add doc comments

* iOS: Add frontend & frontend build files (#746)

* iOS: Add SwiftUI part to repo

* Add iOS build script

* Update SDL2 submodule

* Fix iOS build script

* CI: Update xcode tools for iOS

* Update iOS_Build.yml

* Update iOS build

* Lower XCode version

* A

* Update project.pbxproj

* Update iOS_Build.yml

* Update iOS_Build.yml

* Update build.sh

* iOS: Fail on build error

* iOS: Add file picker (#747)

* iOS: Add file picker

* Fix lock placement

* Qt: Add runpog icon (#752)

* Update discord-rpc submodule (#753)

* Remove cryptoppwin submodule (#754)

* Add optional texture hashing

* Fix build on new Vk SDK (#757)

Co-authored-by: Nadia Holmquist Pedersen <893884+nadiaholmquist@users.noreply.github.com>

* CI: Use new Vulkan SDK

---------

Co-authored-by: Noumi <139501014+noumidev@users.noreply.github.com>
Co-authored-by: Thomas <thomas@thomasw.dev>
Co-authored-by: Thomas <twvd@users.noreply.github.com>
Co-authored-by: Daniel López Guimaraes <danielectra@outlook.com>
Co-authored-by: Jonian Guveli <jonian@hardpixel.eu>
Co-authored-by: Ishan09811 <156402647+Ishan09811@users.noreply.github.com>
Co-authored-by: Auxy6858 <71662994+Auxy6858@users.noreply.github.com>
Co-authored-by: Paris Oplopoios <parisoplop@gmail.com>
Co-authored-by: henry <23128103+atem2069@users.noreply.github.com>
Co-authored-by: smiRaphi <neogt404@gmail.com>
Co-authored-by: smiRaphi <87574679+smiRaphi@users.noreply.github.com>
Co-authored-by: Daniel Nylander <po@danielnylander.se>
Co-authored-by: Samuliak <samuliak77@gmail.com>
Co-authored-by: Albert <45282415+ggrtk@users.noreply.github.com>
Co-authored-by: Nadia Holmquist Pedersen <893884+nadiaholmquist@users.noreply.github.com>
2025-06-23 04:59:22 +03:00
wheremyfoodat
49a94a13c5
Moar shader decompiler (#559)
* Renderer: Add prepareForDraw callback

* Add fmt submodule and port shader decompiler instructions to it

* Add shader acceleration setting

* Hook up vertex shaders to shader cache

* Shader decompiler: Fix redundant compilations

* Shader Decompiler: Fix vertex attribute upload

* Shader compiler: Simplify generated code for reading and faster compilation

* Further simplify shader decompiler output

* Shader decompiler: More smallen-ing

* Shader decompiler: Get PICA uniforms uploaded to the GPU

* Shader decompiler: Readd clipping

* Shader decompiler: Actually `break` on control flow instructions

* Shader decompiler: More control flow handling

* Shader decompiler: Fix desitnation mask

* Shader Decomp: Remove pair member capture in lambda (unsupported on NDK)

* Disgusting changes to handle the fact that hw shader shaders are 2x as big

* Shader decompiler: Implement proper output semantic mapping

* Moar instructions

* Shader decompiler: Add FLR/SLT/SLTI/SGE/SGEI

* Shader decompiler: Add register indexing

* Shader decompiler: Optimize mova with both x and y masked

* Shader decompiler: Add DPH/DPHI

* Fix shader caching being broken

* PICA decompiler: Cache VS uniforms

* Simply vertex cache code

* Simplify vertex cache code

* Shader decompiler: Add loops

* Shader decompiler: Implement safe multiplication

* Shader decompiler: Implement LG2/EX2

* Shader decompiler: More control flow

* Shader decompiler: Fix JMPU condition

* Shader decompiler: Convert main function to void

* PICA: Start implementing GPU vertex fetch

* More hw VAO work

* More hw VAO work

* More GPU vertex fetch code

* Add GL Stream Buffer from Duckstation

* GL: Actually upload data to stream buffers

* GPU: Cleanup immediate mode handling

* Get first renders working with accelerated draws

* Shader decompiler: Fix control flow analysis bugs

* HW shaders: Accelerate indexed draws

* Shader decompiler: Add support for compilation errors

* GLSL decompiler: Fall back for LITP

* Add Renderdoc scope classes

* Fix control flow analysis bug

* HW shaders: Fix attribute fetch

* Rewriting hw vertex fetch

* Stream buffer: Fix copy-paste mistake

* HW shaders: Fix indexed rendering

* HW shaders: Add padding attributes

* HW shaders: Avoid redundant glVertexAttrib4f calls

* HW shaders: Fix loops

* HW shaders: Make generated shaders slightly smaller

* Fix libretro build

* HW shaders: Fix android

* Remove redundant ubershader checks

* Set accelerate shader default to true

* Shader decompiler: Don't declare VS input attributes as an array

* Change ubuntu-latest to Ubuntu 24.04 because Microsoft screwed up their CI again

* fix merge conflict bug
2024-10-19 16:53:51 +03:00
wheremyfoodat
fa9ce5fc70
GLES: Implement logic ops via fb fetch (#608)
* GLES: Implement logic ops via fb fetch

* Attempt to fix deprecated libglx-mesa0 package

* Update Qt_Build.yml

* GLES: Enable fb fetch instead of requiring it

* GLES: Add support for GL_ARM_shader_framebuffer_fetch

* Fix GL_EXT_shader_framebuffer_fetch behavior
2024-10-14 00:17:24 +03:00
wheremyfoodat
a0e506affc Share fragment UBO between shadergen programs 2024-07-25 19:51:29 +03:00
offtkp
4176a19256 Fog in ubershader 2024-07-21 17:38:07 +03:00
wheremyfoodat
f219432c6a Renderer GL: Don't leak shader/UBO handles 2024-07-20 23:18:52 +03:00
wheremyfoodat
69c79a7f6c Ubershader: Add lighting shadergen override 2024-07-20 03:40:50 +03:00
wheremyfoodat
5c1e2912a3 Shadergen: Minimize shader compilation time by caching the default VS 2024-07-19 14:35:01 +03:00
wheremyfoodat
cab30494f6
Merge pull request #531 from OFFTKP/pandra
Improve lighting
2024-07-18 00:38:55 +00:00
wheremyfoodat
aad7bb817e Add setting for ubershaders 2024-07-17 02:25:38 +03:00
wheremyfoodat
2cd50e7f37 Clean up ubershader code 2024-07-15 15:11:23 +03:00
wheremyfoodat
c8eb1c1128 Shader recompiler: Add UBO 2024-07-15 04:10:55 +03:00
wheremyfoodat
c73758959b Merge branch 'master' into specialized-shaders-2 2024-07-14 23:57:12 +03:00
wheremyfoodat
186fd3b94b Qt: Shader editor now works 2024-07-14 16:06:52 +03:00
wheremyfoodat
d87477832b Qt: Initial shader editor support 2024-07-14 15:32:26 +03:00
offtkp
a3886a948f Switch to GL_TEXTURE_2D for lighting LUT 2024-07-09 20:51:09 +03:00
wheremyfoodat
842943fa4c GLSL shader gen: Add alpha test (...half of it I guess) 2024-05-13 00:51:40 +03:00
wheremyfoodat
67fe3214fe Add shader cache 2024-03-02 20:41:23 +02:00
wheremyfoodat
fdfb012aa1 GL: Add RendererGL::getSpecializedShader 2024-02-29 01:28:00 +02:00
wheremyfoodat
ef2467bc60 TEV definitions for shader generator 2024-01-18 02:59:29 +02:00
wheremyfoodat
e900e9d614 Add Renderer::deinitGraphicsContext 2023-10-25 22:46:45 +03:00
offtkp
b5b94a3526 Add some renderer related helper functions in emulator and renderergl 2023-10-20 02:59:53 +03:00
wheremyfoodat
5155682e0f Get emulator rendering working with Qt 2023-10-01 01:28:08 +03:00
wheremyfoodat
7bbf37bb63 Implement reading texture from NULL 2023-08-18 16:19:54 +03:00
wheremyfoodat
9e529d73f4 Partially revert depth/color buffer cache bump 2023-08-07 00:01:23 +03:00
GPUCode
82d9511993 gpu: Implement basic texcopy
* Improves rendering in FE:A but the screens will still not show
  because it requires surface validation
2023-08-06 14:43:30 +03:00
wheremyfoodat
9695b57bf5 [PICA] Rework how external registers work, format 2023-08-04 00:42:11 +03:00
GPUCode
f75a23b5a9 code: Better screen support 2023-08-02 22:26:08 +03:00
wheremyfoodat
64fa970468 [GL] Actually implement logic ops 2023-07-27 21:57:50 +03:00
GPUCode
6f7874227c renderer_gl: Implement logic op 2023-07-26 22:08:20 +03:00
wheremyfoodat
95a8917589 renderer_gl: Implement stencil testing 2023-07-26 22:05:30 +03:00
Wunkolo
b048d4dd6e Add SDL_Window to initGraphicsContext prototype
This value is needed for vulkan to properly allocate a surface, and would benefit OpenGL to move more of its initialization code into here rather than in `emulator.cpp`.
2023-07-22 13:16:23 -07:00
Wunkolo
b10e69de0e Add virtual deconstructor override
Virtual classes need to override the base-type deconstructor so that they are proper called when referred to by their base-type.
2023-07-17 09:30:12 -07:00
wheremyfoodat
7b6cd90d36 Cleanup for #98 2023-07-15 04:56:43 +03:00
Wunkolo
2f45714240 Add override-specifier to renderer implementation 2023-07-11 11:28:06 -07:00
Wunkolo
666fd96e7f Move color/depth format and size to Renderer interface
The state of these values are not specific to any rendering backend and
can be moved to be part of the interface itself
2023-07-11 11:28:06 -07:00
Wunkolo
c53080b444 Fix HTTPServer gpu-renderer interfacing
Fixing some compilation issues that occur when enabling the HTTP server
2023-07-11 11:28:06 -07:00
Wunkolo
2a1683ba62 Introduce "Renderer" abstraction layer
Adds a `renderer` class for which a rendering backend must implement and
will conditionally use OpenGL in the case that `ENABLE_GL` is enabled.
2023-07-11 11:27:35 -07:00
wheremyfoodat
ba1c3a8ec5 Moar HTTP 2023-07-10 11:30:09 +03:00
Sky
17b08a25fa [GPU] Converted Depth/Color Surfaces to a ring buffer
Additionally made the surface cache search hit for any address that lies in the surface.

This should allow multiple races to be done in Mario Kart and fixes the intro video.
2023-07-06 11:18:14 -07:00
Sky
255947b2fc [GPU] Add texture surface cache eviction
Implemented as a simple ring buffer evicting the oldest entry for now.
2023-07-06 08:48:37 -07:00
wheremyfoodat
feacb9359d Formatting 2023-07-05 02:59:54 +03:00
wheremyfoodat
dd3e1ea72b Ditch more uniforms 2023-07-05 01:37:18 +03:00
wheremyfoodat
c282a44c27 [OpenGL renderer] Fewer uniform uploads 2023-07-05 01:12:13 +03:00
wheremyfoodat
a3d8f777b4 PicaVertex -> PICA::Vertex 2023-07-04 23:40:47 +03:00
wheremyfoodat
b403e9a66e Start work on GL state manager object 2023-07-04 23:27:38 +03:00
Sky
12dbaeaeb0 [GL] Initial Implementation of Lighting LUTs 2023-07-02 16:14:11 -07:00
Sky
6fababb93a [GL] Pipe Pica registers and implement ambient lighting 2023-07-01 16:43:57 -07:00
Sky
ca89909c00 Refactored Vertex Pipeline to always use Pica Formatted Vertex 2023-07-01 11:39:25 -07:00
fleroviux
6b610a82d6 [GPU] Move texture binding into its own method 2023-06-20 22:58:52 +02:00