yuzu/src/video_core
ReinUsesLisp 4e35177e23 shader_ir: Implement VOTE
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-21 14:50:38 -03:00
..
debug_utils
engines shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
renderer_opengl shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
renderer_vulkan shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
shader shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
texture_cache Merge pull request #2739 from lioncash/cflow 2019-07-25 13:04:56 -04:00
textures texture_cache: Style and Corrections 2019-06-20 21:24:47 -04:00
buffer_cache.h buffer_cache: Avoid [[nodiscard]] to make clang-format happy 2019-07-06 01:17:05 -03:00
CMakeLists.txt shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
dma_pusher.cpp GPU: Flush commands on every dma pusher step. 2019-07-26 16:54:22 -04:00
dma_pusher.h
gpu_asynch.cpp GPU: Correct Interrupts to interrupt on syncpt/value instead of event, mirroring hardware 2019-07-05 15:49:26 -04:00
gpu_asynch.h NVServices: Styling, define constructors as explicit and corrections 2019-07-05 15:49:32 -04:00
gpu_synch.cpp nv_host_ctrl: Make Sync GPU variant always return synced result. 2019-07-05 15:49:20 -04:00
gpu_synch.h NVServices: Styling, define constructors as explicit and corrections 2019-07-05 15:49:32 -04:00
gpu_thread.cpp NVFlinger: Correct GCC compile error 2019-07-05 15:49:31 -04:00
gpu_thread.h gpu_asynch: Simplify synchronization to a simpler consumer->producer scheme. 2019-07-05 15:49:20 -04:00
gpu.cpp GPU: Flush commands on every dma pusher step. 2019-07-26 16:54:22 -04:00
gpu.h GPU: Flush commands on every dma pusher step. 2019-07-26 16:54:22 -04:00
macro_interpreter.cpp GPU: Add a microprofile for macro interpreter 2019-07-14 12:00:30 -04:00
macro_interpreter.h
memory_manager.cpp prefer system reference over global accessor 2019-07-09 08:11:35 -07:00
memory_manager.h prefer system reference over global accessor 2019-07-09 08:11:35 -07:00
morton.cpp
morton.h
rasterizer_cache.cpp
rasterizer_cache.h rasterizer_cache: Protect inherited caches from submission level 2019-07-01 04:32:01 -04:00
rasterizer_interface.h GPU: Flush commands on every dma pusher step. 2019-07-26 16:54:22 -04:00
renderer_base.cpp
renderer_base.h
sampler_cache.cpp
sampler_cache.h
surface.cpp surface: Correct format S8Z24 2019-06-20 21:38:34 -03:00
surface.h texture_cache: Style changes 2019-06-29 19:52:37 -03:00
video_core.cpp
video_core.h