Commit graph

85 commits

Author SHA1 Message Date
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
riperiperi
d45b28f6b7 Cleanup for merge (note: disables spir-v) 2022-06-17 22:42:50 +01:00
riperiperi
c75860e627 Address some feedback 2022-06-17 22:42:49 +01:00
riperiperi
f6196fe07b Multithreaded Pipeline Compilation 2022-06-17 22:42:49 +01:00
gdk
51d986da35 Multisampling: We can only resolve for unscaled copies 2022-06-17 22:42:47 +01:00
gdk
5efe0167ea Multisampling: Use resolve if src samples count > dst samples count 2022-06-17 22:42:47 +01:00
gdk
6810796638 Multisampling support 2022-06-17 22:42:46 +01:00
riperiperi
fb20e5b371 Don't pass depth clip state right now (fix decals)
Explicitly disabling it is incorrect. OpenGL currently automatically disables based on depth clamp, which is the behaviour if this state is omitted.
2022-06-17 22:42:45 +01:00
gdk
f1a1f477ef Allow custom aspect ratio on Vulkan 2022-06-17 22:42:40 +01:00
gdk
9b779adf57 Better workaround for AMD vertex buffer size alignment issue 2022-06-17 22:42:39 +01:00
gdk
522e7933e8 Workaround for wrong last attribute on AMD (affects FFVII, STRIKERS1945, probably more) 2022-06-17 22:42:39 +01:00
gdk
36b3ab0741 Fix draw outside of render pass and missing capability 2022-06-17 22:42:39 +01:00
gdk
5a3695c968 Don't pause transform feedback for multi draw 2022-06-17 22:42:39 +01:00
gdk
52249e50dd Fix transform feedback on Intel, gl_Position feedback and clears to inexistent depth buffers 2022-06-17 22:42:38 +01:00
riperiperi
0fe19f51c0 Insert barriers around vkCmdBlitImage (may fix some amd flicker) 2022-06-17 22:42:38 +01:00