Commit Graph

158 Commits (fc3e117f8d6bda8cbe6a3978e34d9e13b308bc57)

Author SHA1 Message Date
Stenzek fc3e117f8d
VulkanDevice: Synchronize compute image accesses
Use the compute storage-image layout for dispatches and include compute shader
stages when transitioning sampled images.
2 months ago
Stenzek bbac943b5c
VulkanDevice: Expose shared UBO binding to compute shaders 2 months ago
Stenzek b3b57a2a02
VulkanDevice: Bind initial compute pipelines correctly
Select the pipeline bind point from the pipeline layout while initializing shared
command-buffer state needed by later graphics draws.
2 months ago
Stenzek c38b99a0f1
VulkanDevice: Fix duplicate check for VK_KHR_get_surface_capabilities2 6 months ago
Stenzek add30da47a
GPUDevice: Move present result to global namespace
Get rid of some extra includes in headers.
7 months ago
Stenzek 59aeb1e84b
VulkanDevice: Fix query index in WaitForCommandBufferCompletion() 8 months ago
Stenzek 3a54524e40
VulkanDevice: Add missing scissor clamp in SetInitialPipelineState() 8 months ago
Stenzek 2bd0a6ab41
VulkanDevice: Fix incorrect stage bits for compute PushUniformBuffer() 8 months ago
Stenzek c76ee85b1d
VulkanDevice: Don't submit during image acquire
Regression from 5e6a18a584
8 months ago
Stenzek 6f9752a177
VulkanDevice: Simplify EndAndSubmitCommandBuffer() a bit 8 months ago
Stenzek 5e6a18a584
VulkanDevice: Wait before starting next command buffer
Potentially avoids a fence wait.
8 months ago
Stenzek ff0ad1b176
System: Rewrite present skipping
Now can operate in "only if vsync blocks" mode.

Significantly improves frame pacing for fast forward speeds.
8 months ago
Stenzek 09926a3769
GPUDevice: Update last presented time after present
Instead of before.

Makes present skipping much more effective against NVIDIA's global
framerate cap if enabled, on my system with the cap at 60fps it
went from 120fps to 1400fps. Still about half of the true uncapped
speed, but when the present call blocks for a few milliseconds this
is all you can do. Can't stop presenting frames entirely.
8 months ago
Stenzek 7bc32cdfa2
VulkanDevice: Swap EXT for KHR in structure type
No net difference.
9 months ago
Stenzek a1aa038623
VulkanDevice: Use KHR variants of surface/swapchain maintenance
AMD doesn't support the EXT variant.
9 months ago
Stenzek 69458bd90b
VulkanDevice: Persist instance throughout launches
Testing with AMD on Windows and LLVMPipe on Linux, creating and
destroying a Vulkan instance appears to leak around 20-30MB of memory.

Just keep the thing around for the whole time. Reduces startup time too,
so everyone wins. Unless you're switching renderers all the time, then
you lose a bit of memory.
9 months ago
Stenzek e13b9a0c17
WindowInfo: Extract type into global namespace 9 months ago
Stenzek 5b789be901
GPUDevice: Extract texture format to global namespace
Avoid pulling in gpu_texture.h and indirect includes just for this.
9 months ago
Stenzek c3415c4891
VulkanDevice: Rearrange fields for locality 9 months ago
Stenzek ea8d7b015c
VulkanDevice: Only enable KHR_maintenance5 with dynamic rendering
Required by spec. Only really gets hit by the
disable-on-broken-mobile-driver path.
9 months ago
Stenzek fe8d2e0329
VulkanDevice: Set rasterization order attachment access bit on blend state 9 months ago
Stenzek 7a539ba693
GPUDevice: Reduce GraphicsConfig struct size 9 months ago
Stenzek b10eba419a
VulkanDevice: Disable fbfetch on LLVMpipe
Rendering behaviour with llvmpipe + fbfetch is very strange, it fails
to read push constants sometimes??

Driver bug?
9 months ago
Stenzek e3a044a8a4
Log: Move FastWrite() into macro
That way the format args can be packed inside the conditional,
potentially outside of the hot path.
10 months ago
Stenzek 8dc0b99ee2
VulkanDevice: Fix off-by-one in assertion 11 months ago
Stenzek 9a5e0c9028
ShaderGen: Fix ImGui rendering with Vulkan 11 months ago
Stenzek 9a5eadd86a
GPUDevice: Add SRGBA8 texture format 11 months ago
Stenzek 47c820455d
GPUDevice: Add MultiTextureAndUBOAndPushConstants pipeline layout 11 months ago
Stenzek 6848f07c57
GPUDevice: Combine draw and push constant functions
Prevents us from being in a situation where the push constants haven't
been uploaded because we couldn't allocate a descriptor or something
else which forced a flush.
11 months ago
Stenzek cff3ece1a7
VulkanDevice: Fix incorrect struct type 11 months ago
Stenzek 4f0d35c2ef
VulkanDevice: Make current command buffer lookup consistent 12 months ago
Stenzek de39ff5e9b
GPUDevice: Fix ROV support being disabled
Regression from 6e926041e5
1 year ago
Stenzek 6e926041e5
GPUDevice: Move options to create flags
And add prefer-GLES-context as a config setting, instead of
environment variable.
1 year ago
Stenzek 5e2e39f642
VulkanDevice: Use driver type enum for auto selection 1 year ago
Stenzek e4e57c674d
GPUDevice: Use driver type fields 1 year ago
Stenzek ef26d5cb74
GPUDevice: Backport driver type detection 1 year ago
Stenzek 63adf475d4
VulkanDevice: Avoid defaulting to Vulkan for V3D driver
Image copies are broken.

https://discord.com/channels/695640472202379425/695823554712698962/1392128815689629707
1 year ago
Stenzek 889df1d8be
VulkanDevice: Only reset descriptor pool if used
Save a tiny fraction of overhead.
1 year ago
Stenzek d885446672
VulkanDevice: Fix manual device selection 1 year ago
Stenzek 4d5ba3b4e6
VulkanDevice: Tidy up device/extension initialization
Single pass, avoids enabling extensions that will not be used.
1 year ago
Stenzek 32b3ade56c
VulkanDevice: Allocate N semaphores for N swap chains 1 year ago
Stenzek 611bb8fb4f
VulkanDevice: Remove hardcoded 1.0 API version
Been like this for a couple of months, evidently forgot to remove it
when testing...
1 year ago
Stenzek eca113cd76
GPUDevice: Fix/improve compute shader support
Add multiple texture layout with/without UBO.
1 year ago
Stenzek bbdc6ab4e0
Misc: Fix a bunch of code analysis warnings
Quite a few of these were legitimate.
1 year ago
Stenzek ee1a3b904e
VulkanDevice: Support SDL window type 2 years ago
Stenzek 5913de947f
VulkanDevice: Fix incorrect texture format for A1BGR5 2 years ago
Stenzek c6563a4656
VulkanDevice: Require Vulkan 1.1 for most extension probing
Too much of a headache to deal with these ancient Mali drivers that
support some extensions but not full Vulkan 1.1, and VMA does not
support this scenario.
2 years ago
Stenzek be75a97efe
GPUDevice: Fix swap chain clear colour normalization 2 years ago
Stenzek fb3e290133
GPUDevice: Move exclusive fullscreen to features
Also fixes it not enabling in D3D12 renderer.
2 years ago
Stenzek 389276bb03
GPUDevice: Normalize supports_texture_buffers => texture_buffers 2 years ago