summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader/decode/memory.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* shader_ir/memory: Ignore global memory when tracking failsReinUsesLisp2019-10-221-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.
* shader_ir: Implement LD_SReinUsesLisp2019-09-051-10/+13
| | | | Loads from shared memory.
* shader_ir: Implement ST_SReinUsesLisp2019-09-051-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.
* shader_ir: Rename Get/SetTemporal to Get/SetTemporaryLioncash2019-07-171-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.
* shader: Allow tracking of indirect buffers without variable offsetReinUsesLisp2019-07-151-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.
* shader: Use shared_ptr to store nodes and move initialization to fileReinUsesLisp2019-06-061-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.
* Merge pull request #2485 from ReinUsesLisp/generic-memorybunnei2019-05-251-27/+55
|\ | | | | shader/memory: Implement generic memory stores and loads (ST and LD)
| * shader/memory: Implement ST (generic memory)ReinUsesLisp2019-05-211-21/+35
| |
| * shader/memory: Implement LD (generic memory)ReinUsesLisp2019-05-211-7/+21
| |
* | shader/decode/memory: Remove left in debug pragmaLioncash2019-05-221-2/+0
|/
* shader_ir/memory: Assert on non-32 bits ALD.PHYSReinUsesLisp2019-05-031-0/+3
|
* shader: Add physical attributes commentariesReinUsesLisp2019-05-031-1/+1
|
* shader_ir/memory: Implement physical input attributesReinUsesLisp2019-05-031-3/+6
|
* shader: Remove unused AbufNode Ipa modeReinUsesLisp2019-05-031-5/+2
|
* shader_ir/memory: Emit AL2P IRReinUsesLisp2019-05-031-0/+17
|
* Merge pull request #2315 from ReinUsesLisp/severity-decompilerbunnei2019-04-171-4/+5
|\ | | | | shader_ir/decode: Reduce the severity of common assertions
| * shader_ir/memory: Reduce severity of LD_L cache management and log itReinUsesLisp2019-04-031-2/+2
| |
| * shader_ir/memory: Reduce severity of ST_L cache management and log itReinUsesLisp2019-04-031-2/+3
| |
* | shader_ir: Implement STG, keep track of global memory usage and flushReinUsesLisp2019-04-141-35/+74
|/
* shader/decode: Split memory and texture instructions decodingReinUsesLisp2019-02-261-493/+0
|
* Merge pull request #2118 from FernandoS27/ipa-improvebunnei2019-02-251-1/+1
|\ | | | | shader_decompiler: Improve Accuracy of Attribute Interpolation.
| * shader_decompiler: Improve Accuracy of Attribute Interpolation.Fernando Sahmkow2019-02-141-1/+1
| |
* | gl_shader_decompiler: Re-implement TLDS lodReinUsesLisp2019-02-121-1/+1
|/
* shader_ir: Remove F4 prefix to texture operationsReinUsesLisp2019-02-071-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.
* shader_ir: Clean texture management codeReinUsesLisp2019-02-071-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.
* Merge pull request #2083 from ReinUsesLisp/shader-ir-cbuf-trackingbunnei2019-02-071-6/+6
|\ | | | | shader/track: Add a more permissive global memory tracking
| * shader_ir: Rename BasicBlock to NodeBlockReinUsesLisp2019-02-031-5/+4
| | | | | | | | It's not always used as a basic block. Rename it for consistency.
| * shader_ir: Pass decoded nodes as a whole instead of per basic blocksReinUsesLisp2019-02-031-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.
* | Merge pull request #2081 from ReinUsesLisp/lmem-64bunnei2019-02-051-12/+43
|\ \ | | | | | | shader_ir/memory: Add LD_L 64 bits loads
| * | shader_ir/memory: Add ST_L 64 and 128 bits storesReinUsesLisp2019-02-031-3/+11
| | |
| * | shader_ir/memory: Add LD_L 128 bits loadsReinUsesLisp2019-02-031-7/+19
| | |
| * | shader_bytecode: Rename BytesN enums to BitsNReinUsesLisp2019-02-031-4/+4
| | |
| * | shader_ir/memory: Add LD_L 64 bits loadsReinUsesLisp2019-02-031-6/+17
| |/
* | Merge pull request #2082 from FernandoS27/txq-stlbunnei2019-02-051-6/+9
|\ \ | |/ |/| Fix TXQ not using the component mask.
| * Fix TXQ not using the component mask.Fernando Sahmkow2019-02-031-6/+9
| |
* | shader_ir: Unify constant buffer offset valuesReinUsesLisp2019-01-301-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.
* shader_decode: Implement LDG and basic cbuf trackingReinUsesLisp2019-01-301-0/+49
|
* shader_ir: Pass to decoder functions basic block's codeReinUsesLisp2019-01-151-1/+1
|
* shader_ir: Remove composite primitives and use temporals insteadReinUsesLisp2019-01-151-145/+149
|
* shader_decode: Use proper primitive namesReinUsesLisp2019-01-151-2/+2
|
* shader_ir: Remove RZ and use Register::ZeroIndex insteadReinUsesLisp2019-01-151-6/+11
|
* shader_decode: Implement TEXS.F16ReinUsesLisp2019-01-151-13/+25
|
* shader_decode: Implement TLDS (untested)ReinUsesLisp2019-01-151-8/+61
|
* shader_decode: Update TLD4 reflecting #1862 changesReinUsesLisp2019-01-151-52/+49
|
* shader_ir: Fixup TEX and TEXS and partially fix TLD4 decompilingReinUsesLisp2019-01-151-50/+49
|
* shader_decode: Implement ST_LReinUsesLisp2019-01-151-0/+17
|
* shader_decode: Implement LD_LReinUsesLisp2019-01-151-0/+18
|
* shader_decode: Implement LD_CReinUsesLisp2019-01-151-0/+31
|
* shader_decode: Implement TMMLReinUsesLisp2019-01-151-3/+45
|
* shader_decode: Implement TEX and TXQReinUsesLisp2019-01-151-0/+219
|
* shader_decode: Implement TEXS (F32)ReinUsesLisp2019-01-151-0/+199
|
* shader_decode: Implement ST_AReinUsesLisp2019-01-151-0/+30
|
* shader_decode: Implement LD_AReinUsesLisp2019-01-151-1/+39
|
* shader_ir: Initial implementationReinUsesLisp2019-01-151-0/+24