aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/decode
AgeCommit message (Collapse)Author
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
2019-08-27float_set_predicate: Add missing negation bit for the second operandReinUsesLisp
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-08-21Merge pull request #2777 from ReinUsesLisp/hsetp2-fe3h-fixbunnei
half_set_predicate: Fix HSETP2_C constant buffer offset
2019-08-21Merge pull request #2753 from FernandoS27/float-convertbunnei
Shader_Ir: Implement F16 Variants of F2F, F2I, I2F.
2019-08-18Merge pull request #2778 from ReinUsesLisp/nopbunnei
shader_ir: Implement NOP
2019-08-04shader_ir: Implement NOPReinUsesLisp
2019-08-04half_set_predicate: Fix HSETP2_C constant buffer offsetReinUsesLisp
2019-07-26decode/half_set_predicate: Fix predicatesReinUsesLisp
2019-07-25Merge pull request #2743 from FernandoS27/surpress-assertbunnei
Downgrade and suppress a series of GPU asserts and debug messages.
2019-07-22shader/decode: Implement S2R TicReinUsesLisp
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_Ir: Change Debug Asserts for Log WarningsFernando Sahmkow
2019-07-19shader/half_set_predicate: Fix HSETP2 implementationReinUsesLisp