rpcsx/rpcs3/Emu/RSX
linkmauve cfd5cf6bdb Optimise primitive_restart::upload_untouched() (#6881)
* rsx: Optimise primitive_restart::upload_untouched() with SSE4.1

This optimisation is only applied when skip_restart is false.

I’ve only tested the u16 codepath, as it is the one used in NieR.

In some very unscientific profiling, this function used to take 2.76% of
the total frame time at the save point of the port town, it now takes
about 0.40%.

* rsx: Mark all SSE4.1 functions with attributes on gcc and clang

This assures the compiler we will take care of only calling these
functions after having checked that the CPU does support these
instructions.

* rsx: Add an AVX2 implementation of primitive restart ibo upload

* rsx: Remove redefinition of SSE4.1 instructions

Now that clang is aware that our functions are compiled with SSE4.1, it
lets us generate this code using its intrinsics.

* rsx: Optimise vector to scalar conversion

This is done using minpos and srli intrinsics and generate less code
than before.

Thanks Nekotekina for the suggestion!
2019-10-30 16:42:44 +03:00
..
Capture Fix cellGcm HLE regression 2019-10-22 13:45:09 +03:00
Common Optimise primitive_restart::upload_untouched() (#6881) 2019-10-30 16:42:44 +03:00
GL vk: Add checks for alphaToOne support 2019-10-30 01:06:28 +03:00
Null rsx: Apply Clang-Tidy fix "modernize-use-override" 2019-06-12 15:11:52 +03:00
Overlays cellOskDialog: use g_fxo 2019-09-26 23:26:36 +03:00
VK vk: Add checks for alphaToOne support 2019-10-30 01:06:28 +03:00
CgBinaryFragmentProgram.cpp Tidy endianness support (se_t) implementation 2019-09-28 15:39:50 +03:00
CgBinaryProgram.h Tidy endianness support (se_t) implementation 2019-09-28 15:39:50 +03:00
CgBinaryVertexProgram.cpp Remove unnecessary header includes 2019-06-25 17:11:10 +03:00
GCM.h Implement waitable atomics 2019-07-29 03:04:55 +03:00
gcm_enums.cpp rsx: Enable primitive restart index only when needed (#6889) 2019-10-28 23:16:27 +03:00
gcm_enums.h rsx: Enable primitive restart index only when needed (#6889) 2019-10-28 23:16:27 +03:00
gcm_printing.cpp Minor fixes 2019-07-01 04:33:23 +03:00
gcm_printing.h rsx: Apply Clang-Tidy fix "readability-avoid-const-params-in-decls" 2019-06-12 15:11:52 +03:00
GSRender.cpp rsx: Refactoring and improvement 2019-09-19 23:10:09 +03:00
GSRender.h Fix misleading indent. 2019-10-22 16:11:43 +03:00
rsx_cache.h rsx/cache: Warnings cleanup 2019-09-01 18:59:50 +03:00
rsx_decode.h rsx: Enable primitive restart index only when needed (#6889) 2019-10-28 23:16:27 +03:00
rsx_methods.cpp rsx: Make input_is_swizzled a template parameter 2019-10-28 13:28:51 +03:00
rsx_methods.h rsx: Enable primitive restart index only when needed (#6889) 2019-10-28 23:16:27 +03:00
rsx_utils.cpp vk: Reimplement DMA synchronization 2019-09-12 23:32:21 +03:00
rsx_utils.h rsx: Separate subresource_layout:dim_in_block and 2019-10-29 20:03:54 +03:00
rsx_vertex_data.h Remove unnecessary header includes 2019-06-25 17:11:10 +03:00
RSXFIFO.cpp rsx: Enable primitive restart index only when needed (#6889) 2019-10-28 23:16:27 +03:00
RSXFIFO.h rsx: Report full method range on invalid methods 2019-10-21 15:31:45 +03:00
RSXFragmentProgram.h rsx/decompiler: Restructure program register behavior 2019-08-26 20:03:31 +03:00
RSXOffload.cpp rsx: Fix offloader deadlock 2019-08-25 22:09:20 +03:00
RSXOffload.h rsx: Fix offloader deadlock 2019-08-25 22:09:20 +03:00
RSXTexture.cpp rsx util: Implement decode_fxp<> 2019-10-18 15:41:39 +03:00
RSXTexture.h rsx: Fix decoding of some fixed point texture parameters 2019-10-17 18:18:00 +03:00
RSXThread.cpp rsx: Align down index array offset 2019-10-22 13:45:09 +03:00
RSXThread.h vk: Add checks for alphaToOne support 2019-10-30 01:06:28 +03:00
RSXVertexProgram.h Remove unnecessary header includes 2019-06-25 17:11:10 +03:00