Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2021-07-23 | shader: Remove old shader management | ReinUsesLisp | 1 | -493/+0 | |
2021-02-15 | Implement texture offset support for TexelFetch and TextureGather and add offsets for Tlds | Kelebek1 | 1 | -0/+1 | |
Formatting | |||||
2020-12-07 | video_core: Remove unnecessary enum class casting in logging messages | Lioncash | 1 | -13/+12 | |
fmt now automatically prints the numeric value of an enum class member by default, so we don't need to use casts any more. Reduces the line noise a bit. | |||||
2020-08-14 | shader/memory: Amend UNIMPLEMENTED_IF_MSG without a message | Lioncash | 1 | -1/+2 | |
We need to provide a message for this variant of the macro, so we can simply log out the type being used. | |||||
2020-08-13 | General: Tidy up clang-format warnings part 2 | Lioncash | 1 | -3/+3 | |
2020-05-22 | shader/memory: Implement non-addition operations in RED | ReinUsesLisp | 1 | -2/+1 | |
Trivially implement these instructions. They are used in Astral Chain. | |||||
2020-04-17 | decode/memory: Resolve unused variable warning | Lioncash | 1 | -1/+1 | |
Only the first element of the returned pair is ever used. | |||||
2020-04-06 | shader/memory: Implement RED.E.ADD | ReinUsesLisp | 1 | -1/+15 | |
Implements a reduction operation. It's an atomic operation that doesn't return a value. This commit introduces another primitive because some shading languages might have a primitive for reduction operations. | |||||
2020-04-06 | shader/memory: Add "using std::move" | ReinUsesLisp | 1 | -11/+13 | |
2020-04-06 | shader/memory: Minor fixes in ATOM | ReinUsesLisp | 1 | -32/+30 | |
2020-04-02 | shader/memory: Silence no return value warning | ReinUsesLisp | 1 | -0/+3 | |
Silences a warning about control paths not all returning a value. | |||||
2020-03-31 | clang-format | Nguyen Dac Nam | 1 | -2/+1 | |
2020-03-31 | shader_decode: fix by suggestion | Nguyen Dac Nam | 1 | -27/+22 | |
2020-03-30 | clang-format | namkazy | 1 | -3/+3 | |
2020-03-30 | shader_decode: ATOM/ATOMS: add function to avoid code repetition | namkazy | 1 | -70/+39 | |
2020-03-30 | shader_decode: implement ATOM operation for S32 and U32 | Nguyen Dac Nam | 1 | -6/+39 | |
2020-03-30 | clang-format | namkazy | 1 | -3/+3 | |
2020-03-30 | shader_decode: implement ATOMS instr partial. | Nguyen Dac Nam | 1 | -10/+42 | |
2020-01-26 | shader/memory: Implement ATOM.ADD | ReinUsesLisp | 1 | -1/+21 | |
ATOM operates atomically on global memory. For now only add ATOM.ADD since that's what was found in commercial games. This asserts for ATOM.ADD.S32 (handling the others as unimplemented), although ATOM.ADD.U32 shouldn't be any different. This change forces us to change the default type on SPIR-V storage buffers from float to uint. We could also alias the buffers, but it's simpler for now to just use uint. While we are at it, abstract the code to avoid repetition. | |||||
2020-01-25 | shader/memory: Implement STL.S16 and STS.S16 | ReinUsesLisp | 1 | -3/+10 | |
2020-01-25 | shader/memory: Implement unaligned LDL.S16 and LDS.S16 | ReinUsesLisp | 1 | -5/+3 | |
2020-01-25 | shader/memory: Move unaligned load/store to functions | ReinUsesLisp | 1 | -18/+27 | |
2020-01-25 | shader/memory: Implement LDL.S16 and LDS.S16 | ReinUsesLisp | 1 | -12/+23 | |
2020-01-16 | shader/memory: Implement ATOMS.ADD.U32 | ReinUsesLisp | 1 | -0/+19 | |
2020-01-09 | shader_ir/memory: Implement u16 and u8 for STG and LDG | ReinUsesLisp | 1 | -33/+51 | |
Using the same technique we used for u8 on LDG, implement u16. In the case of STG, load memory and insert the value we want to set into it with bitfieldInsert. Then set that value. | |||||
2019-12-18 | shader/memory: Implement LDG.U8 and unaligned U8 loads | ReinUsesLisp | 1 | -6/+32 | |
LDG can load single bytes instead of full integers or packs of integers. These have the advantage of loading bytes that are not aligned to 4 bytes. To emulate these this commit gets the byte being referenced (by doing "address & 3" and then using that to extract the byte from the loaded integer: result = bitfieldExtract(loaded_integer, (address % 4) * 8, 8) | |||||
2019-12-10 | shader_ir/memory: Implement patch stores | ReinUsesLisp | 1 | -16/+18 | |
2019-10-22 | shader_ir/memory: Ignore global memory when tracking fails | ReinUsesLisp | 1 | -16/+23 | |
Ignore global memory operations instead of invoking undefined behaviour when constant buffer tracking fails and we are blasting through asserts, ignore the operation. In the case of LDG this means filling the destination registers with zeroes; for STG this means ignore the instruction as a whole. The default behaviour is still to abort execution on failure. | |||||
2019-09-05 | shader_ir: Implement LD_S | ReinUsesLisp | 1 | -10/+13 | |
Loads from shared memory. | |||||
2019-09-05 | shader_ir: Implement ST_S | ReinUsesLisp | 1 | -9/+16 | |
This instruction writes to a memory buffer shared with threads within the same work group. It is known as "shared" memory in GLSL. | |||||
2019-07-17 | shader_ir: Rename Get/SetTemporal to Get/SetTemporary | Lioncash | 1 | -11/+11 | |
This is more accurate in terms of describing what the functions are actually doing. Temporal relates to time, not the setting of a temporary itself. | |||||
2019-07-15 | shader: Allow tracking of indirect buffers without variable offset | ReinUsesLisp | 1 | -12/+7 | |
While changing this code, simplify tracking code to allow returning the base address node, this way callers don't have to manually rebuild it on each invocation. | |||||
2019-06-06 | shader: Use shared_ptr to store nodes and move initialization to file | ReinUsesLisp | 1 | -4/+5 | |
Instead of having a vector of unique_ptr stored in a vector and returning star pointers to this, use shared_ptr. While changing initialization code, move it to a separate file when possible. This is a first step to allow code analysis and node generation beyond the ShaderIR class. | |||||
2019-05-22 | shader/decode/memory: Remove left in debug pragma | Lioncash | 1 | -2/+0 | |
2019-05-21 | shader/memory: Implement ST (generic memory) | ReinUsesLisp | 1 | -21/+35 | |
2019-05-21 | shader/memory: Implement LD (generic memory) | ReinUsesLisp | 1 | -7/+21 | |
2019-05-03 | shader_ir/memory: Assert on non-32 bits ALD.PHYS | ReinUsesLisp | 1 | -0/+3 | |
2019-05-03 | shader: Add physical attributes commentaries | ReinUsesLisp | 1 | -1/+1 | |
2019-05-03 | shader_ir/memory: Implement physical input attributes | ReinUsesLisp | 1 | -3/+6 | |
2019-05-03 | shader: Remove unused AbufNode Ipa mode | ReinUsesLisp | 1 | -5/+2 | |
2019-05-03 | shader_ir/memory: Emit AL2P IR | ReinUsesLisp | 1 | -0/+17 | |
2019-04-14 | shader_ir: Implement STG, keep track of global memory usage and flush | ReinUsesLisp | 1 | -35/+74 | |
2019-04-03 | shader_ir/memory: Reduce severity of LD_L cache management and log it | ReinUsesLisp | 1 | -2/+2 | |
2019-04-03 | shader_ir/memory: Reduce severity of ST_L cache management and log it | ReinUsesLisp | 1 | -2/+3 | |
2019-02-26 | shader/decode: Split memory and texture instructions decoding | ReinUsesLisp | 1 | -493/+0 | |
2019-02-14 | shader_decompiler: Improve Accuracy of Attribute Interpolation. | Fernando Sahmkow | 1 | -1/+1 | |
2019-02-12 | gl_shader_decompiler: Re-implement TLDS lod | ReinUsesLisp | 1 | -1/+1 | |
2019-02-07 | shader_ir: Remove F4 prefix to texture operations | ReinUsesLisp | 1 | -8/+7 | |
This was originally included because texture operations returned a vec4. These operations now return a single float and the F4 prefix doesn't mean anything. | |||||
2019-02-07 | shader_ir: Clean texture management code | ReinUsesLisp | 1 | -96/+58 | |
Previous code relied on GLSL parameter order (something that's always ill-formed on an IR design). This approach passes spatial coordiantes through operation nodes and array and depth compare values in the the texture metadata. It still contains an "extra" vector containing generic nodes for bias and component index (for example) which is still a bit ill-formed but it should be better than the previous approach. | |||||
2019-02-03 | Fix TXQ not using the component mask. | Fernando Sahmkow | 1 | -6/+9 | |
2019-02-03 | shader_ir/memory: Add ST_L 64 and 128 bits stores | ReinUsesLisp | 1 | -3/+11 | |
2019-02-03 | shader_ir: Rename BasicBlock to NodeBlock | ReinUsesLisp | 1 | -5/+4 | |
It's not always used as a basic block. Rename it for consistency. | |||||
2019-02-03 | shader_ir: Pass decoded nodes as a whole instead of per basic blocks | ReinUsesLisp | 1 | -2/+3 | |
Some games call LDG at the top of a basic block, making the tracking heuristic to fail. This commit lets the heuristic the decoded nodes as a whole instead of per basic blocks. This may lead to some false positives but allows it the heuristic to track cases it previously couldn't. | |||||
2019-02-03 | shader_ir/memory: Add LD_L 128 bits loads | ReinUsesLisp | 1 | -7/+19 | |
2019-02-03 | shader_bytecode: Rename BytesN enums to BitsN | ReinUsesLisp | 1 | -4/+4 | |
2019-02-03 | shader_ir/memory: Add LD_L 64 bits loads | ReinUsesLisp | 1 | -6/+17 | |
2019-01-30 | shader_ir: Unify constant buffer offset values | ReinUsesLisp | 1 | -3/+3 | |
Constant buffer values on the shader IR were using different offsets if the access direct or indirect. cbuf34 has a non-multiplied offset while cbuf36 does. On shader decoding this commit multiplies it by four on cbuf34 queries. | |||||
2019-01-30 | shader_decode: Implement LDG and basic cbuf tracking | ReinUsesLisp | 1 | -0/+49 | |
2019-01-15 | shader_ir: Pass to decoder functions basic block's code | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_ir: Remove composite primitives and use temporals instead | ReinUsesLisp | 1 | -145/+149 | |
2019-01-15 | shader_decode: Use proper primitive names | ReinUsesLisp | 1 | -2/+2 | |
2019-01-15 | shader_ir: Remove RZ and use Register::ZeroIndex instead | ReinUsesLisp | 1 | -6/+11 | |
2019-01-15 | shader_decode: Implement TEXS.F16 | ReinUsesLisp | 1 | -13/+25 | |
2019-01-15 | shader_decode: Implement TLDS (untested) | ReinUsesLisp | 1 | -8/+61 | |
2019-01-15 | shader_decode: Update TLD4 reflecting #1862 changes | ReinUsesLisp | 1 | -52/+49 | |
2019-01-15 | shader_ir: Fixup TEX and TEXS and partially fix TLD4 decompiling | ReinUsesLisp | 1 | -50/+49 | |
2019-01-15 | shader_decode: Implement ST_L | ReinUsesLisp | 1 | -0/+17 | |
2019-01-15 | shader_decode: Implement LD_L | ReinUsesLisp | 1 | -0/+18 | |
2019-01-15 | shader_decode: Implement LD_C | ReinUsesLisp | 1 | -0/+31 | |
2019-01-15 | shader_decode: Implement TMML | ReinUsesLisp | 1 | -3/+45 | |
2019-01-15 | shader_decode: Implement TEX and TXQ | ReinUsesLisp | 1 | -0/+219 | |
2019-01-15 | shader_decode: Implement TEXS (F32) | ReinUsesLisp | 1 | -0/+199 | |
2019-01-15 | shader_decode: Implement ST_A | ReinUsesLisp | 1 | -0/+30 | |
2019-01-15 | shader_decode: Implement LD_A | ReinUsesLisp | 1 | -1/+39 | |
2019-01-15 | shader_ir: Initial implementation | ReinUsesLisp | 1 | -0/+24 | |