Feng Chen
1e8cee2ddf
video_core: Implement maxwell3d draw texture method
2023-01-05 12:41:28 +08:00
Fernando Sahmkow
a0c697124c
Video_core: Address feedback
2023-01-04 14:39:42 -05:00
Fernando Sahmkow
b62ffb612d
Vulkan: rework stencil tracking.
2023-01-03 16:29:16 -05:00
Fernando Sahmkow
d09aa0182f
MacroHLE: Final cleanup and fixes.
2023-01-01 16:43:58 -05:00
Fernando Sahmkow
cb1497d0d7
DMAPusher: Improve collection of non executing methods
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
ce448ce770
Revert Buffer cache changes and setup additional macros.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
18637766ef
MacroHLE: Reduce massive calculations on sizing estimation.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
aad0cbf024
MacroHLE: Add HLE replacement for base vertex and base instance.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
93ac5a6a6d
MacroHLE: Add Index Buffer size estimation.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
c541559767
MacroHLE: Refactor MacroHLE system.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
0f89828073
MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect.
2023-01-01 16:43:57 -05:00
Feng Chen
bf0b957c05
video_core: Implement maxwell3d draw manager and split draw logic
2022-12-08 10:12:19 +08:00
liamwhite
ac0721a4bc
Merge pull request #9353 from vonchenplus/draw_indexed
...
video_core: Fine tuning the index drawing judgment logic
2022-12-03 10:43:34 -05:00
Feng Chen
cb5400b34d
video_core: Fine tuning the index drawing judgment logic
2022-12-01 19:14:58 +08:00
Lioncash
96ffc174aa
maxwell_3d: Mark shifted value as unsigned
...
Otherwise this is technically creating a signed int result that gets
converted. Just a consistency change.
While we're in the area, we can mark Samples() as const.
2022-11-29 08:39:33 -05:00
Lioncash
d7ec031419
engines: Remove unnecessary casts
...
In a few cases we have some casts that can be trivially removed.
2022-11-29 08:38:46 -05:00
FengChen
1d57851fc7
video_core: Optimize maxwell drawing trigger mechanism
2022-11-22 17:53:26 +08:00
Liam
4c42655a2d
maxwell3d: full HLE for multi-layer clears
2022-11-17 08:31:43 -05:00
Liam
ece0c1095d
maxwell3d: HLE multi-layer clear macro
2022-11-16 22:28:58 -05:00
Kelebek1
33ea0fdfe8
Fix regs regression with OpenGL two-sided stencil, and re-add data invalidation reg
2022-11-11 04:04:36 +00:00
Morph
c9bb888adf
ir/texture_pass: Use host_info instead of querying Settings::values ( #9176 )
2022-11-11 03:32:53 +01:00
FengChen
f6e7cae62c
video_core: Fix drawing trigger mechanism regression
2022-10-27 13:26:52 +08:00
FengChen
2f90694797
video_core: Implement maxwell inline_index method
2022-10-22 16:58:23 +08:00
FengChen
1f54cd4ac7
video_coare: Reimplementing the maxwell drawing trigger mechanism
2022-10-21 17:09:22 +08:00
Morph
d3114c620d
renderer_(opengl/vulkan): Fix tessellation clockwise parameter
...
This should be assigned CW only on Triangles_CW rather than not Triangles_CCW, making CCW the default winding order rather than CW.
2022-10-13 15:52:56 -04:00
Kelebek1
4496030ea9
Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong.
2022-10-10 20:59:57 +01:00
Kelebek1
752659aef3
Update 3D regs
2022-10-07 14:13:45 +01:00
Liam
084d7d6b01
common: Change semantics of UNREACHABLE to unconditionally crash
2022-06-13 20:09:00 -04:00
Billy Laws
ea89cf8639
Maxwell3D: Fix 3D semaphore counter type 0 handling
...
Counter type 0 actually releases the semaphore payload rather than a constant zero as was previously thought. This is required by Skyrim.
2022-06-02 21:46:38 +01:00
Morph
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
Liam
a24e7ba61b
maxwell3d: add small_index_2 register
2022-04-14 09:57:06 -04:00
ameerj
1bc7d61b57
video_core: Reduce unused includes
2022-03-19 15:01:31 -04:00
Fernando S
c3c351e2c2
Merge pull request #8023 from ameerj/kirby-pop-in
...
maxwell_3d: Implement a safer CB data upload
2022-03-16 12:14:08 +01:00
ameerj
5119a57614
maxwell_3d: Implement a safer CB data upload
...
This makes constant buffer uploads safer and more accurate by updating the GPU memory as soon as the CB Data method is invoked. The previous implementation was deferring the updates until a different maxwell 3d method was detected, then writing all CB data at once.
2022-03-14 19:18:36 -04:00
byte[]
be0e6a2bb4
Maxwell3D: Link to override constant definition in nouveau
2022-03-14 11:06:25 -04:00
Liam
37aa472269
Maxwell3D: Use override constants from nouveau
...
This fixes some incorrect rendering in Sunshine
2022-03-14 10:11:58 -04:00
Liam
56c646d82c
Maxwell3D: Restrict topology override effect to after the register is set
2022-03-11 19:42:12 -05:00
Liam
f1521183f8
Maxwell3D: read small-index draw and primitive topology override registers
...
This allows Galaxy and Sunshine to render for the first time.
2022-03-10 19:21:04 -05:00
Fernando Sahmkow
8a6e6465a7
Rasterizer: Refactor inlineToMemory.
2022-02-01 01:47:28 +01:00
Fernando Sahmkow
4258d515e6
Rasterizer: Implement Inline2Memory Acceleration.
2022-01-29 22:53:27 +01:00
ameerj
5daf3abe65
common/logging: Move Log::Entry declaration to a separate header
...
This reduces the load of requiring to include std::chrono in all files which include log.h
2021-10-01 20:48:49 -04:00
Feng Chen
0292374807
Fix blend equation enum error
2021-09-07 10:12:09 +08:00
ReinUsesLisp
fba6bd92d4
vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_state
...
Workaround potential bug on Nvidia's driver where only updating high
attributes leaves low attributes out dated.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
7dafa96ab5
shader: Rework varyings and implement passthrough geometry shaders
...
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
4f052a1f39
vk_graphics_pipeline: Implement conservative rendering
2021-07-22 21:51:39 -04:00
ReinUsesLisp
395bed3a0a
shader: Unify shader stage types
2021-07-22 21:51:39 -04:00
ReinUsesLisp
d554778311
vulkan: Use VK_EXT_provoking_vertex when available
2021-07-22 21:51:35 -04:00
ReinUsesLisp
c67d64365a
shader: Remove old shader management
2021-07-22 21:51:22 -04:00
Lioncash
be6844c1ed
maxwell3d: Add missing return in default SizeInBytes() case
...
We were returning '1' in ComponentCount()'s default case but were
neglecting to do the same with SizeInBytes().
2021-06-23 11:50:40 -04:00
ReinUsesLisp
82c2601555
video_core: Reimplement the buffer cache
...
Reimplement the buffer cache using cached bindings and page level
granularity for modification tracking. This also drops the usage of
shared pointers and virtual functions from the cache.
- Bindings are cached, allowing to skip work when the game changes few
bits between draws.
- OpenGL Assembly shaders no longer copy when a region has been modified
from the GPU to emulate constant buffers, instead GL_EXT_memory_object
is used to alias sub-buffers within the same allocation.
- OpenGL Assembly shaders stream constant buffer data using
glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In
theory this should save one hash table resolve inside the driver
compared to glBufferSubData.
- A new OpenGL stream buffer is implemented based on fences for drivers
that are not Nvidia's proprietary, due to their low performance on
partial glBufferSubData calls synchronized with 3D rendering (that
some games use a lot).
- Most optimizations are shared between APIs now, allowing Vulkan to
cache more bindings than before, skipping unnecesarry work.
This commit adds the necessary infrastructure to use Vulkan object from
OpenGL. Overall, it improves performance and fixes some bugs present on
the old cache. There are still some edge cases hit by some games that
harm performance on some vendors, this are planned to be fixed in later
commits.
2021-02-13 02:17:22 -03:00