1
0
Fork 0
forked from suyu/suyu
suyu/src
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
..
audio_core Clang format 2019-07-13 01:49:32 +10:00
common shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
core Merge pull request #2748 from FernandoS27/align-memory 2019-08-21 12:10:10 -04:00
input_common input_common/sdl/sdl_impl: Correct logging string in SDLState constructor 2019-06-03 16:56:47 -04:00
tests Merge pull request #2583 from FernandoS27/core-timing-safe 2019-06-30 12:54:00 -04:00
video_core shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
web_service general: Use deducation guides for std::lock_guard and std::unique_lock 2019-04-01 12:53:47 -04:00
yuzu Fixup! #2772 missed this one file 2019-08-16 21:24:17 -06:00
yuzu_cmd yuzu: Remove setting for using Unicorn 2019-07-11 05:59:13 -04:00
yuzu_tester yuzu-tester/yuzu: Correct format string 2019-07-29 20:55:48 -04:00
.clang-format
CMakeLists.txt yuzu_tester: Add project subdirectory 2019-06-10 00:03:11 -04:00