3
0
Fork 0
forked from suyu/suyu
suyu/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 general: Use deducation guides for std::lock_guard and std::unique_lock 2019-04-01 12:53:47 -04:00
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: Rewrite virtual memory manager using PageTable. 2019-03-20 22:36:02 -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
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
macro_interpreter.cpp GPU: Add a microprofile for macro interpreter 2019-07-14 12:00:30 -04:00
macro_interpreter.h macro_interpreter: Implement AddWithCarry and SubtractWithBorrow. 2018-11-22 00:58:00 -05:00
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 video_core: Refactor to use MemoryManager interface for all memory access. 2019-03-16 00:38:48 -04:00
morton.h video_core: Refactor to use MemoryManager interface for all memory access. 2019-03-16 00:38:48 -04:00
rasterizer_cache.cpp rasterizer_cache: Add missing virtual destructor to RasterizerCacheObject 2018-11-08 00:31:39 -05:00
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 video_core/engines: Remove unnecessary includes 2019-03-05 20:35:32 -05:00
renderer_base.h yuzu, video_core: Screenshot functionality 2018-12-18 22:54:41 +01:00
sampler_cache.cpp video_core: Abstract vk_sampler_cache into a templated class 2019-04-02 15:54:11 -03:00
sampler_cache.h video_core: Abstract vk_sampler_cache into a templated class 2019-04-02 15:54:11 -03:00
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/gpu: Create threads separately from initialization 2019-04-11 22:11:40 -04:00
video_core.h video_core/gpu: Create threads separately from initialization 2019-04-11 22:11:40 -04:00