yuzu/src/common
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
..
logging general: Use deducation guides for std::lock_guard and std::unique_lock 2019-04-01 12:53:47 -04:00
x64 common: Remove dependency on xbyak 2018-11-21 03:43:41 -05:00
alignment.h Common/Alignment: Add noexcept where required. 2019-07-19 21:49:54 -04:00
assert.h Permit a Null Shader in case of a bad host_ptr. 2019-04-07 07:52:01 -04:00
binary_find.h texture_cache: Address Feedback 2019-07-05 09:46:53 -04:00
bit_field.h common/bit_util: Fix bad merge duplicating the copy constructor 2019-03-20 23:48:37 -04:00
bit_util.h texture_cache: Optimize GetMipBlockHeight and GetMipBlockDepth 2019-06-20 21:36:12 -03:00
cityhash.cpp
cityhash.h
CMakeLists.txt shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
color.h common/vector_math: Move Vec[x] types into the Common namespace 2019-02-26 22:38:36 -05:00
common_funcs.h texture_cache: Address Feedback 2019-07-05 09:46:53 -04:00
common_paths.h file_util: Add shader directory 2019-02-06 22:20:57 -03:00
common_types.h gpu: Move GPUVAddr definition to common_types. 2019-03-20 22:36:02 -04:00
detached_tasks.cpp general: Use deducation guides for std::lock_guard and std::unique_lock 2019-04-01 12:53:47 -04:00
detached_tasks.h
file_util.cpp common/file_util: Remove unnecessary return at end of void StripTailDirSlashes() 2019-05-23 14:33:29 -04:00
file_util.h common/file_util: Make GetCurrentDir() return a std::optional 2019-05-23 14:24:13 -04:00
hash.h
hex_util.cpp common/hex_util: Combine HexVectorToString() and HexArrayToString() 2019-06-12 17:54:05 -04:00
hex_util.h common/hex_util: Reserve std::string memory ahead of time 2019-06-12 17:54:11 -04:00
lz4_compression.cpp common/lz4_compression: Remove #pragma once directive from the cpp file 2019-04-03 22:07:04 -04:00
lz4_compression.h common/{lz4_compression, zstd_compression}: Add missing header guards 2019-04-15 13:00:08 -04:00
math_util.h common/math_util: Provide a template deduction guide for Common::Rectangle 2019-05-31 04:44:02 -03:00
memory_hook.cpp core: Move PageTable struct into Common. 2019-03-16 22:05:40 -04:00
memory_hook.h core: Move PageTable struct into Common. 2019-03-16 22:05:40 -04:00
microprofile.cpp
microprofile.h
microprofileui.h
misc.cpp
multi_level_queue.h common/multi_level_queue: Silence truncation warning in iterator operator++ 2019-04-05 15:35:46 -04:00
page_table.cpp gpu: Rewrite virtual memory manager using PageTable. 2019-03-20 22:36:02 -04:00
page_table.h gpu: Rewrite virtual memory manager using PageTable. 2019-03-20 22:36:02 -04:00
param_package.cpp
param_package.h
quaternion.h common/vector_math: Move Vec[x] types into the Common namespace 2019-02-26 22:38:36 -05:00
ring_buffer.h
scm_rev.cpp.in gl_shader_disk_cache: Invalidate shader cache changes with CMake hash 2019-02-06 22:20:57 -03:00
scm_rev.h gl_shader_disk_cache: Invalidate shader cache changes with CMake hash 2019-02-06 22:20:57 -03:00
scope_exit.h common/scope_exit: Replace std::move with std::forward in ScopeExit() 2019-04-11 20:01:33 -04:00
string_util.cpp am: Deglobalize software keyboard applet 2018-11-18 10:53:47 -05:00
string_util.h am: Deglobalize software keyboard applet 2018-11-18 10:53:47 -05:00
swap.h common/swap: Improve codegen of the default swap fallbacks 2019-04-12 00:07:39 -04:00
telemetry.cpp
telemetry.h
thread_queue_list.h common/thread_queue_list: Remove unnecessary dependency on boost 2019-03-16 05:01:39 -04:00
thread.cpp common/thread: Remove unused functions 2019-03-29 13:26:21 -04:00
thread.h general: Use deducation guides for std::lock_guard and std::unique_lock 2019-04-01 12:53:47 -04:00
threadsafe_queue.h general: Use deducation guides for std::lock_guard and std::unique_lock 2019-04-01 12:53:47 -04:00
timer.cpp
timer.h
uint128.cpp common/uint128: Add missing top-file source text 2019-03-20 22:38:25 -04:00
uint128.h common/uint128: Add missing header guard 2019-03-20 22:39:00 -04:00
uuid.cpp mii_manager: Cleanup and optimization 2019-04-25 08:07:57 -04:00
uuid.h mii: Implement Delete and Destroy file 2019-04-25 08:07:57 -04:00
vector_math.h common/vector_math: Move Vec[x] types into the Common namespace 2019-02-26 22:38:36 -05:00
web_result.h
zstd_compression.cpp common/zstd_compression: Remove #pragma once directive from source file 2019-05-04 01:54:29 -04:00
zstd_compression.h common/{lz4_compression, zstd_compression}: Add missing header guards 2019-04-15 13:00:08 -04:00