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
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_funcs.h texture_cache: Address Feedback 2019-07-05 09:46:53 -04:00
common_paths.h
common_types.h
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
memory_hook.h
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
page_table.h
param_package.cpp
param_package.h
quaternion.h
ring_buffer.h
scm_rev.cpp.in
scm_rev.h
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
string_util.h
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
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
uint128.h
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
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