Commit graph

43 commits

Author SHA1 Message Date
wheremyfoodat
0a0ea75013
GPU registers: Fix writes to some registers ignoring the mask (#725)
Co-authored-by: henry <23128103+atem2069@users.noreply.github.com>
2025-02-21 20:22:51 +02: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
85af58f0a7 Remove shader-related hallucinations 2024-07-22 02:06:24 +03:00
offtkp
b8712b37c3 A few kissable changes 2024-07-21 18:26:02 +03:00
offtkp
4176a19256 Fog in ubershader 2024-07-21 17:38:07 +03:00
wheremyfoodat
9695b57bf5 [PICA] Rework how external registers work, format 2023-08-04 00:42:11 +03:00
GPUCode
58383ee431 Address review comments 2023-08-03 16:42:01 +03:00
GPUCode
f75a23b5a9 code: Better screen support 2023-08-02 22:26:08 +03:00
wheremyfoodat
7b6cd90d36 Cleanup for #98 2023-07-15 04:56:43 +03:00
Wunkolo
9e32b6d4bf Remove OpenGL-specific vector-types
Removes dependency on the OpenGL header and rendering backen for its
`OpenGL::Vector` type in favor of a more standard array.
2023-07-11 11:27:35 -07:00
wheremyfoodat
a3d8f777b4 PicaVertex -> PICA::Vertex 2023-07-04 23:40:47 +03:00
wheremyfoodat
f7ad66c708 [PICA] Add some clipping definitions 2023-07-04 19:51:07 +03:00
wheremyfoodat
e854d4ba63 Formatting 2023-07-04 18:15:27 +03:00
Sky
12dbaeaeb0 [GL] Initial Implementation of Lighting LUTs 2023-07-02 16:14:11 -07:00
Sky
ca89909c00 Refactored Vertex Pipeline to always use Pica Formatted Vertex 2023-07-01 11:39:25 -07:00
Wunkolo
838d3f27f9 Migrate PICA-types into PICA namespace
Rather than prefixing these types with `PICA`, a namespace is used instead.
2023-06-17 18:23:47 -07:00
Wunkolo
78a3f9fa23 Add PICA texel-format and topology types
Slowly stepping the codebase towards having renderer-agnostic types and keeping the translation of PICA-types to OpenGL/VK/DX/Software/etc to the renderer-backend.
2023-06-17 12:26:41 -07:00
Wunkolo
553d23974a Use std::span to pass vertex data
Starts utilizing
[std::span](https://en.cppreference.com/w/cpp/container/span) to
indicate a non-owning view of a contiguous array of elements rather than
`T* data, usize count`.
2023-06-16 07:28:35 -07:00
Wunkolo
2c94d0d683 Add Helpers:{getBits,getBit}
`constexpr` functions for extractint bitfields that lends itself a bit
better to emitting instructions like `bextr` on x86 or `ubfx` on arm64.
And may subjectively make things a bit more readable.
"Extract `5` bits" rather than `& 0x1F`.
2023-06-10 00:48:06 -07:00
wheremyfoodat
3a674a1ba0 [FS] Implement ControlArchive 2023-04-12 02:19:16 +03:00
wheremyfoodat
eaa7b4d55b [PICA] Implement immediate mode triangle strip & fan 2023-04-11 20:06:18 +03:00
wheremyfoodat
9f7a86fc01 [PICA] Add support for nested command lists 2023-03-10 04:39:41 +02:00
wheremyfoodat
1dc091c444 [PICA] Panic on nested CMD lists 2023-03-07 22:27:06 +02:00
wheremyfoodat
922424b8d0 Immediate mode vertex submission attempt 1 2023-03-06 01:43:39 +02:00
wheremyfoodat
f9669ce79c [PICA] Add depth buffer format reg 2023-03-03 00:58:36 +02:00
wheremyfoodat
1d6e5c8bb6 Fix the build cause I forgot to push this 2023-02-27 02:00:00 +02:00
wheremyfoodat
ecbb33b906 [GPU] Surface cache vol 1 2023-01-02 15:01:17 +02:00
wheremyfoodat
23a6ef447f Stuffs 2022-12-31 15:54:24 +02:00
wheremyfoodat
4d1bb6f866 [PICA] Fix more shader bugs 2022-09-27 02:27:41 +03:00
wheremyfoodat
f9287c1eda Fix dynarmic submodule 2022-09-26 18:47:45 +03:00
wheremyfoodat
979519f785 [PICA interpreter] Implement RSQ, MAD, CALLU and boot SM64 2022-09-26 01:05:03 +03:00
wheremyfoodat
a5c6fb858f [PICA] Implement int uniforms 2022-09-25 17:45:59 +03:00
wheremyfoodat
be4fae5104 Trongle 2022-09-24 02:45:57 +03:00
wheremyfoodat
ce07b7e5e0 [PICA] We can now upload floating point uniforms for real 2022-09-23 14:31:26 +03:00
wheremyfoodat
92b7ca3b8c [PICA] We can now upload floating point uniforms 2022-09-23 14:15:04 +03:00
wheremyfoodat
9d48541e98 [PICA interpreter] Implement mov 2022-09-23 04:08:23 +03:00
wheremyfoodat
4b3c7955dd [PICA] Fixed vertex attribute uploads 2022-09-23 02:19:23 +03:00
wheremyfoodat
8770e6dc41 [PICA] Why is attribute fetching so hard 2022-09-23 00:55:16 +03:00
wheremyfoodat
39bfeda586 [PICA] More progress on attribute parsing 2022-09-22 19:17:19 +03:00
wheremyfoodat
434c840aeb [PICA] Get vertex attributes being semi-properly read 2022-09-22 16:48:43 +03:00
wheremyfoodat
00d82ca6ed [PICA] Implement drawArrays, get our first triangle data 2022-09-22 04:03:55 +03:00
wheremyfoodat
5993dc4759 [PICA] Shader uploads 2022-09-22 03:46:19 +03:00
wheremyfoodat
71ca62e2cc [GPU] Get PICA register access working 2022-09-21 19:10:53 +03:00