gdk
8cac0e2b51
Fix error due to missing subpass dependency when Attachment Write -> Shader Read barriers are added
2022-06-17 22:47:05 +01:00
riperiperi
088ea4545c
Fix and enable background compute shader compilation
...
Also disables warnings from shader cache pipeline misses.
2022-06-17 22:47:05 +01:00
gdk
d31360e7da
Implement GPU selector and expose texture recompression on the UI and config
2022-06-17 22:47:04 +01:00
riperiperi
c98b61ade8
Use RobustBufferAccess on NVIDIA gpus
...
Avoids the SMO waterfall triangle on older NVIDIA gpus.
2022-06-17 22:47:04 +01:00
riperiperi
db5a1a6aa6
Workaround RADV crash
...
Enabling the descriptor indexing extension, even if it is not used, forces the radv driver to use "bolist".
2022-06-17 22:47:04 +01:00
gdk
378b3147b7
Remove pre-compiled shaderc binary for Windows as its no longer needed by default
2022-06-17 22:47:04 +01:00
gdk
c07abe4ec0
Pre-compile helper shader as SPIR-V, and some fixes
2022-06-17 22:47:04 +01:00
gdk
400ed2d96d
Add minimal pipeline layouts that only contains used bindings
...
They are used by helper shaders, the intention is avoiding needing to recompile the shaders (from GLSL to SPIR-V) if the bindings changes on the translated guest shaders
2022-06-17 22:47:04 +01:00
gdk
38ecf0f117
Remove old CompileShader methods from the Vulkan backend
2022-06-17 22:47:03 +01:00
gdk
b6764620be
Support multisample texture copy with automatic resolve on Vulkan
2022-06-17 22:47:03 +01:00
gdk
572759a4ac
Combine non-buffer with buffer image descriptor sets
2022-06-17 22:47:03 +01:00
Emmanuel Hansen
8a1bdf1f1e
Add support for avalonia ( #6 )
...
* add avalonia support
* only lock around skia flush
* addressed review
* cleanup
* add fallback size if avalonia attempts to render but the window size is 0. read desktop scale after enabling dpi check
* fix getting window handle on linux. skip render is size is 0
2022-06-17 22:47:03 +01:00
riperiperi
2000070330
Flush queries on attachment change rather than program change
...
Occlusion queries are usually used in a depth only pass so the attachments changing is a better indication of the query block ending.
Write mask changes are also considered since some games do depth only pass by setting 0 write mask on all the colour targets.
2022-06-17 22:47:03 +01:00
riperiperi
d4b9a6378f
Bounds check on bitmap add.
2022-06-17 22:47:02 +01:00
gdk
1fac9dc29b
If MultiViewport is not supported, do not try to set more than one viewport/scissor
2022-06-17 22:47:02 +01:00
gdk
74a8f37f8d
Do not require null descriptors support
2022-06-17 22:47:02 +01:00
riperiperi
281f16aa36
Fix dependency
2022-06-17 22:47:02 +01:00
gdk
782a0c4e93
Add support for BC6 and BC7 decompression, decompress all BC formats if they are not supported by the host
2022-06-17 22:47:02 +01:00
riperiperi
d2cef41c5b
Fix Avalonia Rebase
...
Vulkan is currently not available on Avalonia, but the build does work and you can use opengl.
2022-06-17 22:47:01 +01:00
riperiperi
f636810c6c
Check for transform feedback query support
...
Sometimes transform feedback is supported without the query type.
2022-06-17 22:47:01 +01:00
riperiperi
d4ccb6b895
Return of the Vector Indexing Bug
...
One day, everyone will get this right.
2022-06-17 22:47:00 +01:00
riperiperi
9f0feb8879
Don't create query pools for unsupported query types
2022-06-17 22:47:00 +01:00
riperiperi
884ee76d7c
Update guest cache to v1.1 (due to specialization state changes)
...
This will explode your shader cache from earlier vulkan build, but it must be done. 😔
2022-06-17 22:47:00 +01:00
riperiperi
f21761555c
Add Gl StencilOp enum values to Vulkan
2022-06-17 22:47:00 +01:00
gdk
daaa7fda11
Do not report R4G4 format as supported on Vulkan
...
It was causing mario head to become white on Super Mario 64 (???)
2022-06-17 22:46:59 +01:00
riperiperi
646be812ed
Report 32 bit query result on AMD windows (smo issue)
2022-06-17 22:46:59 +01:00
gdk
7838a45772
Add barrier before use of some modified images
2022-06-17 22:46:56 +01:00
gdk
2852ddf510
Fix A1B5G5R5 texture format and support R4G4 on Vulkan
2022-06-17 22:46:06 +01:00
gdk
dd54eb4be1
Geometry shader passthrough emulation
2022-06-17 22:46:05 +01:00
gdk
2713703d45
Do not clear unbound framebuffer color attachments
2022-06-17 22:46:05 +01:00
gdk
fd2e53fdc6
Raise textures limit to 64 on Vulkan
2022-06-17 22:46:05 +01:00
gdk
efa2868825
Remove unused PipelineConverter format variable (was causing IOR)
2022-06-17 22:46:04 +01:00
gdk
c95cdc853e
Enable shader cache on Vulkan and implement MultiplyHighS32/U32 on SPIR-V (missed those before)
2022-06-17 22:45:57 +01:00
gdk
5670022e27
Only enable ShaderFloat64 if the GPU supports it
2022-06-17 22:45:03 +01:00
gdk
1edc85c26e
Check if the subgroup size is supported before passing a explicit size
2022-06-17 22:45:03 +01:00
gdk
4648e37a31
Use ClampToEdge for Clamp sampler address mode on Vulkan (fixes Hollow Knight)
...
Clamp is unsupported on Vulkan, but ClampToEdge behaves almost the same. ClampToBorder on the other hand (which was being used before) is pretty different
2022-06-17 22:42:59 +01:00
gdk
7c32e4a3fe
Add missing barriers around CmdFillBuffer (fixes Monster Hunter Rise flickering on NVIDIA)
2022-06-17 22:42:58 +01:00
gdk
80d72504d4
Take componentMask and scissor into account when clearing framebuffer attachments
2022-06-17 22:42:58 +01:00
gdk
746eded2cf
Use explicit subgroup size if we can (might fix some block flickering on AMD)
2022-06-17 22:42:57 +01:00
gdk
3767cf4ce5
Fix some validation errors related to texel block view usage flag and invalid image barrier base level
2022-06-17 22:42:57 +01:00
gdk
03955d6b04
Allow null samplers (samplers are not required when only using texelFetch to access the texture)
2022-06-17 22:42:57 +01:00
gdk
3b444f0ea3
SPIR-V: Geometry shader passthrough support
2022-06-17 22:42:54 +01:00
gdk
2ef7622126
SPIR-V: Fix SwizzleAdd and some validation errors
2022-06-17 22:42:52 +01:00
riperiperi
90ae2dbf69
Fix validation error for query reset
...
Need to think of a better way to do this.
2022-06-17 22:42:52 +01:00
riperiperi
05a736b6d3
Remove unnecessary lines
...
Was for testing
2022-06-17 22:42:51 +01:00
riperiperi
4cc0c2132c
Rework Query stuff a bit to avoid render pass end
...
Tries to reset returned queries in background when possible, rather than ending the render pass.
Still ends render pass when resetting a counter after draws, but maybe that can be solved too. (by just pulling an empty object off the pool?)
2022-06-17 22:42:51 +01:00
riperiperi
eda65c8dd3
Copy query results after RP ends, rather than ending to copy
...
We need to end the render pass to get the data (submit command buffer) anyways...
Reduces render passes created in games that use queries.
2022-06-17 22:42:51 +01:00
riperiperi
af4aae7951
Use a bitmap to do granular tracking for buffer uploads.
...
This path is only taken if the much faster check of "is the buffer rented at all" is triggered, so it doesn't actually end up costing too much, and the time saved by not ending render passes (and on gpu for not waiting on barriers) is probably helpful.
Avoids ending render passes to update buffer data (not all the time)
- 140-180 to 35-45 in SMO metro kingdom (these updates are in the UI)
- Very variable 60-150(!) to 16-25 in mario kart 8 (these updates are in the UI)
As well as allowing more data to be preloaded persistently, this will also allow more data to be loaded in the preload buffer, which should be faster as it doesn't need to insert barriers between draws. (and on tbdr, does not need to flush and reload tile memory)
Improves performance in GPU limited scenarios. Should notably improve performance on TBDR gpus. Still a lot more to do here.
2022-06-17 22:42:51 +01:00
riperiperi
9c696fc2e1
Fix Multisampling
2022-06-17 22:42:50 +01:00
riperiperi
089fa6bd54
Make more robust to shader compilation failure
...
- Don't freeze when GLSL compilation fails
- Background SPIR-V pipeline compile failure results in skipped draws, similar to GLSL compilation failure.
2022-06-17 22:42:50 +01:00