Commit Graph

1350 Commits

Author SHA1 Message Date
Henrik Rydgård
285ffbaa52 Unify CopyDisplayToOutput 2023-02-25 14:42:15 +01:00
Henrik Rydgård
18999c3687 Create the GPUCommonHW class. 2023-02-25 14:42:10 +01:00
Henrik Rydgård
0d57f3beee Unify GPUCommon::DoState. 2023-02-25 12:21:03 +01:00
Henrik Rydgård
609a8f6d36 Unify ExecuteOp between the accelerated backends 2023-02-25 12:21:03 +01:00
Henrik Rydgård
ed03348c65 Unify PreExecuteOp, keep the soft GPU as a special case 2023-02-25 12:21:03 +01:00
Henrik Rydgård
da561aa9de Unify CheckFlushOp 2023-02-25 12:21:03 +01:00
Henrik Rydgård
30120560ab Include file cleanup in framebuffer managers 2023-02-25 12:21:00 +01:00
Henrik Rydgård
1b5148bb6c Remove kinda-duplicate function. 2023-02-24 23:54:04 +01:00
Henrik Rydgård
d426ce5118 Clear depth buffers after changing depth rounding mode.
And thus change of depth buffer scale/offset.

Previously, old depth buffers with values that now are out of range
could stick around, causing #16941. This clears them to the expected 0
value, which helps Outrun. Ideally we should convert depth buffers to
the new format, but if we can get away without that, that's also nice.

This is enough for #16941.
2023-02-10 10:03:14 +01:00
Henrik Rydgård
d7605c6877 Use dedicated threads for the shader object creation. Bypasses the deadlock possibility. 2023-02-01 11:15:33 +01:00
Henrik Rydgård
6b0903f566 Add facility to run tasks on dedicated threads using the ThreadManager interface.
Useful for things that should be run ASAP even if the threadpool is full,
at a small extra cost. (Not recommended for very small tasks).

Considering using this to resolve the deadlocks in #16802.
2023-01-31 11:07:40 +01:00
Unknown W. Brackets
1c8bedbed9 Vulkan: Align for all Apple devices, not just M1. 2023-01-18 07:28:12 -08:00
Unknown W. Brackets
8d4007ce3f Vulkan: Force align verts to 4 on Apple devices. 2023-01-18 07:24:18 -08:00
Henrik Rydgård
784e8ab782 Fix a race condition during Vulkan shader cache load.
Could lead to unnecessary pipelines being created.
2023-01-13 10:35:04 +01:00
Henrik Rydgård
1cfc7b11b8 Only force indexed draws on PowerVR / Vulkan. 2023-01-11 22:59:30 +01:00
Henrik Rydgård
beed3c06d2 Vulkan: Don't use non-indexed draws for pure tristrips and fans, creates extra pipelines.
Bump shader cache version
2023-01-11 22:57:23 +01:00
Henrik Rydgård
3d376b0ab7 Remove the rather redundant DoTexture flag from vshaders.
Slightly reduces the number of unique vertex shaders but doesn't do much
for the pipeline count, as the fragment shader has a tex flag. Still
worth doing for the simplification.
2023-01-11 14:16:46 +01:00
Henrik Rydgård
088d0c39dc Remove the FS_TEXTURE_AT_OFFSET fragment shader flag 2023-01-10 12:37:21 +01:00
Henrik Rydgård
c7c48abb37 Switch the 2x flag to a uniform 2023-01-10 12:36:28 +01:00
Henrik Rydgård
d4ce134292 Shader generator: Move FS_TEX_ALPHA to a uniform bool.
Part of #16567
2023-01-10 09:42:54 +01:00
Henrik Rydgård
7672556e5c Better pipeline descriptions in shader viewer (shorter in overview, longer after click) 2023-01-09 11:22:35 +01:00
Henrik Rydgård
cf52324e9e Vulkan: Fix pipeline cache clearing.
Extracted from #16759 and bugfixed. Fixes a leak of Vulkan pipelines.

