Commit Graph
140 Commits
Author SHA1 Message Date
Stenzek 18e2aa1615 Deps: Update to 20261010 2026-10-10 21:47:39 +10:00
Stenzek 187ad8f008 GPUDevice: Remove multiple sources of truth for shader dump directory 2026-09-21 14:25:49 +10:00
Stenzek 7951eba8a0 GPUDevice: Support looking up cached shaders and opaque keys 2026-09-15 12:54:31 +10:00
Stenzek 5420d699e2 GPUDevice: Use ObjectArchive for shader cache 2026-09-15 12:54:31 +10:00
Stenzek 3ccc0c45f4 Util: Centralize dynlib loading 2026-09-06 20:57:25 +10:00
Stenzek fa77cd4853 CMake: Don't unnecessarily bundle
Use RPATH when not creating a bundle.
2026-09-06 20:57:24 +10:00
Stenzek 31948bcb52 Misc: Use static operator() 2026-09-05 18:11:30 +10:00
Stenzek b25e2358b8 GPUDevice: Don't immediately trim textures queued in same frame
They might be used for ImGui rendering.
2026-08-19 00:38:57 +10:00
Stenzek 2225d366b2 GPUDevice: Pack shaderc/spirv-cross function pointers together 2026-05-16 18:52:57 +10:00
Stenzek 16d1dcb84d GPUDevice: Use ResolveSymbols() 2026-05-16 14:23:01 +10:00
Stenzek a2a12da4be GPUDevice: Pack local state in struct 2026-05-16 13:50:55 +10:00
Stenzek 29ca1cbc83 GPUDevice: Fix incorrect log message 2026-04-29 22:04:28 +10:00
Stenzek 06708e0b54 GPUDevice: Fix false error logged with OpenGL 2026-03-14 02:07:06 +10:00
Stenzek 98e9db7fbb GPUDevice: Drop SDL window type
Never worked properly anyway. Couldn't change modes, since releasing the
window destroyed the context, didn't support multi-window, etc.
2026-03-13 18:06:03 +10:00
Stenzek 401a0ba4c1 GPUTexture: Don't assemble vector in GetSizeVec()
Use a load/extend instead. Turns into movd+pmovzxwd.
2026-03-03 19:19:05 +10:00
Stenzek cdf6d5bd29 CI: Use prebuilt dependencies
Decouple from the repository. Less CI time, and faster building of older
commits.
2026-02-25 13:07:02 +10:00
Stenzek d5eb3e10ea GPUDevice: Enumerate fullscreen modes if using SDL 2026-02-16 22:43:21 +10:00
Stenzek df757371e6 WindowInfo: Move prerotation enum to global scope
Enable forward declarations.
2026-01-27 13:56:38 +10:00
Stenzek d9e442e5c8 GPUDevice: Don't duplicate fullscreen modes
Also sort the list while we're at it.
2026-01-23 21:22:41 +10:00
Stenzek 525dba5c52 GPUDevice: Use sorted array for storing shader cache entries
Saves hundreds of heap allocations for something that is more often read
rather than write.
2026-01-18 19:50:16 +10:00
Stenzek ff0ad1b176 System: Rewrite present skipping
Now can operate in "only if vsync blocks" mode.

Significantly improves frame pacing for fast forward speeds.
2026-01-18 18:24:48 +10:00
Stenzek 71f46cf8c1 GPUThread: Update core thread window size on core thread
Avoid the barrier when reading it.
2026-01-18 16:51:07 +10:00
Stenzek abed81d53e GPUDevice: Use present instead of current time for skip logic
Fixes erratic frame times when fast forwarding and below the
screen refresh rate.
2026-01-18 13:29:00 +10:00
Stenzek 2a8256673a GPUDevice: Use separate variables for last/next present time
Fixes erratic frame rates in Big Picture mode.

Regression from 09926a3769.
2026-01-17 23:07:24 +10:00
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.
2026-01-14 22:03:15 +10:00
Stenzek 213d3efdf7 GPUDevice: Unload persistent libraries on shutdown 2025-12-27 23:02:55 +10:00
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.
2025-12-23 16:22:33 +10:00
Stenzek 5b789be901 GPUDevice: Extract texture format to global namespace
Avoid pulling in gpu_texture.h and indirect includes just for this.
2025-12-23 16:10:45 +10:00
Stenzek 7a539ba693 GPUDevice: Reduce GraphicsConfig struct size 2025-12-17 01:36:09 +10:00
Stenzek 1cc5fe081c ImGuiManager: Remove duration parameter from OSD messages
Use a type instead.
2025-11-24 21:02:04 +10:00
Stenzek 08317d9478 GPUDevice: Set fixed names for UBO/push constants in SPV transpiling
Ensures that name-based binding in GL succeeds.
2025-11-01 16:30:07 +10:00
Stenzek 4729e22573 GPUDevice: Handle non-contiguous texture bindings in SPV transpiling 2025-11-01 16:30:07 +10:00
Stenzek b43111f36e GPUDevice: Remap input attributes when transpiling to HLSL 2025-11-01 16:30:06 +10:00
Stenzek 916b23f85c GPUDevice: Use separate buffer for push constants 2025-11-01 16:30:06 +10:00
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.
2025-11-01 16:30:06 +10:00
Stenzek 529da22ef5 System: Use new OSD message variants 2025-11-01 01:44:25 +10:00
Stenzek 05701fef41 GPUDevice: Make dyn libs public 2025-10-29 21:21:32 +10:00
Stenzek b858fe5e94 GPUDevice: Display OSD message if debug settings are enabled 2025-10-29 21:21:32 +10:00
Stenzek 6e926041e5 GPUDevice: Move options to create flags
And add prefer-GLES-context as a config setting, instead of
environment variable.
2025-08-20 23:07:56 +10:00
Stenzek f21ab0b70a GPUDevice: Fix ARM GPU detection 2025-07-10 19:36:14 +10:00
Stenzek ef26d5cb74 GPUDevice: Backport driver type detection 2025-07-09 22:17:14 +10:00
Stenzek 9112e38f4e GPUDevice: Fix incorrect close call during symbol lookup
Not actually hit since all symbols should be present, but just in
case...
2025-06-13 16:29:06 +10:00
Stenzek df2a5a5e67 ImGuiManager: Move drawing out of GPUDevice 2025-04-19 16:21:29 +10:00
Stenzek bbdc6ab4e0 Misc: Fix a bunch of code analysis warnings
Quite a few of these were legitimate.
2025-04-03 19:29:03 +10:00
Stenzek b798d8f1aa Settings: Add option for enabling GPU-based validation 2025-03-30 23:20:39 +10:00
Stenzek e6e6313219 FullscreenUI: Add offscreen-based screen fade 2025-03-30 15:22:46 +10:00
Stenzek 6eddc0b982 GPUDevice: Don't allow copy-resize between different formats
That's a spec violation.
2025-03-22 01:11:23 +10:00
Stenzek 231ba050a2 GPUThread: Switch to borderless if exclusive fullscreen fails
Better than ending up windowed.
2025-01-29 18:20:41 +10:00
Stenzek fb3e290133 GPUDevice: Move exclusive fullscreen to features
Also fixes it not enabling in D3D12 renderer.
2025-01-21 19:12:44 +10:00
Stenzek c03b6f3d84 Misc: Replace isspace() usage with StringUtil::IsWhitespace()
Avoids the UB if the character is negative (e.g. reading from a binary
file), as well as locale-specific rubbish.
2025-01-19 21:29:14 +10:00