Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2020-02-02 | shader: Remove curly braces initializers on shared pointers | ReinUsesLisp | 2 | -3/+3 | |
2020-01-29 | shader/other: Fix skips for SYNC and BRK | ReinUsesLisp | 1 | -2/+2 | |
2020-01-29 | shader/other: Stub S2R LaneId | ReinUsesLisp | 1 | -1/+4 | |
2020-01-27 | shader/bfi: Implement register-constant buffer variant | ReinUsesLisp | 1 | -2/+5 | |
It's the same as the variant that was implemented, but it takes the operands from another source. | |||||
2020-01-27 | shader/arithmetic: Implement FCMP | ReinUsesLisp | 1 | -1/+10 | |
Compares the third operand with zero, then selects between the first and second. | |||||
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_IR: Address feedback. | Fernando Sahmkow | 1 | -1/+2 | |
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-24 | Shader_IR: Change name of TrackSampler function so it does not confuse with the type. | Fernando Sahmkow | 1 | -1/+1 | |
2020-01-24 | Shader_IR: Propagate bindless index into the GL compiler. | Fernando Sahmkow | 1 | -16/+24 | |
2020-01-24 | Shader_IR: deduce size of indexed samplers | Fernando Sahmkow | 1 | -4/+5 | |
2020-01-24 | Shader_IR: Setup Indexed Samplers on the IR | Fernando Sahmkow | 1 | -20/+46 | |
2020-01-16 | shader/memory: Implement ATOMS.ADD.U32 | ReinUsesLisp | 1 | -0/+19 | |
2020-01-09 | shader_ir/texture: Simplify AOFFI code | ReinUsesLisp | 1 | -10/+6 | |
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. | |||||
2020-01-04 | Shader_IR: Implement TXD Array. | Fernando Sahmkow | 1 | -5/+12 | |
This commit extends the compilation of TXD to support array samplers on TXD. | |||||
2019-12-20 | shader/p2r: Implement P2R Pr | ReinUsesLisp | 1 | -1/+15 | |
P2R dumps predicate or condition codes state to a register. This is useful for unit testing. | |||||
2019-12-20 | shader/r2p: Refactor P2R to support P2R | ReinUsesLisp | 1 | -16/+30 | |
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-18 | shader/conversion: Implement byte selector in I2F | ReinUsesLisp | 1 | -2/+13 | |
I2F's byte selector is used to choose what bytes to convert to float. e.g. if the input is 0xaabbccdd and the selector is ".B3" it will convert 0xaa. The default (when it's not shown in nvdisasm) is ".B0", in that example the default would convert 0xdd to float. | |||||
2019-12-18 | shader/texture: Properly shrink unused entries in size mismatches | ReinUsesLisp | 1 | -4/+9 | |
When a image format mismatches we were inserting zeroes to the texture itself. This was not handling cases were the mismatch uses less coordinates than the guest shader code. Address that by resizing the vector. | |||||
2019-12-16 | shader/texture: Implement TLD4.PTP | ReinUsesLisp | 1 | -18/+56 | |
2019-12-16 | shader/texture: Enable arrayed TLD4 | ReinUsesLisp | 1 | -1/+0 | |
2019-12-16 | shader/texture: Implement AOFFI for TLD4S | ReinUsesLisp | 1 | -13/+18 | |
2019-12-16 | shader/texture: Remove unnecesary parenthesis | ReinUsesLisp | 1 | -2/+2 | |
2019-12-12 | Shader_IR: Correct TLD4S Depth Compare. | Fernando Sahmkow | 1 | -5/+12 | |
2019-12-12 | Shader_Ir: Correct TLD4S encoding and implement f16 flag. | Fernando Sahmkow | 1 | -9/+12 | |
2019-12-12 | Shader_Ir: default failed tracks on bindless samplers to null values. | Fernando Sahmkow | 1 | -22/+75 | |
2019-12-10 | shader: Implement MEMBAR.GL | ReinUsesLisp | 1 | -0/+6 | |
Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V. | |||||
2019-12-10 | shader_ir/other: Implement S2R InvocationId | ReinUsesLisp | 1 | -0/+2 | |
2019-12-10 | shader: Keep track of shaders using warp instructions | ReinUsesLisp | 1 | -0/+3 | |
2019-12-10 | shader_ir/memory: Implement patch stores | ReinUsesLisp | 1 | -16/+18 | |
2019-11-23 | shader/texture: Handle TLDS texture type mismatches | ReinUsesLisp | 1 | -1/+10 | |
Some games like "Fire Emblem: Three Houses" bind 2D textures to offsets used by instructions of 1D textures. To handle the discrepancy this commit uses the the texture type from the binding and modifies the emitted code IR to build a valid backend expression. E.g.: Bound texture is 2D and instruction is 1D, the emitted IR samples a 2D texture in the coordinate ivec2(X, 0). | |||||
2019-11-23 | shader/texture: Deduce texture buffers from locker | ReinUsesLisp | 1 | -61/+41 | |
Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded. | |||||
2019-11-20 | shader/other: Reduce DEPBAR log severity | ReinUsesLisp | 1 | -1/+1 | |
While DEPBAR is stubbed it doesn't change anything from our end. Shading languages handle what this instruction does implicitly. We are not getting anything out fo this log except noise. | |||||
2019-11-18 | Shader_IR: Address Feedback | Fernando Sahmkow | 2 | -10/+8 | |
2019-11-14 | Shader_IR: Implement TXD instruction. | Fernando Sahmkow | 1 | -7/+49 | |
2019-11-14 | Shader_IR: Implement FLO instruction. | Fernando Sahmkow | 1 | -0/+18 | |
2019-11-08 | shader_ir/warp: Implement FSWZADD | ReinUsesLisp | 1 | -0/+9 | |
2019-11-08 | gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsics | ReinUsesLisp | 1 | -33/+35 | |
2019-11-07 | shader/decode: Reduce severity of arithmetic rounding warnings | ReinUsesLisp | 6 | -15/+17 | |
2019-11-07 | shader/arithmetic: Reduce RRO stub severity | ReinUsesLisp | 1 | -1/+2 | |
2019-11-07 | shader/texture: Remove NODEP warnings | ReinUsesLisp | 1 | -35/+0 | |
These warnings don't offer meaningful information while decoding shaders. Remove them. | |||||
2019-10-31 | Shader_IR: Fix regression on TLD4 | Fernando Sahmkow | 1 | -4/+3 | |
Originally on the last commit I thought TLD4 acted the same as TLD4S and didn't have a mask. It actually does have a component mask. This commit corrects that. | |||||
2019-10-30 | Shader_IR: Fix TLD4 and add Bindless Variant. | Fernando Sahmkow | 1 | -8/+24 | |
This commit fixes an issue where not all 4 results of tld4 were being written, the color component was defaulted to red, among other things. It also implements the bindless variant. | |||||
2019-10-30 | shader/node: Unpack bindless texture encoding | ReinUsesLisp | 2 | -54/+55 | |
Bindless textures were using u64 to pack the buffer and offset from where they come from. Drop this in favor of separated entries in the struct. Remove the usage of std::set in favor of std::list (it's not std::vector to avoid reference invalidations) for samplers and images. | |||||
2019-10-26 | Shader_IR: Address Feedback. | Fernando Sahmkow | 1 | -22/+16 | |
2019-10-25 | Shader_IR: allow lookup of texture samplers within the shader_ir for instructions that don't provide it | Fernando Sahmkow | 1 | -18/+54 | |
2019-10-24 | video_core/shader: Resolve instances of variable shadowing | Lioncash | 6 | -11/+12 | |
Silences a few -Wshadow warnings. | |||||
2019-10-22 | Shader_Ir: Fix TLD4S from using a component mask. | Fernando Sahmkow | 1 | -4/+4 | |
TLD4S always outputs 4 values, the previous code checked a component mask and omitted those values that weren't part of it. This commit corrects that and makes sure all 4 values are set. | |||||
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-10-07 | shader/half_set_predicate: Fix HSETP2 for constant buffers | ReinUsesLisp | 1 | -0/+2 | |
HSETP2 when used with a constant buffer parses the second operand type as F32. This is not configurable. | |||||
2019-10-07 | shader/half_set_predicate: Reduce DEBUG_ASSERT to LOG_DEBUG | ReinUsesLisp | 1 | -1/+2 | |
2019-10-05 | Shader_Ir: Refactor Decompilation process and allow multiple decompilation modes. | Fernando Sahmkow | 1 | -4/+4 | |
2019-10-05 | gl_shader_decompiler: Implement AST decompiling | Fernando Sahmkow | 1 | -4/+4 | |
2019-09-21 | gl_shader_decompiler: Use uint for images and fix SUATOM | ReinUsesLisp | 1 | -37/+29 | |
In the process remove implementation of SUATOM.MIN and SUATOM.MAX as these require a distinction between U32 and S32. These have to be implemented with imageCompSwap loop. | |||||
2019-09-21 | shader/image: Implement SULD and remove irrelevant code | ReinUsesLisp | 1 | -24/+49 | |
* Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array. | |||||
2019-09-21 | Shader_IR: ICMP corrections and fixes | Fernando Sahmkow | 1 | -6/+9 | |
2019-09-20 | Shader_IR: Implement ICMP. | Fernando Sahmkow | 1 | -0/+26 | |
2019-09-17 | shader_ir/warp: Implement SHFL | ReinUsesLisp | 1 | -0/+47 | |
2019-09-11 | shader/image: Implement SUATOM and fix SUST | ReinUsesLisp | 1 | -21/+71 | |
2019-09-06 | gl_shader_decompiler: Keep track of written images and mark them as modified | ReinUsesLisp | 1 | -21/+19 | |
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-09-04 | shader/shift: Implement SHR wrapped and clamped variants | ReinUsesLisp | 1 | -6/+13 | |
Nvidia defaults to wrapped shifts, but this is undefined behaviour on OpenGL's spec. Explicitly mask/clamp according to what the guest shader requires. | |||||
2019-09-04 | half_set_predicate: Fix predicate assignments | ReinUsesLisp | 1 | -10/+9 | |
2019-08-30 | video_core: Silent miscellaneous warnings (#2820) | Rodrigo Locatti | 5 | -5/+0 | |
* texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables | |||||
2019-08-28 | shader_ir/conversion: Split int and float selector and implement F2F H1 | ReinUsesLisp | 1 | -18/+16 | |
2019-08-28 | shader_ir/conversion: Implement F2I F16 Ra.H1 | ReinUsesLisp | 1 | -4/+16 | |
2019-08-28 | float_set_predicate: Add missing negation bit for the second operand | ReinUsesLisp | 1 | -4/+5 | |
2019-08-21 | shader_ir: Implement VOTE | ReinUsesLisp | 1 | -0/+55 | |
Implement VOTE using Nvidia's intrinsics. Documentation about these can be found here https://developer.nvidia.com/reading-between-threads-shader-intrinsics Instead of using portable ARB instructions I opted to use Nvidia intrinsics because these are the closest we have to how Tegra X1 hardware renders. To stub VOTE on non-Nvidia drivers (including nouveau) this commit simulates a GPU with a warp size of one, returning what is meaningful for the instruction being emulated: * anyThreadNV(value) -> value * allThreadsNV(value) -> value * allThreadsEqualNV(value) -> true ballotARB, also known as "uint64_t(activeThreadsNV())", emits VOTE.ANY Rd, PT, PT; on nouveau's compiler. This doesn't match exactly to Nvidia's code VOTE.ALL Rd, PT, PT; Which is emulated with activeThreadsNV() by this commit. In theory this shouldn't really matter since .ANY, .ALL and .EQ affect the predicates (set to PT on those cases) and not the registers. | |||||
2019-08-04 | shader_ir: Implement NOP | ReinUsesLisp | 1 | -0/+6 | |
2019-08-04 | half_set_predicate: Fix HSETP2_C constant buffer offset | ReinUsesLisp | 1 | -1/+1 | |
2019-07-26 | decode/half_set_predicate: Fix predicates | ReinUsesLisp | 1 | -3/+3 | |
2019-07-22 | shader/decode: Implement S2R Tic | ReinUsesLisp | 1 | -0/+7 | |
2019-07-20 | Shader_Ir: Implement F16 Variants of F2F, F2I, I2F. | Fernando Sahmkow | 1 | -5/+25 | |
This commit takes care of implementing the F16 Variants of the conversion instructions and makes sure conversions are done. | |||||
2019-07-20 | Shader_Ir: Change Debug Asserts for Log Warnings | Fernando Sahmkow | 3 | -10/+17 | |
2019-07-20 | shader/half_set_predicate: Fix HSETP2 implementation | ReinUsesLisp | 1 | -17/+14 | |
2019-07-20 | shader/half_set_predicate: Implement missing HSETP2 variants | ReinUsesLisp | 1 | -13/+29 | |
2019-07-18 | Shader_Ir: correct clang format | Fernando Sahmkow | 1 | -2/+2 | |
2019-07-18 | Shader_Ir: Downgrade precision and rounding asserts to debug asserts. | Fernando Sahmkow | 5 | -10/+10 | |
This commit reduces the sevirity of asserts for FP precision and rounding as this are well known and have little to no consequences in gpu's accuracy. | |||||
2019-07-17 | shader_ir: Rename Get/SetTemporal to Get/SetTemporary | Lioncash | 3 | -30/+30 | |
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-16 | shader/decode/other: Correct branch indirect argument within BRA handling | Lioncash | 1 | -1/+1 | |
This appears to have been a copy/paste error introduced within 8a6fc529a968e007f01464abadd32f9b5eb0a26c | |||||
2019-07-15 | shader: Allow tracking of indirect buffers without variable offset | ReinUsesLisp | 3 | -23/+10 | |
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-07-09 | shader_ir: Unify blocks in decompiled shaders. | Fernando Sahmkow | 1 | -7/+23 | |
2019-07-09 | shader_ir: Implement BRX & BRA.CC | Fernando Sahmkow | 1 | -4/+38 | |
2019-07-07 | Delete decode_integer_set.cpp | Tobias | 1 | -0/+0 | |
2019-07-07 | shader/texture: Add F16 support for TLDS | ReinUsesLisp | 1 | -1/+7 | |
2019-06-24 | decode/texture: Address feedback | ReinUsesLisp | 1 | -0/+1 | |
2019-06-21 | shader_ir: Fix image copy rebase issues | Fernando Sahmkow | 1 | -2/+7 | |
2019-06-21 | shader: Implement bindless images | ReinUsesLisp | 1 | -2/+28 | |
2019-06-21 | shader: Decode SUST and implement backing image functionality | ReinUsesLisp | 1 | -0/+89 | |
2019-06-21 | shader: Implement texture buffers | ReinUsesLisp | 1 | -0/+44 | |
2019-06-07 | shader: Split SSY and PBK stack | ReinUsesLisp | 1 | -10/+8 | |
Hardware testing revealed that SSY and PBK push to a different stack, allowing code like this: SSY label1; PBK label2; SYNC; label1: PBK; label2: EXIT; | |||||
2019-06-06 | shader: Use shared_ptr to store nodes and move initialization to file | ReinUsesLisp | 26 | -8/+34 | |
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-23 | shader/decode/*: Add missing newline to files lacking them | Lioncash | 18 | -18/+18 | |
Keeps the shader code file endings consistent. | |||||
2019-05-23 | shader/decode/*: Eliminate indirect inclusions | Lioncash | 6 | -1/+5 | |
Amends cases where we were using things that were indirectly being satisfied through other headers. This way, if those headers change and eliminate dependencies on other headers in the future, we don't have cascading compilation errors. | |||||
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-20 | shader: Implement S2R Tid{XYZ} and CtaId{XYZ} | ReinUsesLisp | 1 | -14/+28 | |
2019-05-10 | video_core/shader/decode/texture: Remove unused variable from GetTld4Code() | Lioncash | 1 | -1/+0 | |
2019-05-04 | shader/decode/texture: Remove unused variable | Lioncash | 1 | -1/+0 | |
This isn't used anywhere, so we can get rid of it. | |||||
2019-05-03 | shader_ir/other: Implement IPA.IDX | ReinUsesLisp | 1 | -5/+8 | |
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 | 2 | -6/+3 | |
2019-05-03 | shader_ir/memory: Emit AL2P IR | ReinUsesLisp | 1 | -0/+17 | |
2019-04-26 | shader_ir/texture: Fix sampler const buffer key shift | ReinUsesLisp | 1 | -1/+1 | |
2019-04-21 | Corrections Half Float operations on const buffers and implement saturation. | Fernando Sahmkow | 2 | -15/+16 | |
2019-04-18 | video_core: Silent -Wswitch warnings | ReinUsesLisp | 2 | -5/+7 | |
2019-04-16 | shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmetic | ReinUsesLisp | 5 | -29/+21 | |
Operations done before the main half float operation (like HAdd) were managing a packed value instead of the unpacked one. Adding an unpacked operation allows us to drop the per-operand MetaHalfArithmetic entry, simplifying the code overall. | |||||
2019-04-16 | shader_ir/decode: Implement half float saturation | ReinUsesLisp | 1 | -4/+2 | |
2019-04-16 | shader_ir/decode: Reduce severity of unimplemented half-float FTZ | ReinUsesLisp | 3 | -3/+9 | |
2019-04-16 | Do some corrections in conversion shader instructions. | Fernando Sahmkow | 1 | -16/+53 | |
Corrects encodings for I2F, F2F, I2I and F2I Implements Immediate variants of all four conversion types. Add assertions to unimplemented stuffs. | |||||
2019-04-14 | shader_ir: Implement STG, keep track of global memory usage and flush | ReinUsesLisp | 1 | -35/+74 | |
2019-04-08 | Correct XMAD mode, psl and high_b on different encodings. | Fernando Sahmkow | 1 | -9/+30 | |
2019-04-08 | Adapt Bindless to work with AOFFI | Fernando Sahmkow | 1 | -7/+18 | |
2019-04-08 | Move ConstBufferAccessor to Maxwell3d, correct mistakes and clang format. | Fernando Sahmkow | 1 | -1/+2 | |
2019-04-08 | Fix TMML | Fernando Sahmkow | 1 | -5/+7 | |
2019-04-08 | Refactor GetTextureCode and GetTexCode to use an optional instead of optional parameters | Fernando Sahmkow | 1 | -23/+24 | |
2019-04-08 | Implement TXQ_B | Fernando Sahmkow | 1 | -2/+8 | |
2019-04-08 | Implement TMML_B | Fernando Sahmkow | 1 | -5/+10 | |
2019-04-08 | Corrections to TEX_B | Fernando Sahmkow | 1 | -4/+5 | |
2019-04-08 | Unify both sampler types. | Fernando Sahmkow | 1 | -10/+12 | |
2019-04-08 | Implement Bindless Samplers and TEX_B in the IR. | Fernando Sahmkow | 1 | -6/+52 | |
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-03-31 | shader_ir/decode: Silent implicit sign conversion warning | Mat M | 1 | -2/+2 | |
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc> | |||||
2019-03-30 | shader_ir/decode: Implement AOFFI for TEX and TLD4 | ReinUsesLisp | 1 | -24/+88 | |
2019-02-26 | shader/decode: Remove extras from MetaTexture | ReinUsesLisp | 1 | -14/+23 | |
2019-02-26 | shader/decode: Split memory and texture instructions decoding | ReinUsesLisp | 2 | -493/+525 | |
2019-02-14 | shader_decompiler: Improve Accuracy of Attribute Interpolation. | Fernando Sahmkow | 2 | -3/+14 | |
2019-02-12 | gl_shader_decompiler: Re-implement TLDS lod | ReinUsesLisp | 1 | -1/+1 | |
2019-02-11 | Corrected F2I None mode to RoundEven. | Fernando Sahmkow | 1 | -3/+3 | |
2019-02-11 | Fix incorrect value for CC bit in IADD | Fernando Sahmkow | 1 | -2/+2 | |
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 | 25 | -33/+32 | |
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 | 25 | -26/+27 | |
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 | 13 | -21/+23 | |
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-16 | shader_ir: Fixup clang build | ReinUsesLisp | 1 | -4/+6 | |
2019-01-15 | shader_decode: Fixup XMAD | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_ir: Pass to decoder functions basic block's code | ReinUsesLisp | 25 | -25/+25 | |
2019-01-15 | shader_decode: Improve zero flag implementation | ReinUsesLisp | 13 | -73/+53 | |
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 | 2 | -8/+8 | |
2019-01-15 | shader_decode: Use BitfieldExtract instead of shift + and | ReinUsesLisp | 5 | -46/+18 | |
2019-01-15 | shader_ir: Remove Ipa primitive | ReinUsesLisp | 1 | -3/+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: Fixup R2P | ReinUsesLisp | 1 | -2/+3 | |
2019-01-15 | shader_decode: Fixup WriteLogicOperation zero comparison | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_decode: Fixup PSET | ReinUsesLisp | 1 | -2/+3 | |
2019-01-15 | shader_decode: Fixup clang-format | ReinUsesLisp | 2 | -2/+4 | |
2019-01-15 | video_core: Implement IR based geometry shaders | ReinUsesLisp | 1 | -0/+25 | |
2019-01-15 | shader_decode: Implement VMAD and VSETP | ReinUsesLisp | 1 | -0/+120 | |
2019-01-15 | shader_decode: Implement HSET2 | ReinUsesLisp | 1 | -1/+43 | |
2019-01-15 | shader_decode: Rework HSETP2 | ReinUsesLisp | 1 | -3/+5 | |
2019-01-15 | shader_decode: Implement R2P | ReinUsesLisp | 1 | -1/+28 | |
2019-01-15 | shader_decode: Implement CSETP | ReinUsesLisp | 1 | -14/+37 | |
2019-01-15 | shader_decode: Implement PSET | ReinUsesLisp | 1 | -1/+16 | |
2019-01-15 | shader_decode: Implement HFMA2 | ReinUsesLisp | 1 | -1/+53 | |
2019-01-15 | shader_decode: Implement POPC | ReinUsesLisp | 1 | -0/+10 | |
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: Fixup FSET | ReinUsesLisp | 1 | -2/+2 | |
2019-01-15 | shader_decode: Implement IADD32I | ReinUsesLisp | 1 | -0/+11 | |
2019-01-15 | video_core: Return safe values after an assert hits | ReinUsesLisp | 6 | -8/+12 | |
2019-01-15 | shader_decode: Implement FFMA | ReinUsesLisp | 1 | -1/+36 | |
2019-01-15 | shader_ir: Fixup file inclusions and clang-format | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_decode: Fixup clang-format | ReinUsesLisp | 2 | -3/+2 | |
2019-01-15 | shader_decode: Implement LEA | ReinUsesLisp | 1 | -0/+55 | |
2019-01-15 | shader_decode: Implement IADD3 | ReinUsesLisp | 1 | -0/+61 | |
2019-01-15 | shader_decode: Implement LOP3 | ReinUsesLisp | 1 | -0/+60 | |
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 HSETP2 | ReinUsesLisp | 1 | -1/+37 | |
2019-01-15 | shader_decode: Implement HADD2 and HMUL2 | ReinUsesLisp | 1 | -1/+48 | |
2019-01-15 | shader_decode: Implement HADD2_IMM and HMUL2_IMM | ReinUsesLisp | 1 | -1/+28 | |
2019-01-15 | shader_decode: Implement MOV_SYS | ReinUsesLisp | 1 | -0/+27 | |
2019-01-15 | shader_decode: Implement IMNMX | ReinUsesLisp | 1 | -0/+16 | |
2019-01-15 | shader_decode: Implement F2F_C | ReinUsesLisp | 1 | -2/+10 | |
2019-01-15 | shader_decode: Implement I2I | ReinUsesLisp | 1 | -0/+26 | |
2019-01-15 | shader_decode: Implement BRA internal flag | ReinUsesLisp | 1 | -4/+8 | |
2019-01-15 | shader_decode: Implement ISCADD | ReinUsesLisp | 1 | -0/+15 | |
2019-01-15 | shader_decode: Implement XMAD | ReinUsesLisp | 1 | -1/+85 | |
2019-01-15 | shader_decode: Implement PBK and BRK | ReinUsesLisp | 1 | -1/+22 | |
2019-01-15 | shader_decode: Implement LOP | ReinUsesLisp | 1 | -0/+15 | |
2019-01-15 | shader_decode: Implement SEL | ReinUsesLisp | 1 | -0/+8 | |
2019-01-15 | shader_decode: Implement IADD | ReinUsesLisp | 1 | -1/+28 | |
2019-01-15 | shader_decode: Implement ISETP | ReinUsesLisp | 1 | -1/+30 | |
2019-01-15 | shader_decode: Implement BFI | ReinUsesLisp | 1 | -1/+22 | |
2019-01-15 | shader_decode: Implement ISET | ReinUsesLisp | 1 | -1/+27 | |
2019-01-15 | shader_decode: Implement LD_C | ReinUsesLisp | 1 | -0/+31 | |
2019-01-15 | shader_decode: Implement SHL | ReinUsesLisp | 1 | -0/+8 | |
2019-01-15 | shader_decode: Implement SHR | ReinUsesLisp | 1 | -1/+26 | |
2019-01-15 | shader_decode: Implement LOP32I | ReinUsesLisp | 1 | -1/+67 | |
2019-01-15 | shader_decode: Implement BFE | ReinUsesLisp | 1 | -1/+25 | |
2019-01-15 | shader_decode: Implement FSET | ReinUsesLisp | 1 | -1/+36 | |
2019-01-15 | shader_decode: Implement F2I | ReinUsesLisp | 1 | -0/+37 | |
2019-01-15 | shader_decode: Implement I2F | ReinUsesLisp | 1 | -0/+23 | |
2019-01-15 | shader_decode: Implement F2F | ReinUsesLisp | 1 | -1/+37 | |
2019-01-15 | shader_decode: Stub DEPBAR | ReinUsesLisp | 1 | -0/+4 | |
2019-01-15 | shader_decode: Implement SSY and SYNC | ReinUsesLisp | 1 | -0/+19 | |
2019-01-15 | shader_decode: Implement PSETP | ReinUsesLisp | 1 | -1/+21 | |
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 FSETP | ReinUsesLisp | 1 | -1/+33 | |
2019-01-15 | shader_decode: Partially implement BRA | ReinUsesLisp | 1 | -0/+12 | |
2019-01-15 | shader_decode: Implement IPA | ReinUsesLisp | 1 | -0/+12 | |
2019-01-15 | shader_decode: Implement EXIT | ReinUsesLisp | 1 | -1/+32 | |
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_decode: Implement FADD32I | ReinUsesLisp | 1 | -0/+12 | |
2019-01-15 | shader_decode: Implement FMUL32_IMM | ReinUsesLisp | 1 | -0/+10 | |
2019-01-15 | shader_decode: Implement MOV32_IMM | ReinUsesLisp | 1 | -1/+9 | |
2019-01-15 | shader_decode: Stub RRO_C, RRO_R and RRO_IMM | ReinUsesLisp | 1 | -0/+9 | |
2019-01-15 | shader_decode: Implement FMNMX_C, FMNMX_R and FMNMX_IMM | ReinUsesLisp | 1 | -0/+18 | |
2019-01-15 | shader_decode: Implement MUFU | ReinUsesLisp | 1 | -0/+29 | |
2019-01-15 | shader_decode: Implement FADD_C, FADD_R and FADD_IMM | ReinUsesLisp | 1 | -0/+15 | |
2019-01-15 | shader_decode: Implement FMUL_C, FMUL_R and FMUL_IMM | ReinUsesLisp | 1 | -0/+42 | |
2019-01-15 | shader_decode: Implement MOV_C and MOV_R | ReinUsesLisp | 1 | -1/+23 | |
2019-01-15 | shader_ir: Initial implementation | ReinUsesLisp | 25 | -0/+576 | |