aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader
AgeCommit message (Collapse)Author
2019-09-23Merge pull request #2869 from ReinUsesLisp/suldbunnei
shader/image: Implement SULD and fix SUATOM
2019-09-22Merge pull request #2870 from FernandoS27/multi-drawDavid
Implement a MME Draw commands Inliner and correct host instance drawing
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-19VideoCore: Corrections to the MME Inliner and removal of hacky instance ↵Fernando Sahmkow
management.
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-05kepler_compute: Implement texture queriesReinUsesLisp
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 #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.