kd-11
d846142f0c
vk: Reimplement compliant async texture streaming
...
- Use CONCURRENT queue access instead of fighting with queue acquire/release via submit chains.
The minor benefits of forcing EXCLUSIVE mode are buried under the huge penalty of multiple vkQueueSubmit.
Batching submits does not help alleviate this situation. We simply must avoid interrupting execution.
2022-07-25 21:05:31 +03:00
kd-11
1592ecdc55
rsx: Invalidate transform block on program change
...
- Since each program now does a remap of the outputs, we need to reupload the constants
- This is not a loss, constants are almost always changing between draw calls anyway
2022-03-26 16:10:18 +03:00
kd-11
9a2d4fe46b
rsx: Relocatable transform constants
2022-03-26 16:10:18 +03:00
kd-11
6812fa4764
rsx: Fix surface write coherency when MSAA is active
2022-03-08 22:06:26 +03:00
kd-11
83407c386c
vk: Move renderer types to a separate file
...
- Makes my life easier managing conflicts
2022-02-21 23:58:01 +03:00
kd-11
cef512a123
vk: Spec-compliant async compute
2022-02-13 14:39:42 +03:00
kd-11
2d9f21a2ea
rsx: Lower performance warnings to 'warn' level instead of 'error' level to avoid causing panic for users
2022-02-07 09:25:01 +03:00
kd-11
86919ec0e1
rsx: Validate requested images before attempting to upload them
...
- Do not allow dimensions of 0 to reach the backend APIs
2022-01-30 14:58:51 +03:00
kd-11
3942a464fe
vk: Avoid leaking descriptor copies
2022-01-20 19:21:24 +03:00
kd-11
2331dc3256
vk: Keep the total number of allocated samplers under control
2022-01-20 19:21:24 +03:00
kd-11
000ec71629
Fix invalid descriptor setup if subdraw0 has broken vertex setup
2022-01-17 12:38:10 +03:00
kd-11
4ed92f4155
vk: Fully allow CB change in emit_geometry
...
- upload_vertex_data can trigger a flush to CELL which will result in CB flush.
Ensure CB state is correctly reloaded in such a situation.
2021-10-20 12:05:39 +03:00
kd-11
381c7544fa
Optimize basic descriptor batching
2021-09-28 17:43:15 +03:00
kd-11
4752c4014b
vk: Implement basic descriptor updates batching
2021-09-28 17:43:15 +03:00
kd-11
7f830d555d
vk: Simplify texture cache OOM tracking a bit
2021-09-28 17:43:15 +03:00
Nick Renieris
47e784d5d0
gl/vk: Scale line width & point size by resolution scaling
2021-08-17 19:29:46 +03:00
kd-11
c54ddabe0b
vk: Handle out of memory errors that are deferred during texture binding
...
- Set out-of-memory flag if we have a failure to build a subresource.
- Mark textures as requiring reload in case of references to invalid data.
- TODO: This is overly complicated and can be handled better with a smart restructure.
2021-07-27 10:52:21 +03:00
kd-11
194bfc54d1
rsx: Implement dynamic vertex offset updates
...
- Vertex offsets can be updated mid-draw to dynamically render different meshes without breaking up draws
2021-06-30 10:07:33 +03:00
kd-11
568af756cc
rsx: Fix expired sampler descriptors
...
- Rebuilding when strict mode is enabled was incomplete.
The copy has to be redone if the source has been updated.
2021-06-06 15:37:47 +03:00
kd-11
9199b1b1d8
vk: Improve compatibility with sub-par drivers and hardware
...
- Adds workarounds for INTEL + MSAA
- Adds support for younger drivers where all features may not be
implemented.
Things that won't out-right break the emulation can be
disabled.
2021-05-30 22:35:34 +03:00
Nekotekina
2491aad6f2
types.hpp: implement min_v<>, max_v<>, SignedInt, UnsignedInt, FPInt concepts
...
Restrict smax to only work with signed values for consistency.
Cleanup <climits> includes.
Cleanup <limits> includes.
2021-05-23 19:43:51 +03:00
kd-11
c5a06dab0a
rsx: Refactor program texture state handling to be persistent across shader swaps
2021-05-15 23:51:12 +03:00
Megamouse
1f295bba5b
VK: ReSharper warning fixes
2021-04-30 08:23:16 +02:00
kd-11
585837a3f0
vk: Support new fxo usage pattern
2021-03-12 02:27:05 +03:00
kd-11
41f5158247
vk: Sync main pipe with async jobs if any
2021-03-12 02:27:05 +03:00
kd-11
d2993474fb
vk: Lazy-initialize image resource on first use when owned by a separate queue
2021-03-12 02:27:05 +03:00
kd-11
d459da1378
Formatting fixes only
...
- Mostly remove camelcase usage in old code.
- Properly annotate vulkan API imports with _vk prefix to make it clear they are not regular variables.
2021-02-23 23:22:41 +03:00
kd-11
c2cbc62be6
vk: Refactor some uber-headers
...
- VKHelpers was the rug everything was swept under for a long time.
This commit essentially deprecates its usage across most of the backend.
2021-01-10 12:04:31 +03:00
Megamouse
11db3151ae
VK refactoring Part 2 ( #9542 )
2021-01-05 10:49:03 +03:00
Eladash
7db13fdeff
rsx: Move Anisotropic Filter Override to RSX state
2020-12-30 15:37:21 +03:00
kd-11
e449111c33
vk: Fixup for renderpass issues
2020-12-19 12:58:44 +03:00
kd-11
0a865bd9dc
vk: Workaround for validation layers bug
2020-12-17 09:36:20 +03:00
kd-11
0ef5743261
rsx: Fix sampler descriptor updates for framebuffer resources
...
- Each desc manages its own lifetime now instead of relying on global timestamp check
- Fixes situation where same object remains active without update for long
2020-12-16 10:10:06 +03:00
kd-11
f83c2f0b6b
rsx: Restructure and simplify some header include chains
2020-12-13 15:38:35 +03:00
kd-11
d775c8dc73
rsx: Move shader analysis+prefetch to the end of the draw call
2020-12-13 15:38:35 +03:00
Nekotekina
b382d3b3e9
Remove ASSUME macro
...
It's dangerous and sometimes bluntly misused feature.
Its optimization potential is near-zero.
2020-12-10 14:08:02 +03:00
Nekotekina
36c8654fb8
Remove HERE macro
...
Some cleanup.
Add location to some functions.
2020-12-10 12:30:22 +03:00
Nekotekina
e055d16b2c
Replace verify() with ensure() with auto src location.
...
Expression ensure(x) returns x.
Using comma operator removed.
2020-12-09 15:43:38 +03:00
kd-11
3a0b3a85a5
rsx: Separate program environment state from program ucode state
...
- Allows for conservative texture uploads
- Allows to update a program object without running full ucode analysis for no reason
2020-12-07 00:45:27 +03:00
RipleyTom
af8c661a64
Remove BOM markers
2020-12-06 15:30:12 +03:00
kd-11
d5f7e7b179
vk: Reimplement GPU query management
2020-10-06 12:02:53 +03:00
kd-11
da6760ed98
vk: Simplify shadow comparison operations for non-integer formats
...
- Just use hardware PCF, it makes everyone's life easier.
2020-09-09 22:11:12 +03:00
kd-11
6380e67af9
rsx: Fix depth clipping
...
- Fix special case where n=f making (f-n) = 0
- Dynamically update depth range by setting dirty bits
- Fix depth bounds when n=f and bounds test is disabled
2020-09-08 15:33:08 +03:00
kd-11
dc465df3bc
rsx: Enable support for extended range in depth buffer
...
- Software clipping emulation is used here as OpenGL does not have explicit clip control.
- Hardware clip control for vulkan to be enabled after this.
2020-09-08 15:33:08 +03:00
kd-11
65ead08880
rsx: Refactor and improve image memory manipulation routines
2020-08-27 12:52:28 +03:00
kd-11
8d8fb4a2e4
rsx: Remove ARGB->D24S8 conversion shader which has been deprecated for years since compute capabilities were added to the emulator
2020-06-15 14:18:12 +03:00
kd-11
d47d597b34
vk: Make the depth-convert pass multisample aware
2020-06-05 17:19:24 +03:00
kd-11
69c2150fbd
vk: Fix query reset when renderpass is active
...
- Performs delayed query reset on-demand
2020-06-05 17:19:24 +03:00
kd-11
7080305d82
vk: Implement masked stencil buffer clears
...
- Partial stencil buffer clears were not implemented. This is for example where a game can choose to clear only some bits from the stencil buffer.
- Vulkan does not support masked stencil clears natively, it has to be implemented as a graphics operation.
- Also refactors vulkan overlay passes to use global resource system instead of forcing the render backend to own all of them and manage lifetimes.
2020-05-21 19:27:23 +03:00
kd-11
fc5b4026e1
vk: Implement optimized pipeline cache
2020-04-30 15:02:59 +03:00