kd-11
8ca53f9c84
rsx: Remember to min-max the anchor indices of a polygon or triangle fan
2019-11-24 19:01:57 +03:00
Emmanuel Gil Peyrot
f76720ceb0
Remove extraneous ::narrow<int>() calls
...
GSL’s gsl::span didn’t use the correct type for its index_type, which is
why they were needed.
2019-11-09 19:30:06 +01:00
Emmanuel Gil Peyrot
ef368c5171
rsx: Replace gsl::byte with C++17’s std::byte
2019-11-09 19:30:05 +01:00
Nekotekina
e3e7051ed3
Minor optimization in BufferUtils.cpp
...
Don't use PSHUFB for horizontal operations.
Utilize PHMINPOSUW to compute max as well:
+ sse41_hmin_epu16
+ sse41_hmax_epu16
2019-10-30 18:52:34 +03:00
Nekotekina
b1968769b7
Minor cleanup in BufferUtils.cpp
...
Replace inline asm with intrinsic using target attribute trick.
2019-10-30 17:53:51 +03:00
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
kd-11
c59cb1bdd3
rsx: Allow only sse4.1 capable CPUs to take the accelerated index path
...
- Older sets lack the required min/max functionality
2019-09-13 12:28:52 +03:00
kd-11
60845daf45
rsx: Improve use of CPU vector extensions
...
- Allow use of intrinsics when SSSE3 and SSSE4.1 are not available in the build target environment
- Properly separate SSE4.1 code from SSSE3 code for some older proceessors without SSE4.1
2019-09-12 14:08:21 +03:00
kd-11
652f18ebaa
rsx/buffers: Warnings cleanup
2019-09-01 18:59:50 +03:00
JohnHolmesII
ebb1ae6408
Properly ignore SIMD macros to avoid warning
2019-06-28 01:40:52 +03:00
kd-11
358169507c
rsx: Use SSE to accelerate index buffer uploads
2019-06-25 20:50:54 +03:00
Lassi Hämäläinen
c963c51a60
Remove unnecessary header includes
...
- Manually removed lot of unneeded #includes to clean code and reduce
compilation time
- Reordered some of the #includes to be in more logical order
2019-06-25 17:11:10 +03:00
scribam
db926ee671
rsx: Apply Clang-Tidy fix "performance-unnecessary-value-param"
2019-06-12 15:11:52 +03:00
Nekotekina
dfd50d0185
Implement std::bit_cast<>
...
Partial implementation of std::bit_cast from C++20.
Also fix most strict-aliasing rule break warnings (gcc).
2019-06-02 23:22:16 +03:00
kd-11
417a2e6731
rsx: Refactor index buffers
...
- Index offset is ignored anyway and only used to calculate vertex attribute divisor index
- Specialized optimization for untouched xfer without primitive restart
2019-01-25 14:34:22 +03:00
kd-11
504ab5a6d4
rsx: Minor cleanup to silence stupid compiler warnings
2018-12-03 20:01:23 +03:00
kd-11
677b16f5c6
rsx: Fixups
...
- Also fix visual corruption when using disjoint indexed draws
- Refactor draw call emit again (vk)
- Improve execution barrier resolve
- Allow vertex/index rebase inside begin/end pair
- Add ALPHA_TEST to list of excluded methods [TODO: defer raster state]
- gl bringup
- Simplify
- using the simple_array gets back a few more fps :)
2018-11-30 23:51:25 +03:00
kd-11
e01d2f08c9
rsx: Refactor FIFO
...
- Removes fifo structures from common RSXThread
- Sets up a dedicated FIFO controller
- Allows for configurable queue optimizations
2018-11-30 23:51:25 +03:00
eladash
83b6c98563
rsx: Fix u16 index arrays overflow
...
Force u32 index array destinations to avoid overflows when adding vertex base index.
2018-10-08 16:39:47 +03:00
eladash
e361e0daa6
rsx: Fix restart index check for u16 index arrays
...
Dont ignore upper bits of the restart index with u16 types
2018-10-08 16:39:47 +03:00
kd-11
6399833182
rsx: Fix endianness order when immediate mode register is updated, but used as register lookup
...
- Simplify the code by unifying all the register-backed memory
2018-09-03 18:24:20 +03:00
Nekotekina
1c6c24f8ac
Update GSL and yaml-cpp submodules
2018-08-25 01:15:47 +03:00
scribam
04ad49de4d
typos
2018-05-14 21:14:39 +04:00
Jake
6d6d6fa827
dx12/vk/gl: implement use of vertex_data_base_index when calculating index
2018-03-30 13:30:04 +03:00
Nekotekina
61de20a633
RSX: remove SSSE3 dependency
2017-12-20 00:04:08 +03:00
Zion Nimchuk
3a9ae2df9e
silence warnings in RSX stuff
2017-11-30 18:07:19 +03:00
kd-11
ddcacb8258
general fixes; Force u32 return type for index_count and add RX Vega to primitive restart blacklist
2017-10-19 12:22:52 +03:00
kd-11
89dcafbe41
rsx: Reimplement index buffer generation
...
- Emulate primitive restart in software whenever we get the chance
- Ensure PRIMITIVE_RESTART is never active when LIST topologies are active
- Reimplement TRIANGLE_FAN, POLYGON and QUAD expansion
2017-10-19 12:22:52 +03:00
kd-11
2e9405db4c
rsx: Remove index expansion for quad strips
2017-08-26 21:53:54 +03:00
kd-11
fe5828cb47
rsx: Implement QUAD_STRIP
...
- QUAD_STRIP evaluates to TRIANGLE_STRIP in memory. The memory layout is identical.
- The only difference between the two modes would be the primitive_ID but that doesnt matter on RSX
- Its worth noting that results will be different between the two modes if input vertices are non-coplanar for every set of N verts
2017-08-26 21:53:54 +03:00
kd-11
a7c28f5827
rsx: Fix remainder/iteration computations in BufferUtils
2017-07-24 16:52:42 +03:00
kd-11
47e5074dc5
rsx: Emulated index buffers are based on vertex 0 with no disjoint ranges
...
- Drop the 'first' argument as it is unused for now
2017-06-29 13:13:19 +03:00
kd-11
b2e906f4cc
rsx: Code cleanup. Fixes several dozen warnings
...
- Wrap unused parameters as comments to prevent C1400
- Fix sized variable conversions with explicit casts
2017-06-22 23:36:15 +03:00
kd-11
11317acdbe
rsx: Handle non-zero base vertex better
...
- Vertex buffer contents treat the base vertex as vertex 0 so we do the same for indices
rsx: Fix vertex base indexing
rsx: Properly fix non-zero offset indexed rendering
2017-06-22 23:36:15 +03:00
kd-11
786bcb0d1b
rsx: bugfix - avoid a divide by zero
2017-05-22 14:28:33 +03:00
kd-11
d4ddc40988
rsx: Add support for repeated data streams (broken attrib divisor?)
2017-05-22 14:28:33 +03:00
kd-11
e8b4d332eb
rsx: Use faster upload path when conditions allow
...
Fix aligned memory access (SSE)
rsx: BufferUtils; always use optimized paths
2017-05-22 14:28:33 +03:00
kd-11
2d99f3556e
rsx: Fix line_loop -> line_strip indexing
2017-04-03 13:50:58 +03:00
Zangetsu38
73906f9f29
d3d12: add x1r5g5b5_z1r5g5b5 and cleanup in D3D12Formats.
...
Add info in BufferUtils for log.
2017-02-10 22:04:45 +03:00
Vincent Lejeune
42b518cf7e
rsx: use range for vertex buffer attribute.
2016-08-24 21:58:59 +02:00
Nekotekina
84d0d396ed
EXPECTS usage removed
2016-08-15 16:29:38 +03:00
Nekotekina
a7e808b35b
EXCEPTION macro removed
...
fmt::throw_exception<> implemented
::narrow improved
Minor fixes
2016-08-08 19:19:32 +03:00
Vincent Lejeune
fb47945930
rsx: Returns u32 instead of size_t for get_index_count/type_size
2016-08-06 00:25:23 +02:00
Vincent Lejeune
7a6f5b6ee5
rsx: Move index pointer generation in rsx::thread.
2016-08-05 17:54:44 +02:00
raven02
e1ff3f4674
rsx: use fragment_textures_count ( #1948 )
...
* rsx: use fragment_textures_count
* Typo: unknow -> unknown
2016-07-19 22:50:40 +08:00
Vincent Lejeune
772706ca4c
Factorize rsx state
2016-07-07 21:38:57 +02:00
DHrpcs3
3b5cd4845e
OpenGL renderer: use correct MVP matrix. Cleanup
...
Simplified gl::ring_buffer helper
2016-06-21 19:56:05 +03:00
Nekotekina
266db1336d
The rest
2016-05-23 16:22:25 +03:00
Nekotekina
b85a68e8a1
Partial commit: RSX
2016-04-15 19:22:36 +03:00
Vincent Lejeune
3a3d264cb5
rsx/common/d3d12/gl/vulkan: Set dst stride in write_vertex_array_data_to_buffer.
2016-04-07 22:17:28 +02:00
Vincent Lejeune
2ae5a7ff39
rsx/common/d3d12/gl/vulkan: Use single overload for write_index_array_data_to_buffer.
2016-04-07 22:17:28 +02:00
Vincent Lejeune
cbe119b457
rsx/common: Remove MIN2/MAX2 macro.
2016-04-07 22:17:28 +02:00
kd-11
0327e76320
Fix quad strip triangle winding
2016-03-24 10:52:35 +03:00
Vincent Lejeune
9cdb74efc7
rsx/common: Add supports for quads strip
...
Used in Hitman 2
2016-02-27 19:38:16 +01:00
Vincent Lejeune
a6ba47265f
rsx/common/gl: s32k is actually signed short unormalized.
...
gl fix
2016-02-27 00:21:12 +01:00
Vincent Lejeune
5ef7f8bf3e
rsx/common: Fix handling of UB256
2016-02-27 00:21:06 +01:00
Vincent Lejeune
5a14644cd4
rsx/common/d3d12/gl: Use span in vertex upload function.
2016-02-22 20:22:47 +01:00
kd-11
7b889a10cc
Add vertex texture buffers for VS input
...
Support vertex instancing in vertex shader using VertexID
Relax OpenGL requirements by removing 4.5 features
Use EXT version of TexBufferRange; Implement buffer copy using TexBuffer
Apply travis workaround by danilaml
Fix vertex upload in in case of inlined array
2016-02-03 13:38:23 +03:00
Vincent Lejeune
acd384ae2d
rsx/common: Base offset is actually correctly supported.
...
Outrun uses it and cars are correctly displayed.
2016-01-27 22:05:43 +01:00
DHrpcs3
19ce0cdc09
rsx methods constants moved to rsx namespace
...
minor fix
2016-01-20 20:12:48 +03:00
DHrpcs3
7972cb5bdc
Code style fixes #1
2016-01-20 16:23:25 +03:00
Vincent Lejeune
689dee9944
rsx/common/d3d12: Consider separate index range as a whole.
...
Fix Wolf of the Battlefield 3
2016-01-13 00:28:48 +01:00
Vincent Lejeune
d153575e59
rsx/common/d3d12/gl: Support for CMP/non pow of 2 size vertex formats.
...
Also use class enum for base_vertex_type everywhere.
Fix Bomberman Ultra color and Cubixx HD geometry.
2016-01-09 23:18:03 +01:00
DHrpcs3
48919330d7
rsx methods moved from rsx thread
2016-01-06 13:30:24 +02:00
Vincent Lejeune
5f12a4f7b5
rsx/common/d3d12/gl: Use separate vertex array/vertex register states.
2015-12-30 17:04:34 +01:00
Nekotekina
3ed603074c
Changes done by [DH] rewritten
...
Added rsx_program_decompiler submodule
Added fs::dir iterator
Added fmt::match
2015-12-22 23:11:20 +03:00
Nekotekina
aa811b6eef
Cleanup (noexcept, unreachable)
...
%x formatting fixes
2015-12-20 15:41:07 +03:00
Vincent Lejeune
1cda2977bb
common/d3d12: emulate polygon mode
2015-12-16 20:36:36 +01:00
Vincent Lejeune
ae5d95d462
rsx/common: Take primitive restart index in account and turns it into -1.
2015-11-12 18:29:01 +01:00
Vincent Lejeune
2ad7051746
rsx/d3d12: Move vertex constants filling code to RSXThread
2015-11-06 20:08:41 +01:00
Vincent Lejeune
02ce78482c
rsx/d3d12: Move scale offset buffer setting to RSXThread
2015-11-06 20:08:17 +01:00
Vincent Lejeune
1ec18bdf64
RSX/common: Clean BufferUtils code
...
* Add noexcept
* Use a_b_c code style
* Use anonymous namespace
2015-10-29 18:48:50 +01:00
Vincent Lejeune
9f49232cac
d3d12: Avoid copying index data and use correct index range.
...
This fixes Braid.
2015-10-27 01:24:04 +01:00
Vincent Lejeune
a2997a1109
d3d12: Avoid an extra vertex copy
2015-10-15 17:13:43 +02:00
Nekotekina
a974ee009e
vm::var improved, cleanup
...
Mostly vm::var initialization introduced.
Added vm::make_var function.
2015-10-14 18:17:37 +03:00
Vincent Lejeune
a63fdf6c45
Use files from master
...
- Drop smart vertex storage and use OpenGL's one instead.
2015-10-13 14:27:17 +02:00
Vincent Lejeune
60bccf0f10
Remove RSXVertexArray
2015-10-13 00:04:12 +02:00
Vincent Lejeune
d27f6c8fa7
Use rsx::limits values
2015-10-13 00:04:05 +02:00
Vincent Lejeune
6f71d04aa4
move linear to swizzle and get_size_type
...
symbol undef though
2015-10-13 00:04:04 +02:00
Vincent Lejeune
f483c3b9ca
Revert "Merge pull request #1245 from DHrpcs3/master"
...
This reverts commit 5feba39ff7 , reversing
changes made to ebf28f8da0 .
2015-10-09 20:04:20 +02:00
DH
6cb036d35f
Fix for gcc/clang build
2015-10-08 00:05:04 +03:00
Vincent Lejeune
d511153836
Common: Fix element count computation if addr is null (RSXVertexData)
2015-10-05 01:57:57 +02:00
Vincent Lejeune
c7b7d1f71f
Common: Move generic vertex buffer code from d3d12 backend
2015-10-03 18:25:19 +02:00