summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/maxwell/translate
AgeCommit message (Collapse)Author
2025-01-14Revert incorrect copyright attribution for non-contributed filesZephyron
- In commit b3facaa6bb30cdc39f2b7d632fef1e3bfeee7785, the copyright header was updated to include "Citron Homebrew Project" across multiple files, regardless of whether any contributions were made. - This commit removes the incorrect attribution and reverts the copyright header to its previous state. - Copyright attribution should only be added when meaningful contributions have been made to the file. - This commit ensures proper compliance with copyright standards and maintains correct attribution to the respective contributors. - Special thanks to Tachi for pointing out the need for these corrections and ensuring that proper attribution practices are followed.
2024-12-31shader_recompiler: Fix ISBERD instruction implementationZephyron
- Simplify ISBERD instruction to handle register-to-register moves - Remove incorrect CompositeConstruct usage - Replace with direct register value passing - Fix compilation errors in internal stage buffer handling
2024-12-31shader_recompiler: Use FPRecip in FSWZADD implementationZephyron
Simplifies the negative reciprocal calculation in FSWZADD by using the dedicated FPRecip operation instead of manually constructing a division. This change: - Replaces FPDiv(Imm32(f32(1.0f)), src_b) with FPRecip(src_b) - Results in more efficient code for calculating 1.0/x - Fixes build errors from undefined IR emitter methods
2024-12-31shader_recompiler: Fix method names in FSWZADD implementationZephyron
Fixes incorrect method names in the floating point swizzled add implementation: - FNeg -> FPNeg - FDiv -> FPDiv - FImm32(1.0f) -> Imm32(ir.f32(1.0f)) These changes align with the correct IR emitter interface naming conventions, where floating-point operations use the 'FP' prefix and immediate values are properly constructed using f32().
2024-12-31shader_recompiler: Implement ISBERD instructionZephyron
Implements the Internal Stage Buffer Entry Read (ISBERD) instruction in the Maxwell shader recompiler. This replaces the previous stubbed implementation with actual buffer reading functionality. The implementation: - Validates unsupported features (skew, o, mode, shift) - Performs buffer read using IR::InternalStageBufferRead - Stores the read value to the destination register This removes the "(STUBBED) called" warning messages that were previously being logged during shader compilation.
2024-12-31shader_recompiler: Implement ISBERD instruction modes and shiftsZephyron
Implements the ISBERD (Internal Stage Buffer Entry Read) instruction's mode and shift options that were previously throwing NotImplemented exceptions. This includes: - Patch mode for reading patch data - Prim mode for reading primitive data - Attr mode for reading attribute data - U16 shift for 16-bit unsigned values - B32 shift for 32-bit values The implementation follows Maxwell's ISA specification for handling different buffer read modes and data shifts.
2024-12-31chore: update project references and add Citron copyrightZephyron
- Replaced all references to the old project name with Citron. - Added Citron copyright information alongside existing notices in all files.
2023-11-18shader_recompiler: Fix spelling of "derivate" (#12067)Ameer J
2023-08-27Shader Recompiler: Auto stub special registers and dump pipelines on exception.Fernando Sahmkow
2023-08-18Shader Recomnpiler: implement textuzreGrad 3D emulation constant propagationFernando Sahmkow
2023-05-26shader_recompiler: fix copy-paste errorLiam
2023-05-11Fix Tears of the Kingdom flickering clouds and depths.Kelebek1
2023-01-28shader_recompiler: TXQ: Skip QueryLevels when possibleameerj
2022-11-22general: fix compile for Apple ClangLiam
2022-11-07video_core: Fix few issues in Tess stageFengChen
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda
[REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
2022-04-23general: Convert source file copyright comments over to SPDXMorph
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-02fix: typosAndrea Pappacoda
2022-03-21Merge pull request #8038 from liamwhite/exit-register-detectionAmeer J
shader_recompiler/EXIT: increment output register on failed enable test
2022-03-20shader_recompiler: Reduce unused includesameerj
2022-03-18shader_recompiler/EXIT: skip render targets with no outputsLiam
2022-03-17shader_recompiler/EXIT: increment output register on failed enable testLiam
2022-03-16shader_recompiler: Implement LDC.IS address modeLiam
2022-03-08shader_recompiler/LOP3: Use brute force python results within switch/case.Markus Wick
Thanks to @asLody for optimizing this function. This raised the focus that this function should be optimized more. The current table assumes that the host GPU is able to invert for free, so only AND,OR,XOR are accumulated in the performance metrik. Performance results: Instructions 0: 8 1: 30 2: 114 3: 80 4: 24 Latency 0: 8 1: 30 2: 194 3: 24
2022-01-27video_minimum_maximum: Implement src operand selectorsameerj
Used by Pokemon Legends: Arceus
2021-07-22shader: Support out of bound local memory reads and immediate writesReinUsesLisp
Support ignoring immediate out of bound writes. Writing dynamically out of bounds is not yet supported (e.g. R0+0x4). Reading out of bounds yields zero. This is supported checking for the size from the IR; if the input is immediate, the optimization passes will drop it.
2021-07-22shader: Implement ISETP.Xameerj
2021-07-22shader_recompiler, video_core: Resolve clang errorslat9nq
Silences the following warnings-turned-errors: -Wsign-conversion -Wunused-private-field -Wbraced-scalar-init -Wunused-variable And some other errors
2021-07-22shader: Account for 33-bit IADD3 scenarioameerj
2021-07-22shader: Only apply shift on register mode for IADD3ReinUsesLisp
2021-07-22shader_recompiler: Fix IADD3 input partitioningameerj
2021-07-22shader: Add loggingReinUsesLisp
2021-07-22shader: Comment why the array component is not read in TMMLReinUsesLisp
2021-07-22tmml: Remove index component from coords vecameerj
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
2021-07-22shader: Add 2D and 3D variants to SUATOM and SUREDReinUsesLisp
Used by Claybook.
2021-07-22shader: Avoid CPU side undefined behavior on I2FReinUsesLisp
2021-07-22shader: Add support for "negative" and unaligned offsetsReinUsesLisp
"Negative" offsets don't exist. They are shown as such due to a bug in nvdisasm. Unaligned offsets have been proved to read the aligned offset. For example, when reading an U32, if the offset is 6, the offset read will be 4.
2021-07-22shader: Implement ISCADD32IReinUsesLisp
2021-07-22shader: Fix ImageWrite indexingReinUsesLisp
2021-07-22shader: Fix TMML queriesReinUsesLisp
2021-07-22shader: Handle host exceptionsReinUsesLisp
2021-07-22glasm: Implement TEX and TEXS instructionsReinUsesLisp
Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
2021-07-22glasm: Rework control flow introducing a syntax listReinUsesLisp
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
2021-07-22shader: Add floating-point rounding to I2FReinUsesLisp
2021-07-22shader: ISET.X implementationameerj
2021-07-22shader: Stub SR_AFFINITYFernandoS27
2021-07-22shader: Implement Int32 SUATOM/SUREDameerj
2021-07-22shader: Initial OpenGL implementationReinUsesLisp
2021-07-22shader: Fix IADD3.CCameerj
2021-07-22shader: Fix VMNMX selector BReinUsesLisp