aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/decode
AgeCommit message (Collapse)Author
2019-12-09shader_ir/other: Implement S2R InvocationIdReinUsesLisp
2019-12-09shader: Keep track of shaders using warp instructionsReinUsesLisp
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: Handle TLDS texture type mismatchesReinUsesLisp
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-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-19shader/other: Reduce DEPBAR log severityReinUsesLisp
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-18Shader_IR: Address FeedbackFernando Sahmkow
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-11-07shader/decode: Reduce severity of arithmetic rounding warningsReinUsesLisp
2019-11-07shader/arithmetic: Reduce RRO stub severityReinUsesLisp
2019-11-07shader/texture: Remove NODEP warningsReinUsesLisp
These warnings don't offer meaningful information while decoding shaders. Remove them.
2019-11-06Merge pull request #3039 from ReinUsesLisp/cleanup-samplersRodrigo Locatti
shader/node: Unpack bindless texture encoding
2019-10-30Shader_IR: Fix regression on TLD4Fernando Sahmkow
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-30Shader_IR: Fix TLD4 and add Bindless Variant.Fernando Sahmkow
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-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-26Merge pull request #2976 from FernandoS27/cache-fast-brx-rebasedRodrigo Locatti
Implement Fast BRX, fix TXQ and addapt the Shader Cache for it
2019-10-26Shader_IR: Address Feedback.Fernando Sahmkow
2019-10-25Merge pull request #3013 from FernandoS27/tld4s-fixRodrigo Locatti
Shader_Ir: Fix TLD4S from using a component mask.
2019-10-25Shader_IR: allow lookup of texture samplers within the shader_ir for ↵Fernando Sahmkow
instructions that don't provide it
2019-10-23video_core/shader: Resolve instances of variable shadowingLioncash
Silences a few -Wshadow warnings.
2019-10-22Shader_Ir: Fix TLD4S from using a component mask.Fernando Sahmkow
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-22shader_ir/memory: Ignore global memory when tracking failsReinUsesLisp
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-07shader/half_set_predicate: Fix HSETP2 for constant buffersReinUsesLisp
HSETP2 when used with a constant buffer parses the second operand type as F32. This is not configurable.
2019-10-07shader/half_set_predicate: Reduce DEBUG_ASSERT to LOG_DEBUGReinUsesLisp
2019-09-23Merge pull request #2869 from ReinUsesLisp/suldbunnei
shader/image: Implement SULD and fix SUATOM
2019-09-21Merge pull request #2878 from FernandoS27/icmpRodrigo Locatti
shader_ir: Implement ICMP
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-21Shader_IR: ICMP corrections and fixesFernando Sahmkow
2019-09-20Merge pull request #2855 from ReinUsesLisp/shflbunnei
shader_ir/warp: Implement SHFL for Nvidia devices
2019-09-19Shader_IR: Implement ICMP.Fernando Sahmkow
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-10Merge pull request #2823 from ReinUsesLisp/shr-clampbunnei
shader/shift: Implement SHR wrapped and clamped variants
2019-09-05gl_shader_decompiler: Keep track of written images and mark them as modifiedReinUsesLisp
2019-09-05shader_ir: Implement LD_SReinUsesLisp
Loads from shared memory.
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-09-04shader/shift: Implement SHR wrapped and clamped variantsReinUsesLisp
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-04half_set_predicate: Fix predicate assignmentsReinUsesLisp
2019-09-03Merge pull request #2812 from ReinUsesLisp/f2i-selectorbunnei
shader_ir/conversion: Implement F2I and F2F F16 selector
2019-09-03Merge pull request #2811 from ReinUsesLisp/fsetp-fixbunnei
float_set_predicate: Add missing negation bit for the second operand
2019-08-30video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti
* 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-29Merge pull request #2758 from ReinUsesLisp/packed-tidbunnei
shader/decode: Implement S2R Tic
2019-08-28shader_ir/conversion: Split int and float selector and implement F2F H1ReinUsesLisp
2019-08-27shader_ir/conversion: Implement F2I F16 Ra.H1ReinUsesLisp