aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/node.h
AgeCommit message (Collapse)Author
2019-12-16shader/texture: Implement TLD4.PTPReinUsesLisp
2019-12-10shader: Implement MEMBAR.GLReinUsesLisp
Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V.
2019-12-09shader_ir/other: Implement S2R InvocationIdReinUsesLisp
2019-12-09shader_ir/memory: Implement patch storesReinUsesLisp
2019-12-06Merge pull request #3109 from FernandoS27/new-instrbunnei
Implement FLO & TXD Instructions on GPU Shaders
2019-11-22shader/texture: Deduce texture buffers from lockerReinUsesLisp
Instead of specializing shaders to separate texture buffers from 1D textures, use the locker to deduce them while they are being decoded.
2019-11-14Shader_IR: Implement TXD instruction.Fernando Sahmkow
2019-11-14Shader_IR: Implement FLO instruction.Fernando Sahmkow
2019-11-07shader_ir/warp: Implement FSWZADDReinUsesLisp
2019-11-07gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsicsReinUsesLisp
2019-10-29shader/node: Unpack bindless texture encodingReinUsesLisp
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-15shader/node: std::move Meta instance within OperationNode constructorLioncash
Allows usages of the constructor to avoid an unnecessary copy.
2019-09-21gl_shader_decompiler: Use uint for images and fix SUATOMReinUsesLisp
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-21shader/image: Implement SULD and remove irrelevant codeReinUsesLisp
* Implement SULD as float. * Remove conditional declaration of GL_ARB_shader_viewport_layer_array.
2019-09-20Merge pull request #2855 from ReinUsesLisp/shflbunnei
shader_ir/warp: Implement SHFL for Nvidia devices
2019-09-18Merge pull request #2784 from ReinUsesLisp/smembunnei
shader_ir: Implement shared memory
2019-09-17shader_ir/warp: Implement SHFLReinUsesLisp
2019-09-10shader/image: Implement SUATOM and fix SUSTReinUsesLisp
2019-09-05gl_shader_decompiler: Keep track of written images and mark them as modifiedReinUsesLisp
2019-09-05kepler_compute: Implement texture queriesReinUsesLisp
2019-09-05shader_ir: Implement ST_SReinUsesLisp
This instruction writes to a memory buffer shared with threads within the same work group. It is known as "shared" memory in GLSL.
2019-08-21shader_ir: Implement VOTEReinUsesLisp
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-07-20Shader_Ir: Implement F16 Variants of F2F, F2I, I2F.Fernando Sahmkow
This commit takes care of implementing the F16 Variants of the conversion instructions and makes sure conversions are done.
2019-07-19shader/half_set_predicate: Fix HSETP2 implementationReinUsesLisp
2019-07-09shader_ir: Unify blocks in decompiled shaders.Fernando Sahmkow
2019-07-09shader_ir: Implement BRX & BRA.CCFernando Sahmkow
2019-06-20texture_cache: Style and CorrectionsFernando Sahmkow
2019-06-20shader: Implement bindless imagesReinUsesLisp
2019-06-20shader: Decode SUST and implement backing image functionalityReinUsesLisp
2019-06-07shader: Split SSY and PBK stackReinUsesLisp
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-06shader/node: Minor changesReinUsesLisp
Reflect std::shared_ptr nature of Node on initializers and remove constant members in nodes. Add some commentaries.
2019-06-06shader: Move Node declarations out of the shader IR headerReinUsesLisp
Analysis passes do not have a good reason to depend on shader_ir.h to work on top of nodes. This splits node-related declarations to their own file and leaves the IR in shader_ir.h