I guess another way would be to queue the variants for destruction at
the same time as we queue the callback, but I like this better.
2023-01-09 09:49:55 +01:00
Unknown W. Brackets
06045b9459 GLES: Cache equal flag, load from cache. 2023-01-05 18:24:29 -08:00
Unknown W. Brackets
de3c2783f4 Vulkan: Reload shaders if use flags change. 2023-01-05 18:24:29 -08:00
Unknown W. Brackets
23d254ec21 Vulkan: Clear items as they're loaded from cache.
It's possible we could hit a double insert assert since we're on a
background thread.
2023-01-05 18:24:29 -08:00
Unknown W. Brackets
3f20562b9f Vulkan: Store saw equal depth flag in cache. 2023-01-05 18:24:29 -08:00
Henrik Rydgård
13d07f6ff4 Bump shader cache version 2023-01-05 13:12:11 +01:00
Henrik Rydgård
85e6b4e592 Increment numFlushes near the other stat increments
Might be better for the cache, heh.
2023-01-04 17:10:56 +01:00
Henrik Rydgård
06d69e9953 Bump shader cache version 2023-01-04 11:10:38 +01:00
Henrik Rydgård
18d00b0718 Remove lmode flag bit from fragment and geometry shaders 2023-01-04 11:04:23 +01:00
Henrik Rydgård
10dee90c83
Merge pull request #16628 from hrydgard/remove-fog-fshader-flag
Make fog-enable driven by uniform instead of fragment shader flag bit
2023-01-04 11:01:19 +01:00
Henrik Rydgård
34c11c8acf
Merge pull request #16584 from hrydgard/vertex-format-vshader-id
Pass in the vertex decoder to the shader ID computation
2023-01-04 10:26:18 +01:00
Henrik Rydgård
3dbe69f585 Cache version 2023-01-04 10:17:59 +01:00
Henrik Rydgård
9ceffa284d Vulkan: Add robustness against bad shader module compiles 2022-12-31 12:21:53 +01:00
Henrik Rydgård
d2feb444b7 Bunch of defensive programming around shaders 2022-12-31 12:21:51 +01:00
Henrik Rydgård
f069de2dd2 Pass the vertex decoder into the vertex shader IDs generator
Instead of just the vertex type.

This will allow things like the vertex decoder supplying defaults, in
order to reduce the number of unique vertex shaders at the cost of
slightly larger vertex data.

This doesn't actually do that yet though, it's just a refactor that can
be done separately.

Part of #16567
2022-12-30 22:57:05 +01:00
Unknown W. Brackets
49f6c461ad Reporting: Fix some header includes.
Particularly in Common, avoid including Core/Reporting.h.
2022-12-27 14:58:20 -08:00
Unknown W. Brackets
0496ca32ff Global: Cleanup some minor includes and typos. 2022-12-27 08:33:07 -08:00
Unknown W. Brackets
e5dbdba638 GPU: Keep prevPrim_ set on flush.
For continuing previous verts, see #16612.  We still don't handle these
quite accurately (outside software rendering), but this should be better.
2022-12-18 07:14:19 -08:00
Henrik Rydgård
6bb0115e73 Quickfix for texture uploads after #16599 2022-12-16 14:57:52 +01:00
Henrik Rydgård
26884150d7 Remove the 0th descriptor set, move everything else back to 0 2022-12-16 13:05:40 +01:00
Henrik Rydgård
11366a2ded Don't refer directly to g_Config.iMultiSampleLevel, it can contain unsupported modes. 2022-12-14 16:43:37 +01:00
Henrik Rydgård
41e5b1e95a Plumb through multiSampleLevel so PipelineManager doesn't read config. 2022-12-14 16:43:37 +01:00
Unknown W. Brackets
8c1a247b7b Vulkan: Cleanup some logspam. 2022-12-13 18:29:23 -08:00
Henrik Rydgård
00ebf4957f Make shader cache loading a bit more lenient. 2022-12-13 23:06:57 +01:00
Henrik Rydgård
65c721dce6 Rename Save/LoadCache to Save/LoadPipelineCache 2022-12-13 19:18:20 +01:00
Henrik Rydgård
ee19db091f Add accessor for UseFlags 2022-12-13 18:27:45 +01:00
Henrik Rydgård
313a2b1327 Improve shader cache logging 2022-12-13 16:35:02 +01:00
Henrik Rydgård
427cae67cb Enable some wordwrapping in shader viewer, show variant bitmask 2022-12-13 16:28:59 +01:00
Henrik Rydgård
80a0c97e9e Drop the input attachment descriptor from the layout when unused 2022-12-13 15:17:39 +01:00