You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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.
7 years ago
..
logging general: Use deducation guides for std::lock_guard and std::unique_lock 7 years ago
x64 common: Remove dependency on xbyak 8 years ago
CMakeLists.txt shader_ir: Implement VOTE 7 years ago
alignment.h Common/Alignment: Add noexcept where required. 7 years ago
assert.h Permit a Null Shader in case of a bad host_ptr. 7 years ago
binary_find.h texture_cache: Address Feedback 7 years ago
bit_field.h common/bit_util: Fix bad merge duplicating the copy constructor 8 years ago
bit_util.h texture_cache: Optimize GetMipBlockHeight and GetMipBlockDepth 7 years ago
cityhash.cpp Port #4182 from Citra: "Prefix all size_t with std::" 8 years ago
cityhash.h Port #4182 from Citra: "Prefix all size_t with std::" 8 years ago
color.h common/vector_math: Move Vec[x] types into the Common namespace 8 years ago
common_funcs.h texture_cache: Address Feedback 7 years ago
common_paths.h file_util: Add shader directory 8 years ago
common_types.h gpu: Move GPUVAddr definition to common_types. 8 years ago
detached_tasks.cpp general: Use deducation guides for std::lock_guard and std::unique_lock 7 years ago
detached_tasks.h Review comments - part 5 8 years ago
file_util.cpp common/file_util: Remove unnecessary return at end of void StripTailDirSlashes() 7 years ago
file_util.h common/file_util: Make GetCurrentDir() return a std::optional 7 years ago
hash.h Port #4182 from Citra: "Prefix all size_t with std::" 8 years ago
hex_util.cpp common/hex_util: Combine HexVectorToString() and HexArrayToString() 7 years ago
hex_util.h common/hex_util: Reserve std::string memory ahead of time 7 years ago
lz4_compression.cpp common/lz4_compression: Remove #pragma once directive from the cpp file 7 years ago
lz4_compression.h common/{lz4_compression, zstd_compression}: Add missing header guards 7 years ago
math_util.h common/math_util: Provide a template deduction guide for Common::Rectangle 7 years ago
memory_hook.cpp core: Move PageTable struct into Common. 8 years ago
memory_hook.h core: Move PageTable struct into Common. 8 years ago
microprofile.cpp
microprofile.h
microprofileui.h
misc.cpp Port #4182 from Citra: "Prefix all size_t with std::" 8 years ago
multi_level_queue.h common/multi_level_queue: Silence truncation warning in iterator operator++ 7 years ago
page_table.cpp gpu: Rewrite virtual memory manager using PageTable. 8 years ago
page_table.h gpu: Rewrite virtual memory manager using PageTable. 8 years ago
param_package.cpp citra_qt/configuration: misc input tab improvements 8 years ago
param_package.h citra_qt/configuration: misc input tab improvements 8 years ago
quaternion.h common/vector_math: Move Vec[x] types into the Common namespace 8 years ago
ring_buffer.h ring_buffer: Use std::atomic_size_t in a static assert 8 years ago
scm_rev.cpp.in gl_shader_disk_cache: Invalidate shader cache changes with CMake hash 8 years ago
scm_rev.h gl_shader_disk_cache: Invalidate shader cache changes with CMake hash 8 years ago
scope_exit.h common/scope_exit: Replace std::move with std::forward in ScopeExit() 7 years ago
string_util.cpp am: Deglobalize software keyboard applet 8 years ago
string_util.h am: Deglobalize software keyboard applet 8 years ago
swap.h common/swap: Improve codegen of the default swap fallbacks 7 years ago
telemetry.cpp common/telemetry: Migrate core-independent info gathering to common 8 years ago
telemetry.h compatdb: Use a seperate endpoint for testcase submission 8 years ago
thread.cpp common/thread: Remove unused functions 7 years ago
thread.h general: Use deducation guides for std::lock_guard and std::unique_lock 7 years ago
thread_queue_list.h common/thread_queue_list: Remove unnecessary dependency on boost 8 years ago
threadsafe_queue.h general: Use deducation guides for std::lock_guard and std::unique_lock 7 years ago
timer.cpp Port #3972 from Citra: "common/timer: use std::chrono, avoid platform-dependent code" 8 years ago
timer.h Port #3972 from Citra: "common/timer: use std::chrono, avoid platform-dependent code" 8 years ago
uint128.cpp common/uint128: Add missing top-file source text 8 years ago
uint128.h common/uint128: Add missing header guard 8 years ago
uuid.cpp mii_manager: Cleanup and optimization 7 years ago
uuid.h mii: Implement Delete and Destroy file 7 years ago
vector_math.h common/vector_math: Move Vec[x] types into the Common namespace 8 years ago
web_result.h web_backend: Make Client use the PImpl idiom 8 years ago
zstd_compression.cpp common/zstd_compression: Remove #pragma once directive from source file 7 years ago
zstd_compression.h common/{lz4_compression, zstd_compression}: Add missing header guards 7 years ago