yuzu/src/video_core/renderer_opengl
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
..
gl_buffer_cache.cpp gl_buffer_cache: Implement with generic buffer cache 2019-07-06 00:37:55 -03:00
gl_buffer_cache.h gl_rasterizer: Fix nullptr dereference on disabled buffers 2019-07-06 00:37:56 -03:00
gl_device.cpp shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
gl_device.h shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
gl_framebuffer_cache.cpp texture_cache: Fermi2D reform and implement View Mirage 2019-06-20 21:38:33 -03:00
gl_framebuffer_cache.h gl_framebuffer_cache: Use a hashed struct to cache framebuffers 2019-06-20 21:36:12 -03:00
gl_rasterizer.cpp GPU: Flush commands on every dma pusher step. 2019-07-26 16:54:22 -04:00
gl_rasterizer.h GPU: Flush commands on every dma pusher step. 2019-07-26 16:54:22 -04:00
gl_resource_manager.cpp gl_texture_cache: Correct asserts 2019-06-25 19:26:59 -04:00
gl_resource_manager.h gl_resource_manager: Correct MakeStreamCopy 2019-06-25 17:32:04 -04:00
gl_sampler_cache.cpp gl_sampler_cache: Port sampler cache to OpenGL 2019-04-02 16:58:08 -03:00
gl_sampler_cache.h video_core: Add missing override specifiers 2019-07-07 13:38:39 -04:00
gl_shader_cache.cpp shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
gl_shader_cache.h gl_shader_cache: Fix clang-format issues 2019-07-15 20:33:51 -03:00
gl_shader_decompiler.cpp shader_ir: Implement VOTE 2019-08-21 14:50:38 -03:00
gl_shader_decompiler.h gl_rasterizer: Implement compute shaders 2019-07-15 17:38:25 -03:00
gl_shader_disk_cache.cpp gl_rasterizer: Implement compute shaders 2019-07-15 17:38:25 -03:00
gl_shader_disk_cache.h gl_rasterizer: Implement compute shaders 2019-07-15 17:38:25 -03:00
gl_shader_gen.cpp gl_shader_cache: Address CI issues 2019-07-15 17:38:25 -03:00
gl_shader_gen.h gl_rasterizer: Implement compute shaders 2019-07-15 17:38:25 -03:00
gl_shader_manager.cpp gl_rasterizer: Move alpha testing to the OpenGL pipeline 2019-05-30 13:21:01 -03:00
gl_shader_manager.h gl_rasterizer: Move alpha testing to the OpenGL pipeline 2019-05-30 13:21:01 -03:00
gl_shader_util.cpp gl_shader_cache: Address review commentaries 2019-07-15 17:38:25 -03:00
gl_shader_util.h gl_shader_util: Add parameter to handle retrievable programs 2019-02-06 22:20:57 -03:00
gl_state.cpp Maxwell3D: Address Feedback 2019-07-17 17:29:55 -04:00
gl_state.h GL_State: Feedback and fixes 2019-07-17 17:29:56 -04:00
gl_stream_buffer.cpp video_core: Make ARB_buffer_storage a required extension 2019-06-20 21:36:12 -03:00
gl_stream_buffer.h video_core: Make ARB_buffer_storage a required extension 2019-06-20 21:36:12 -03:00
gl_texture_cache.cpp Merge pull request #2743 from FernandoS27/surpress-assert 2019-07-25 12:34:36 -04:00
gl_texture_cache.h texture_cache: Address Feedback 2019-07-05 09:46:53 -04:00
maxwell_to_gl.h maxwell_to_gl: Use GL_CLAMP to emulate Clamp wrap mode 2019-05-30 13:21:01 -03:00
renderer_opengl.cpp GL_State: Feedback and fixes 2019-07-17 17:29:56 -04:00
renderer_opengl.h gl_shader_cache: Use shared contexts to build shaders in parallel 2019-05-20 22:45:55 -03:00
utils.cpp gl_rasterizer: Fix vertex and index data invalidations 2019-07-06 00:37:55 -03:00
utils.h gl_rasterizer: Fix vertex and index data invalidations 2019-07-06 00:37:55 -03:00