aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader
AgeCommit message (Collapse)Author
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 #2739 from lioncash/cflowbunnei
video_core/control_flow: Minor changes/warning cleanup
2019-07-25Merge pull request #2737 from FernandoS27/track-fixbunnei
Shader_Ir: Correct tracking to track from right to left
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
2019-07-19shader/half_set_predicate: Implement missing HSETP2 variantsReinUsesLisp
2019-07-18video_core/control_flow: Provide operator!= for types with operator==Lioncash
Provides operational symmetry for the respective structures.
2019-07-18video_core/control_flow: Prevent sign conversion in TryGetBlock()Lioncash
The return value is a u32, not an s32, so this would result in an implicit signedness conversion.
2019-07-18video_core/control_flow: Remove unnecessary BlockStack copy constructorLioncash
This is the default behavior of the copy constructor, so it doesn't need to be specified. While we're at it we can make the other non-default constructor explicit.
2019-07-18video_core/control_flow: Use std::move where applicableLioncash
Results in less work being done where avoidable.
2019-07-18video_core/control_flow: Use the prefix variant of operator++ for iteratorsLioncash
Same thing, but potentially allows a standard library implementation to pick a more efficient codepath.
2019-07-18video_core/control_flow: Use empty() member function for checking emptinessLioncash
It's what it's there for.
2019-07-18video_core: Resolve -Wreorder warningsLioncash
Ensures that the constructor members are always initialized in the order that they're declared in.
2019-07-18video_core/control_flow: Make program_size for ScanFlow() a std::size_tLioncash
Prevents a truncation warning from occurring with MSVC. Also the internal data structures already treat it as a size_t, so this is just a discrepancy in the interface.
2019-07-18video_core/control_flow: Place all internally linked types/functions within ↵Lioncash
an anonymous namespace Previously, quite a few functions were being linked with external linkage.
2019-07-18video_core/shader/decode: Prevent sign-conversion warningsLioncash
Makes it explicit that the conversions here are intentional.
2019-07-18Merge pull request #2738 from lioncash/shader-irbunnei
shader-ir: Minor cleanup-related changes
2019-07-18Shader_Ir: correct clang formatFernando Sahmkow
2019-07-18Shader_Ir: Downgrade precision and rounding asserts to debug asserts.Fernando Sahmkow
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-17Merge pull request #2740 from lioncash/braFernando Sahmkow
shader/decode/other: Correct branch indirect argument within BRA handling
2019-07-16shader_ir: std::move Node instance where applicableLioncash
These are std::shared_ptr instances underneath the hood, which means copying them isn't as cheap as a regular pointer. Particularly so on weakly-ordered systems. This avoids atomic reference count increments and decrements where they aren't necessary for the core set of operations.
2019-07-16shader_ir: Rename Get/SetTemporal to Get/SetTemporaryLioncash
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-16shader_ir: Remove unused includesLioncash
Removes unnecessary header dependencies.
2019-07-16Shader_Ir: Correct tracking to track from right to leftFernando Sahmkow
2019-07-16Merge pull request #2565 from ReinUsesLisp/track-indirectFernando Sahmkow
shader/track: Track indirect buffers
2019-07-16shader/decode/other: Correct branch indirect argument within BRA handlingLioncash
This appears to have been a copy/paste error introduced within 8a6fc529a968e007f01464abadd32f9b5eb0a26c
2019-07-15Merge pull request #2695 from ReinUsesLisp/layer-viewportFernando Sahmkow
gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders
2019-07-14shader: Allow tracking of indirect buffers without variable offsetReinUsesLisp
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-14Merge pull request #2692 from ReinUsesLisp/tlds-f16Fernando Sahmkow
shader/texture: Add F16 support for TLDS
2019-07-09shader_ir: Add comments on missing instruction.Fernando Sahmkow
Also shows Nvidia's address space on comments.
2019-07-09shader_ir: limit explorastion to best known program size.Fernando Sahmkow
2019-07-09control_flow: Correct block breaking algorithm.Fernando Sahmkow
2019-07-09control_flow: Assert shaders bigger than limit.Fernando Sahmkow
2019-07-09control_flow: Address feedback.Fernando Sahmkow
2019-07-09shader_ir: Correct parsing of scheduling instructions and correct sizingFernando Sahmkow
2019-07-09shader_ir: Correct max sizingFernando Sahmkow
2019-07-09shader_ir: Remove unnecessary constructors and use optional for ScanFlow resultFernando Sahmkow
2019-07-09shader_ir: Corrections, documenting and asserting control_flowFernando Sahmkow
2019-07-09shader_ir: Unify blocks in decompiled shaders.Fernando Sahmkow
2019-07-09shader_ir: Decompile Flow StackFernando Sahmkow