aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/decode/memory.cpp
Commit message (Collapse)AuthorAgeFilesLines
* shader: Remove old shader managementReinUsesLisp2021-07-221-493/+0
|
* Implement texture offset support for TexelFetch and TextureGather and add ↵Kelebek12021-02-151-0/+1
| | | | | | offsets for Tlds Formatting
* video_core: Remove unnecessary enum class casting in logging messagesLioncash2020-12-071-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.
* shader/memory: Amend UNIMPLEMENTED_IF_MSG without a messageLioncash2020-08-141-1/+2
| | | | | We need to provide a message for this variant of the macro, so we can simply log out the type being used.
* General: Tidy up clang-format warnings part 2Lioncash2020-08-131-3/+3
|
* shader/memory: Implement non-addition operations in REDReinUsesLisp2020-05-211-2/+1
| | | | Trivially implement these instructions. They are used in Astral Chain.
* decode/memory: Resolve unused variable warningLioncash2020-04-161-1/+1
| | | | Only the first element of the returned pair is ever used.
* shader/memory: Implement RED.E.ADDReinUsesLisp2020-04-061-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.
* shader/memory: Add "using std::move"ReinUsesLisp2020-04-061-11/+13
|
* shader/memory: Minor fixes in ATOMReinUsesLisp2020-04-061-32/+30
|
* shader/memory: Silence no return value warningReinUsesLisp2020-04-021-0/+3
| | | | Silences a warning about control paths not all returning a value.
* clang-formatNguyen Dac Nam2020-03-311-2/+1
|
* shader_decode: fix by suggestionNguyen Dac Nam2020-03-311-27/+22
|
* clang-formatnamkazy2020-03-301-3/+3
|
* shader_decode: ATOM/ATOMS: add function to avoid code repetitionnamkazy2020-03-301-70/+39
|
* shader_decode: implement ATOM operation for S32 and U32Nguyen Dac Nam2020-03-301-6/+39
|
* clang-formatnamkazy2020-03-301-3/+3
|
* shader_decode: implement ATOMS instr partial.Nguyen Dac Nam2020-03-301-10/+42
|
* Merge pull request #3347 from ReinUsesLisp/local-membunnei2020-01-301-30/+55
|\ | | | | shader/memory: Implement LDL.S16, LDS.S16, STL.S16 and STS.S16
| * shader/memory: Implement STL.S16 and STS.S16ReinUsesLisp2020-01-251-3/+10
| |
| * shader/memory: Implement unaligned LDL.S16 and LDS.S16ReinUsesLisp2020-01-251-5/+3
| |
| * shader/memory: Move unaligned load/store to functionsReinUsesLisp2020-01-251-18/+27
| |
| * shader/memory: Implement LDL.S16 and LDS.S16ReinUsesLisp2020-01-251-12/+23
| |
* | shader/memory: Implement ATOM.ADDReinUsesLisp2020-01-261-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.
* shader/memory: Implement ATOMS.ADD.U32ReinUsesLisp2020-01-161-0/+19
|
* shader_ir/memory: Implement u16 and u8 for STG and LDGReinUsesLisp2020-01-091-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.
* shader/memory: Implement LDG.U8 and unaligned U8 loadsReinUsesLisp2019-12-181-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)
* shader_ir/memory: Implement patch storesReinUsesLisp2019-12-091-16/+18
|
* 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-161-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-141-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-051-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-241-27/+55
|\ | | | | shader/memory: Implement generic memory stores and loads (ST and LD)
| * shader/memory: Implement ST (generic memory)ReinUsesLisp2019-05-201-21/+35
| |
| * shader/memory: Implement LD (generic memory)ReinUsesLisp2019-05-201-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-021-0/+3
|
* shader: Add physical attributes commentariesReinUsesLisp2019-05-021-1/+1
|
* shader_ir/memory: Implement physical input attributesReinUsesLisp2019-05-021-3/+6
|
* shader: Remove unused AbufNode Ipa modeReinUsesLisp2019-05-021-5/+2
|
* shader_ir/memory: Emit AL2P IRReinUsesLisp2019-05-021-0/+17
|
* Merge pull request #2315 from ReinUsesLisp/severity-decompilerbunnei2019-04-161-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-241-1/+1
|\ | | | | shader_decompiler: Improve Accuracy of Attribute Interpolation.
| * shader_decompiler: Improve Accuracy of Attribute Interpolation.Fernando Sahmkow2019-02-141-1/+1
| |