Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2020-04-24 | Fix -Wdeprecated-copy warning. | Markus Wick | 1 | -0/+1 | |
2020-04-23 | decode/arithmetic_half: Fix HADD2 and HMUL2 absolute and negation bits | ReinUsesLisp | 1 | -2/+0 | |
The encoding for negation and absolute value was wrong. Extracting is now done manually. Similar instructions having different encodings is the rule, not the exception. To keep sanity and readability I preferred to extract the desired bit manually. This is implemented against nxas: https://github.com/ReinUsesLisp/nxas/blob/8dbc38995711cc12206aa370145a3a02665fd989/table.h#L68 That is itself tested against nvdisasm (Nvidia's official disassembler). | |||||
2020-04-16 | CMakeLists: Specify -Wextra on linux builds | Lioncash | 1 | -1/+1 | |
Allows reporting more cases where logic errors may exist, such as implicit fallthrough cases, etc. We currently ignore unused parameters, since we currently have many cases where this is intentional (virtual interfaces). While we're at it, we can also tidy up any existing code that causes warnings. This also uncovered a few bugs as well. | |||||
2020-04-15 | shader/arithmetic: Add FCMP_CR variant | ReinUsesLisp | 1 | -2/+4 | |
Adds another variant of FCMP. | |||||
2020-04-12 | shader/video: Partially implement VMNMX | ReinUsesLisp | 1 | -0/+55 | |
Implements the common usages for VMNMX. Inputs with a different size than 32 bits are not supported and sign mismatches aren't supported either. VMNMX works as follows: It grabs Ra and Rb and applies a maximum/minimum on them (this is defined by .MX), having in mind the input sign. This result can then be saturated. After the intermediate result is calculated, it applies another operation on it using Rc. These operations are merges, accumulations or another min/max pass. This instruction allows to implement with a more flexible approach GCN's min3 and max3 instructions (for instance). | |||||
2020-04-07 | shader/conversion: Implement I2I sign extension, saturation and selection | ReinUsesLisp | 1 | -1/+1 | |
Reimplements I2I adding sign extension, saturation (clamp source value to the destination), selection and destination sizes that are not 32 bits wide. It doesn't implement CC yet. | |||||
2020-04-06 | shader/memory: Implement RED.E.ADD | ReinUsesLisp | 1 | -0/+8 | |
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-04 | shader_bytecode: Rename MOV_SYS to S2R | ReinUsesLisp | 1 | -2/+2 | |
2020-04-04 | shader_bytecode: Add encoding for BAR | ReinUsesLisp | 1 | -0/+2 | |
2020-04-04 | shader_bytecode: Add encoding for VOTE.VTG | ReinUsesLisp | 1 | -0/+2 | |
2020-03-30 | shader_decode: merge GlobalAtomicOp to AtomicOp | namkazy | 1 | -13/+1 | |
2020-03-28 | shader_bytecode: Fix I2I_IMM encoding | ReinUsesLisp | 1 | -1/+1 | |
2020-03-16 | shader/shader_ir: Track usage in input attribute and of legacy varyings | ReinUsesLisp | 1 | -0/+6 | |
2020-03-13 | shader_bytecode: update BFE instructions struct. | Nguyen Dac Nam | 1 | -8/+3 | |
2020-02-05 | shader/decode: Fix constant buffer offsets | ReinUsesLisp | 1 | -2/+2 | |
Some instances were using cbuf34.offset instead of cbuf34.GetOffset(). This returned the an invalid offset. Address those instances and rename offset to "shifted_offset" to avoid future bugs. | |||||
2020-02-02 | shader/shift: Implement SHF_LEFT_{IMM,R} | ReinUsesLisp | 1 | -0/+20 | |
Shifts a pair of registers to the left and returns the high register. | |||||
2020-01-27 | shader/bfi: Implement register-constant buffer variant | ReinUsesLisp | 1 | -0/+2 | |
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 | -0/+7 | |
Compares the third operand with zero, then selects between the first and second. | |||||
2020-01-26 | shader/memory: Implement ATOM.ADD | ReinUsesLisp | 1 | -0/+30 | |
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-16 | shader/memory: Implement ATOMS.ADD.U32 | ReinUsesLisp | 1 | -3/+34 | |
2019-12-20 | shader/r2p: Refactor P2R to support P2R | ReinUsesLisp | 1 | -1/+3 | |
2019-12-18 | shader_bytecode: Fix TLD4S encoding | ReinUsesLisp | 1 | -1/+1 | |
2019-12-16 | shader/texture: Implement TLD4.PTP | ReinUsesLisp | 1 | -6/+6 | |
2019-12-12 | Shader_Ir: Correct TLD4S encoding and implement f16 flag. | Fernando Sahmkow | 1 | -1/+2 | |
2019-12-10 | shader: Implement MEMBAR.GL | ReinUsesLisp | 1 | -1/+17 | |
Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V. | |||||
2019-12-10 | shader_ir/memory: Implement patch stores | ReinUsesLisp | 1 | -1/+2 | |
2019-12-07 | shader_bytecode: Remove corrupted character | ReinUsesLisp | 1 | -1/+1 | |
2019-11-14 | Shader_IR: Implement TXD instruction. | Fernando Sahmkow | 1 | -0/+20 | |
2019-11-14 | Shader_IR: Implement FLO instruction. | Fernando Sahmkow | 1 | -0/+6 | |
2019-11-14 | Shader_Bytecode: Add encodings for FLO, SHF and TXD | Fernando Sahmkow | 1 | -0/+18 | |
2019-11-08 | video_core: Silence implicit conversion warnings | ReinUsesLisp | 1 | -5/+7 | |
2019-11-08 | shader_ir/warp: Implement FSWZADD | ReinUsesLisp | 1 | -0/+10 | |
2019-10-30 | Shader_IR: Fix TLD4 and add Bindless Variant. | Fernando Sahmkow | 1 | -1/+29 | |
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-24 | shader_bytecode: Make Matcher constexpr capable | Lioncash | 1 | -13/+13 | |
Greatly shrinks the amount of generated code for GetDecodeTable(). Collapses an assembly output of 9000+ lines down to ~3621 with Clang, and 6513 down to ~2616 with GCC, given it's now allowed to construct all the entries as a sequence of constant data. | |||||
2019-09-21 | gl_shader_decompiler: Use uint for images and fix SUATOM | ReinUsesLisp | 1 | -2/+2 | |
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 | -1/+1 | |
* Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array. | |||||
2019-09-21 | shader_bytecode: Add SULD encoding | ReinUsesLisp | 1 | -0/+2 | |
2019-09-21 | Shader_IR: ICMP corrections and fixes | Fernando Sahmkow | 1 | -0/+2 | |
2019-09-20 | Shader_IR: Implement ICMP. | Fernando Sahmkow | 1 | -0/+11 | |
2019-09-17 | shader_ir/warp: Implement SHFL | ReinUsesLisp | 1 | -0/+18 | |
2019-09-11 | shader/image: Implement SUATOM and fix SUST | ReinUsesLisp | 1 | -0/+32 | |
2019-09-04 | shader/shift: Implement SHR wrapped and clamped variants | ReinUsesLisp | 1 | -0/+4 | |
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-08-28 | shader_ir/conversion: Split int and float selector and implement F2F H1 | ReinUsesLisp | 1 | -1/+8 | |
2019-08-28 | shader_ir/conversion: Implement F2I F16 Ra.H1 | ReinUsesLisp | 1 | -2/+1 | |
2019-08-28 | float_set_predicate: Add missing negation bit for the second operand | ReinUsesLisp | 1 | -0/+1 | |
2019-08-21 | shader_ir: Implement VOTE | ReinUsesLisp | 1 | -0/+16 | |
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/+7 | |
2019-07-20 | Shader_Ir: Implement F16 Variants of F2F, F2I, I2F. | Fernando Sahmkow | 1 | -2/+0 | |
This commit takes care of implementing the F16 Variants of the conversion instructions and makes sure conversions are done. | |||||
2019-07-20 | shader/half_set_predicate: Implement missing HSETP2 variants | ReinUsesLisp | 1 | -6/+20 | |
2019-07-09 | shader_ir: Implement BRX & BRA.CC | Fernando Sahmkow | 1 | -0/+16 | |
2019-07-08 | gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders | ReinUsesLisp | 1 | -1/+1 | |
This commit implements gl_ViewportIndex and gl_Layer in vertex and geometry shaders. In the case it's used in a vertex shader, it requires ARB_shader_viewport_layer_array. This extension is available on AMD and Nvidia devices (mesa and proprietary drivers), but not available on Intel on any platform. At the moment of writing this description I don't know if this is a hardware limitation or a driver limitation. In the case that ARB_shader_viewport_layer_array is not available, writes to these registers on a vertex shader are ignored, with the appropriate logging. | |||||
2019-07-07 | shader/texture: Add F16 support for TLDS | ReinUsesLisp | 1 | -1/+2 | |
2019-06-24 | shader_bytecode: Include missing <array> | ReinUsesLisp | 1 | -0/+1 | |
2019-06-21 | shader: Decode SUST and implement backing image functionality | ReinUsesLisp | 1 | -2/+64 | |
2019-06-21 | shader: Implement texture buffers | ReinUsesLisp | 1 | -0/+16 | |
2019-06-04 | shader_bytecode: Mark EXIT as flow instruction | Fernando Sahmkow | 1 | -1/+1 | |
2019-05-21 | shader/memory: Implement ST (generic memory) | ReinUsesLisp | 1 | -0/+1 | |
2019-05-21 | shader/memory: Implement LD (generic memory) | ReinUsesLisp | 1 | -4/+15 | |
2019-05-03 | shader_ir/other: Implement IPA.IDX | ReinUsesLisp | 1 | -0/+1 | |
2019-05-03 | shader_ir/memory: Implement physical input attributes | ReinUsesLisp | 1 | -0/+4 | |
2019-05-03 | shader_bytecode: Add AL2P decoding | ReinUsesLisp | 1 | -2/+15 | |
2019-04-16 | Do some corrections in conversion shader instructions. | Fernando Sahmkow | 1 | -7/+20 | |
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 | -0/+6 | |
2019-04-08 | Correct LOP_IMN encoding | Fernando Sahmkow | 1 | -1/+1 | |
2019-04-08 | Correct XMAD mode, psl and high_b on different encodings. | Fernando Sahmkow | 1 | -0/+3 | |
2019-04-08 | Move ConstBufferAccessor to Maxwell3d, correct mistakes and clang format. | Fernando Sahmkow | 1 | -1/+1 | |
2019-04-08 | Implement TXQ_B | Fernando Sahmkow | 1 | -0/+2 | |
2019-04-08 | Corrections to TEX_B | Fernando Sahmkow | 1 | -0/+32 | |
2019-04-08 | Implement Bindless Samplers and TEX_B in the IR. | Fernando Sahmkow | 1 | -0/+2 | |
2019-04-03 | shader_ir/memory: Reduce severity of LD_L cache management and log it | ReinUsesLisp | 1 | -0/+7 | |
2019-04-03 | shader_ir/memory: Reduce severity of ST_L cache management and log it | ReinUsesLisp | 1 | -1/+8 | |
2019-03-06 | video_core/engines: Remove unnecessary includes | Lioncash | 1 | -1/+0 | |
Removes a few unnecessary dependencies on core-related machinery, such as the core.h and memory.h, which reduces the amount of rebuilding necessary if those files change. This also uncovered some indirect dependencies within other source files. This also fixes those. | |||||
2019-02-26 | shader/decode: Remove extras from MetaTexture | ReinUsesLisp | 1 | -4/+4 | |
2019-02-26 | shader/decode: Split memory and texture instructions decoding | ReinUsesLisp | 1 | -8/+9 | |
2019-02-14 | shader_decompiler: Improve Accuracy of Attribute Interpolation. | Fernando Sahmkow | 1 | -3/+3 | |
2019-02-11 | Corrected F2I None mode to RoundEven. | Fernando Sahmkow | 1 | -1/+1 | |
2019-02-04 | Update src/video_core/engines/shader_bytecode.h | Mat M | 1 | -1/+1 | |
Co-Authored-By: FernandoS27 <fsahmkow27@gmail.com> | |||||
2019-02-03 | Fix TXQ not using the component mask. | Fernando Sahmkow | 1 | -0/+4 | |
2019-02-03 | shader_bytecode: Rename BytesN enums to BitsN | ReinUsesLisp | 1 | -3/+3 | |
2019-01-30 | shader_ir: Unify constant buffer offset values | ReinUsesLisp | 1 | -0/+8 | |
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/+8 | |
2019-01-15 | shader_decode: Implement VMAD and VSETP | ReinUsesLisp | 1 | -2/+3 | |
2019-01-15 | shader_decode: Implement HFMA2 | ReinUsesLisp | 1 | -0/+1 | |
2019-01-15 | shader_decode: Fixup clang-format | ReinUsesLisp | 1 | -1/+1 | |
2019-01-15 | shader_ir: Initial implementation | ReinUsesLisp | 1 | -0/+4 | |
2019-01-15 | shader_bytecode: Fixup encoding | ReinUsesLisp | 1 | -1/+1 | |
2018-12-26 | shader_bytecode: Fixup TEXS.F16 encoding | ReinUsesLisp | 1 | -1/+1 | |
2018-12-19 | Fixed uninitialized memory due to missing returns in canary | David Marcec | 1 | -0/+2 | |
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used. | |||||
2018-12-18 | shader_bytecode: Fixup half float's operator B encoding | ReinUsesLisp | 1 | -1/+1 | |
2018-12-17 | Implement postfactor multiplication/division for fmul instructions | heapo | 1 | -1/+1 | |
2018-12-05 | gl_shader_decompiler: Implement TEXS.F16 | ReinUsesLisp | 1 | -1/+2 | |
2018-11-23 | Added predicate comparison LessEqualWithNan (#1736) | Hexagon12 | 1 | -0/+1 | |
* Added predicate comparison LessEqualWithNan * oops * Clang fix | |||||
2018-11-23 | gl_shader_decompiler: Implement clip distances | ReinUsesLisp | 1 | -0/+2 | |
2018-11-22 | gl_shader_decompiler: Rename control codes to condition codes | ReinUsesLisp | 1 | -4/+3 | |
2018-11-21 | gl_shader_decompiler: Implement BFI_IMM_R | ReinUsesLisp | 1 | -0/+3 | |
2018-11-21 | gl_shader_decompiler: Implement R2P_IMM | ReinUsesLisp | 1 | -0/+14 | |
2018-10-30 | Assert Control Codes Generation | FernandoS27 | 1 | -1/+5 | |
2018-10-30 | global: Use std::optional instead of boost::optional (#1578) | Frederic L | 1 | -4/+4 | |
* get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build | |||||
2018-10-29 | Assert Control Flow Instructions using Control Codes | FernandoS27 | 1 | -1/+2 | |
2018-10-24 | Implemented LD_L and ST_L | FernandoS27 | 1 | -0/+31 | |
2018-10-23 | Implement PointSize | FernandoS27 | 1 | -0/+1 | |
2018-10-23 | gl_shader_decompiler: Implement VSETP | ReinUsesLisp | 1 | -0/+2 | |
2018-10-23 | gl_shader_decompiler: Abstract VMAD into a video subset | ReinUsesLisp | 1 | -3/+13 | |
2018-10-23 | Added Saturation to FMUL32I | FernandoS27 | 1 | -0/+4 | |
2018-10-22 | Fixed FSETP and FSET | FernandoS27 | 1 | -2/+0 | |
2018-10-18 | gl_shader_decompiler: Implement PBK and BRK | ReinUsesLisp | 1 | -3/+7 | |
2018-10-15 | shader_bytecode: Add Control Code enum 0xf | ReinUsesLisp | 1 | -1/+1 | |
Control Code 0xf means to unconditionally execute the instruction. This value is passed to most BRA, EXIT and SYNC instructions (among others) but this may not always be the case. | |||||
2018-10-15 | gl_shader_decompiler: Implement HSET2_R | ReinUsesLisp | 1 | -0/+18 | |
2018-10-15 | gl_shader_decompiler: Implement HSETP2_R | ReinUsesLisp | 1 | -0/+20 | |
2018-10-15 | gl_shader_decompiler: Implement HFMA2 instructions | ReinUsesLisp | 1 | -0/+32 | |
2018-10-15 | gl_shader_decompiler: Implement HADD2_IMM and HMUL2_IMM | ReinUsesLisp | 1 | -0/+30 | |
2018-10-15 | gl_shader_decompiler: Implement non-immediate HADD2 and HMUL2 instructions | ReinUsesLisp | 1 | -0/+25 | |
2018-10-15 | gl_shader_decompiler: Setup base for half float unpacking and setting | ReinUsesLisp | 1 | -0/+20 | |
2018-10-11 | gl_shader_decompiler: Implement VMAD | ReinUsesLisp | 1 | -0/+36 | |
2018-10-07 | gl_shader_decompiler: Implement geometry shaders | ReinUsesLisp | 1 | -0/+112 | |
2018-09-21 | shader_bytecode: Lay out the Ipa-related enums better | Lioncash | 1 | -2/+12 | |
This is more consistent with the surrounding enums. | |||||
2018-09-21 | shader_bytecode: Make operator== and operator!= of IpaMode const qualified | Lioncash | 1 | -6/+7 | |
These don't affect the state of the struct and can be const member functions. | |||||
2018-09-17 | Implemented I2I.CC on the NEU control code, used by SMO | FernandoS27 | 1 | -1/+1 | |
2018-09-17 | Implemented CSETP | FernandoS27 | 1 | -0/+11 | |
2018-09-17 | Implemented Control Codes | FernandoS27 | 1 | -0/+36 | |
2018-09-17 | Added texture misc modes to texture instructions | FernandoS27 | 1 | -1/+147 | |
2018-09-15 | Shaders: Implemented multiple-word loads and stores to and from attribute memory. | Subv | 1 | -1/+9 | |
This seems to be an optimization performed by nouveau. | |||||
2018-09-15 | Port #4182 from Citra: "Prefix all size_t with std::" | fearlessTobi | 1 | -9/+9 | |
2018-09-12 | Implemented Texture Processing Modes | FernandoS27 | 1 | -0/+10 | |
2018-09-11 | Implemented encodings for LEA and PSET | FernandoS27 | 1 | -0/+64 | |
2018-09-10 | Implemented TMML | FernandoS27 | 1 | -5/+19 | |
2018-09-09 | Implemented TXQ dimension query type, used by SMO. | FernandoS27 | 1 | -1/+16 | |
2018-09-09 | Change name of TEXQ to TXQ, in order to match NVIDIA's naming | FernandoS27 | 1 | -2/+2 | |
2018-09-06 | Implemented IPA Properly | FernandoS27 | 1 | -0/+12 | |
2018-09-01 | Removed saturate assert | David Marcec | 1 | -1/+0 | |
Unneeded as we already implement it | |||||
2018-09-01 | Removed saturate assert | David Marcec | 1 | -1/+0 | |
Saturate already implemented | |||||
2018-09-01 | Added FMUL asserts | David Marcec | 1 | -0/+5 | |
2018-09-01 | Added FFMA asserts | David Marcec | 1 | -0/+4 | |
2018-09-01 | Added assert for TEXS nodep | David Marcec | 1 | -0/+1 | |
2018-09-01 | Added better asserts to IPA, Renamed IPA modes to match mesa | David Marcec | 1 | -2/+5 | |
IpaMode is changed to IpaInterpMode IpaMode is suppose to be 2 bits not 3 Added IpaSampleMode Added Saturate Renamed modes based on https://github.com/mesa3d/mesa/blob/d27c7918916cdc8092959124955f887592e37d72/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp#L2530 | |||||
2018-08-31 | Added predicate comparison GreaterEqualWithNan | Hexagon12 | 1 | -0/+1 | |
2018-08-31 | gl_shader_decompiler: Implement POPC (#1203) | Laku | 1 | -0/+10 | |
* Implement POPC * implement invert | |||||
2018-08-29 | Shaders: Implemented IADD3 | tech4me | 1 | -1/+23 | |
2018-08-29 | gl_shader_decompiler: Improve IPA for Pass mode with Position attribute. | bunnei | 1 | -0/+6 | |
2018-08-24 | fix SEL_IMM bitstring | Laku | 1 | -1/+1 | |
2018-08-23 | Shaders: Added decodings for IADD3 instructions | tech4me | 1 | -0/+6 | |
2018-08-22 | implement lop3 | Laku | 1 | -0/+19 | |
2018-08-21 | shader_bytecode: Parenthesize conditional expression within GetTextureType() | Lioncash | 1 | -1/+1 | |
Resolves a -Wlogical-op-parentheses warning. | |||||
2018-08-21 | shader_bytecode: Replace some UNIMPLEMENTED logs. | bunnei | 1 | -2/+6 | |
2018-08-19 | Shaders/TEXS: Fixed the component mask in the TEXS instruction. | Subv | 1 | -6/+11 | |
Previously we could end up with a TEXS that didn't write any outputs, this was wrong. | |||||
2018-08-19 | Shader: Added bitfields for the texture type of the various sampling instructions. | Subv | 1 | -1/+65 | |
2018-08-19 | Shaders: Added decodings for TLD4 and TLD4S | Subv | 1 | -3/+7 | |
2018-08-19 | Shaders: Added decodings for the LDG and STG instructions. | Subv | 1 | -0/+4 | |
2018-08-19 | Shaders: Implemented the gl_FrontFacing input attribute (attr 63). | Subv | 1 | -0/+3 | |
2018-08-18 | Shader: Implemented the predicate and mode arguments of LOP. | Subv | 1 | -1/+6 | |
The mode can be used to set the predicate to true depending on the result of the logic operation. In some cases, this means discarding the result (writing it to register 0xFF (Zero)). This is used by Super Mario Odyssey. | |||||
2018-08-18 | Shaders: Corrected the 'abs' and 'neg' bit usage in the float arithmetic instructions. | Subv | 1 | -0/+4 | |
We should definitely audit our shader generator for more errors like this. | |||||
2018-08-18 | Added predcondition GreaterThanWithNan | David Marcec | 1 | -0/+1 | |
2018-08-13 | gl_shader_decompiler: Implement XMAD instruction. | bunnei | 1 | -4/+25 | |
2018-08-12 | gl_shader_decompiler: Improve handling of unknown input/output attributes. | bunnei | 1 | -2/+1 | |
2018-08-11 | GPU/Shader: Don't predicate instructions that don't have a predicate field (SSY). | Subv | 1 | -0/+7 | |
2018-08-10 | video_core: Use variable template variants of type_traits interfaces where applicable | Lioncash | 1 | -2/+1 | |
2018-08-08 | gl_shader_decompiler: Stub input attribute Unknown_63. | bunnei | 1 | -0/+2 | |
2018-08-08 | gl_shader_decompiler: Let OpenGL interpret floats. | bunnei | 1 | -9/+4 | |
- Accuracy is lost in translation to string, e.g. with NaN. - Needed for Super Mario Odyssey. | |||||
2018-07-22 | shader_bytecode: Implement other TEXS masks. | bunnei | 1 | -5/+9 | |
2018-07-22 | gl_shader_decompiler: Implement SEL instruction. | bunnei | 1 | -0/+11 | |
2018-07-21 | video_core: Use nested namespaces where applicable | Lioncash | 1 | -8/+4 | |
Compresses a few namespace specifiers to be more compact. | |||||
2018-07-13 | gl_shader_decompiler: Implement PredCondition::LessThanWithNan. | bunnei | 1 | -0/+1 | |
2018-07-13 | gl_shader_decompiler: Use FlowCondition field in EXIT instruction. | bunnei | 1 | -0/+9 | |
2018-07-12 | GPU: Implement the FADD32I shader instruction. | Subv | 1 | -0/+9 | |
2018-07-12 | GPU: Corrected the decoding of FFMA for immediate operands. | Subv | 1 | -1/+1 | |
2018-07-04 | GPU: Implemented the IMNMX shader instruction. | Subv | 1 | -3/+17 | |
It's similar to the FMNMX instruction but it works on integers. | |||||
2018-07-04 | GPU: Stub the shader SYNC and DEPBAR instructions. | Subv | 1 | -0/+5 | |
It is unknown at this moment if we actually need to do something with these instructions or if the GLSL compiler takes care of that for us. | |||||
2018-07-04 | GPU: Corrected the decoding for the TEX shader instruction. | Subv | 1 | -1/+1 | |
2018-07-04 | GPU: Implemented the PSETP shader instruction. | Subv | 1 | -0/+13 | |
It's similar to the isetp and fsetp instructions but it works on predicates instead. | |||||
2018-07-03 | GPU: Implemented MUFU suboperation 8, sqrt. | Subv | 1 | -0/+1 | |
2018-06-30 | GPU: Corrected the size of the MUFU subop field, and removed incorrect "min" operation. | Subv | 1 | -2/+1 | |
2018-06-30 | gl_shader_decompiler: Implement predicate NotEqualWithNan. | bunnei | 1 | -0/+1 | |
2018-06-20 | Build: Fixed some MSVC warnings in various parts of the code. | Subv | 1 | -2/+2 | |
2018-06-19 | GPU: Don't mark uniform buffers and registers as used for instructions which don't have them. | Subv | 1 | -2/+3 | |
Like the MOV32I and FMUL32I instructions. This fixes a potential crash when using these instructions. | |||||
2018-06-17 | gl_shader_decompiler: Implement LOP instructions. | bunnei | 1 | -0/+14 | |
2018-06-17 | gl_shader_decompiler: Refactor LOP32I instruction a bit in support of LOP. | bunnei | 1 | -3/+2 | |
2018-06-16 | gl_shader_decompiler: Implement integer size conversions for I2I/I2F/F2I. | bunnei | 1 | -1/+2 | |
2018-06-12 | GPU: Implemented the iadd32i shader instruction. | Subv | 1 | -2/+10 | |
2018-06-12 | gl_shader_decompiler: Implement saturate for float instructions. | bunnei | 1 | -2/+1 | |
2018-06-09 | GPU: Implement the iset family of shader instructions. | Subv | 1 | -0/+9 | |
2018-06-09 | GPU: Added decodings for the ISET family of instructions. | Subv | 1 | -0/+7 | |
2018-06-09 | gl_shader_decompiler: Implement SHR instruction. | bunnei | 1 | -0/+4 | |
2018-06-09 | GPU: Stub the SSY shader instruction. | Subv | 1 | -0/+2 | |
This instruction tells the GPU where the flow reconverges in a non-uniform control flow scenario, we can ignore this when generating GLSL code. | |||||
2018-06-09 | gl_shader_decompiler: Implement IADD instruction. | bunnei | 1 | -5/+11 | |
2018-06-09 | gl_shader_decompiler: Add missing asserts for saturate_a instructions. | bunnei | 1 | -1/+1 | |
2018-06-07 | gl_shader_decompiler: Implement BFE_IMM instruction. | bunnei | 1 | -3/+15 | |
2018-06-07 | gl_shader_decompiler: F2F: Implement rounding modes. | bunnei | 1 | -3/+12 | |
2018-06-07 | shader_bytecode: Add instruction decodings for BFE, IMNMX, and XMAD. | bunnei | 1 | -0/+20 | |
2018-06-07 | gl_shader_decompiler: Implement LD_C instruction. | bunnei | 1 | -0/+16 | |
2018-06-06 | gl_shader_decompiler: Refactor uniform handling to allow different decodings. | bunnei | 1 | -6/+10 | |
2018-06-05 | GPU: Corrected the branch targets for the shader bra instruction. | Subv | 1 | -4/+5 | |
2018-06-05 | GPU: Implemented the F2I_R shader instruction. | Subv | 1 | -4/+20 | |
2018-06-05 | gl_shader_decompiler: Implement SHL instruction. | bunnei | 1 | -13/+17 | |
2018-06-05 | GPU: Implement the ISCADD shader instructions. | Subv | 1 | -0/+16 | |
2018-06-05 | GPU: Added decodings for the ISCADD instructions. | Subv | 1 | -0/+7 | |
2018-06-04 | GPU: Use the bf bit in FSET to determine whether to write 0xFFFFFFFF or 1.0f. | Subv | 1 | -1/+1 | |
2018-06-04 | GPU: Implemented the LOP32I instruction. | Subv | 1 | -1/+15 | |
2018-06-04 | GPU: Implemented the ISETP_R and ISETP_C shader instructions. | Subv | 1 | -0/+10 | |
2018-06-04 | GPU: Partially implemented the shader BRA instruction. | Subv | 1 | -0/+13 | |
2018-06-04 | GPU: Added decoding for the BRA instruction. | Subv | 1 | -0/+2 | |
2018-06-03 | gl_shader_decompiler: Implement TEXS component mask. | bunnei | 1 | -2/+16 | |
2018-06-03 | gl_shader_decompiler: Implement RRO as a register move. | bunnei | 1 | -3/+7 | |
2018-06-01 | gl_shader_decompiler: Implement TEX instruction. | bunnei | 1 | -0/+10 | |
2018-06-01 | gl_shader_decompiler: Support multi-destination for TEXS. | bunnei | 1 | -0/+5 | |
2018-05-30 | Shaders: Implemented reading the gl_InstanceID and gl_VertexID variables in the vertex shader. | Subv | 1 | -0/+4 | |
2018-05-30 | gl_shader_decompiler: Partially implement F2F_R instruction. | bunnei | 1 | -3/+3 | |
2018-05-26 | shader_bytecode: Implement other variants of FMNMX. | bunnei | 1 | -3/+7 | |
2018-05-21 | Shaders: Implemented the FMNMX shader instruction. | Subv | 1 | -0/+5 | |
2018-05-19 | ShadersDecompiler: Added decoding for the PSETP instruction. | Subv | 1 | -0/+3 | |
2018-04-29 | shader_bytecode: Add decoding for FMNMX instruction. | bunnei | 1 | -0/+2 | |
2018-04-29 | gl_shader_decompiler: Partially implement I2I_R, and I2F_R. | bunnei | 1 | -8/+8 | |
2018-04-29 | shader_bytecode: Add decodings for i2i instructions. | bunnei | 1 | -3/+20 | |
2018-04-29 | gl_shader_decompiler: Implement MOV32_IMM instruction. | bunnei | 1 | -2/+2 | |
2018-04-26 | gl_shader_decompiler: Boilerplate for handling integer instructions. | bunnei | 1 | -1/+9 | |
2018-04-25 | Shaders: Added bit decodings for the I2I instruction. | Subv | 1 | -0/+6 | |
2018-04-25 | Shaders: Added decodings for the FSET instructions. | Subv | 1 | -8/+29 | |
2018-04-21 | shader_bytecode: Add several more instruction decodings. | bunnei | 1 | -5/+52 | |
2018-04-21 | shader_bytecode: Decode instructions based on bit strings. | bunnei | 1 | -185/+172 | |
2018-04-21 | ShaderGen: Implemented predicated instruction execution. | Subv | 1 | -1/+5 | |
Each predicated instruction will be wrapped in an `if (predicate) { instruction_body; }` in the GLSL, where `predicate` is one of the predicate boolean variables previously set by fsetp. | |||||
2018-04-21 | ShaderGen: Implemented the fsetp instruction. | Subv | 1 | -3/+40 | |
Predicate variables are now added to the generated shader code in the form of 'pX' where X is the predicate id. These predicate variables are initialized to false on shader startup and are set via the fsetp instructions. TODO: * Not all the comparison types are implemented. * Only the single-predicate version is implemented. | |||||
2018-04-20 | ShaderGen: Register id 255 is special and is hardcoded to return 0 (SR_ZERO). | Subv | 1 | -0/+3 | |
2018-04-19 | ShaderGen: Implemented the fmul32i shader instruction. | Subv | 1 | -3/+14 | |
2018-04-18 | shader_bytecode: Make ctor's constexpr and explicit. | bunnei | 1 | -7/+7 | |
2018-04-17 | gl_shader_decompiler: Implement FMUL/FADD/FFMA immediate instructions. | bunnei | 1 | -0/+14 | |
2018-04-17 | gl_shader_decompiler: Add support for TEXS instruction. | bunnei | 1 | -5/+14 | |
2018-04-15 | shaders: Add NumTextureSamplers const, remove unused #pragma. | bunnei | 1 | -2/+0 | |
2018-04-14 | shaders: Address PR review feedback. | bunnei | 1 | -1/+1 | |
2018-04-14 | shaders: Fix GCC and clang build issues. | bunnei | 1 | -3/+3 | |
2018-04-14 | gl_shader_decompiler: Implement negate, abs, etc. and lots of cleanup. | bunnei | 1 | -20/+39 | |
2018-04-14 | shader_bytecode: Add FSETP and KIL to GetInfo. | bunnei | 1 | -0/+3 | |
2018-04-14 | shader_bytecode: Add SubOp decoding. | bunnei | 1 | -0/+10 | |
2018-04-14 | shader_bytecode: Add initial module for shader decoding. | bunnei | 1 | -0/+297 | |