OatmealDome
ec9fb08dab
MTLUtil: Remove availability check for iOS 13
...
My personal fork requires minimum iOS 14, so this is not required.
2025-04-21 00:24:58 -04:00
OatmealDome
65f42ee2d2
MTLUtil: Always use MSL 2.3
...
The minimum macOS (and minimum iOS on my personal fork) are enough to allow MSL 2.3 usage without availability checks.
2025-04-21 00:24:58 -04:00
OatmealDome
53b66be47d
MTLUtil: Remove availability checks for macOS 10.15 and iOS 13
2025-04-21 00:24:58 -04:00
OatmealDome
0bc33fb6df
MTLUtil: Remove availability check for macOS 10.15
2025-04-21 00:24:58 -04:00
OatmealDome
dc8865718e
MTLUtil: Remove availability check for macOS 11
2025-04-21 00:24:58 -04:00
Jordan Woyak
33a7283d3b
VideoBackends/Metal: Fix anisotropic filtering handling.
2025-04-01 15:09:21 -05:00
Jordan Woyak
137d1375d4
Enable game-requested anisotropic filtering in Metal backend.
2025-03-17 20:46:24 -05:00
Jordan Woyak
c18c039089
VideoCommon: Move backend_info out of VideoConfig struct.
2025-03-09 01:42:45 -06:00
JMC47
e10821a847
Merge pull request #13104 from TellowKrinkle/MTLLogging
...
VideoBackends:Metal: Log file on failed pipeline compile
2024-10-19 13:03:52 -04:00
Tilka
c1832d17f6
Merge pull request #13117 from mitaclaw/ranges-modernization-9-trivial-find
...
Ranges Algorithms Modernization - Find
2024-10-11 20:27:18 +01:00
mitaclaw
e8d5fb89e4
C++20: Synthesize operator!=
From operator==
...
The inequality operator is automatically generated by the compiler if `operator==` is defined.
2024-10-10 20:23:55 -07:00
mitaclaw
e4fb837f4b
Modernize std::find_if
with ranges
...
In BTEmu.cpp, `std::mem_fn` was not necessary for the predicate to compile.
2024-10-10 15:28:11 -07:00
TellowKrinkle
1454934a07
VideoBackends:Metal: Use standardized C++ features over clang builtins
2024-10-06 02:13:48 -05:00
TellowKrinkle
32fd10bd08
VideoBackends:Metal: Log file on failed pipeline compile
2024-10-06 02:13:48 -05:00
OatmealDome
ae14abb2fa
Merge pull request #13088 from TellowKrinkle/iOSFixes
...
VideoBackends:Metal: Fix bbox on newer iOS devices
2024-10-04 17:32:44 -04:00
TellowKrinkle
7e1a9490c0
VideoBackends:Vulkan: Don't try to present if swapchain acquire failed
2024-10-02 19:22:16 -05:00
TellowKrinkle
70f69c3213
VideoBackends:Metal: subgroup_ops requires Apple7, not Apple6
...
SIMD-scoped permute operations are Apple6, but reduction operations are Apple7
2024-09-30 23:38:23 -05:00
TellowKrinkle
14feaf4ba8
VideoBackends:Metal: Use ios_use_simdgroup_functions with SPIRV-Cross
...
It defaults to trying to emulate simdgroup functions on iOS
2024-09-29 23:58:54 -05:00
Admiral H. Curtiss
5c2f73986a
Merge pull request #12537 from TellowKrinkle/MTLSubgroup
...
VideoCommon: More specific subgroup op bugs
2024-05-21 22:17:22 +02:00
Pokechu22
a3951dc2d7
Fix out of bounds accesses for invalid vertex component formats
...
On all platforms, this would result in out of bounds accesses when getting the component sizes (which uses stuff from VertexLoader_Position.h/VertexLoader_TextCoord.h/VertexLoader_Normal.h). On platforms other than x64 and ARM64, this would also be out of bounds accesses when getting function pointers for the non-JIT vertex loader (in VertexLoader_Position.cpp etc.). Usually both of these would get data from other entries in the same multi-dimensional array, but the last few entries would be truly out of bounds. This does mean that an out of bounds function pointer can be called on platforms that don't have a JIT vertex loader, but it is limited to invalid component formats with values 5/6/7 due to the size of the bitfield the formats come from, so it seems unlikely that this could be exploited in practice.
This issue affects a few games; Def Jam: Fight for New York (https://bugs.dolphin-emu.org/issues/12719 ) and Fifa Street are known to be affected.
I have not done any hardware testing for this PR specifically, though I *think* I previously determined that at least a value of 5 behaves the same as float (4). That's what I implemented in any case. I did previously determine that both Def Jam: Fight for New York and Fifa Street use an invalid normal format, but don't actually have lighting enabled when that normal vector is used, so it doesn't change rendering in practice.
The color component format also has two invalid values, but VertexLoader_Color.h/.cpp do check for those invalid ones and return a default value instead of doing an out of bounds access.
2024-04-04 12:50:34 -07:00
Sam Belliveau
153d0201a8
Add HDR to Metal
2024-03-10 03:25:33 -04:00
TellowKrinkle
b7a451fc87
VideoCommon: Post to analytics when bug is overridden
2024-01-28 23:24:23 -06:00
TellowKrinkle
99f0c3fa01
VideoCommon: Add ability for backends to override bugs
2024-01-28 23:24:22 -06:00
TellowKrinkle
463269f704
VideoBackends:Multiple: Split up BUG_BROKEN_SUBGROUP_OPS
...
We now use subgroup ops for more than just a minor performance optimization
2024-01-28 23:20:39 -06:00
TellowKrinkle
6243e50b21
VideoBackends:MTL: Use SPIRV 1.5
...
Allows non-constant simd broadcast, which is used by the ascii art shader
2024-01-27 18:47:13 -06:00
Mai
bcd74a81a9
Merge pull request #12370 from iwubcode/more_samplers
...
VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16
2023-12-17 14:50:23 -05:00
Mai
f589c04aa7
Merge pull request #12372 from iwubcode/texture_usage_flag
...
VideoBackends / VideoCommon: add type enum to dictate how the texture is used; support texture 2d
2023-12-17 14:40:39 -05:00
iwubcode
12dd15c8dd
VideoBackends / VideoCommon: add type enum to dictate whether a texture is a 2D texture, a texture array, or a cube map; support 2D texture type across backends
...
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-12-15 11:06:02 -06:00
OatmealDome
438c48912b
MTLStateTracker: Increase fragment buffer array size to 3
2023-12-14 14:17:07 -05:00
iwubcode
ac862b04ab
VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16, this allows us to support more samplers than the native Wii/GC
2023-12-10 18:14:02 -06:00
Lioncash
5f6c76af51
VideoCommon: Use std::span for BoundingBox::Write()
...
Crosses off a lingering TODO.
Also amends a few nearby cases where a u32 cast was being repromoted to
size_t.
2023-12-09 16:33:21 -05:00
TellowKrinkle
394dd02d0a
VideoBackends:Metal: Support multiple compute textures
2023-11-29 18:45:11 -06:00
TellowKrinkle
a399dc43a1
VideoBackends:Metal: Align utility uniform sizes
...
Prevents complaining from validation layers
2023-11-29 18:45:11 -06:00
Pierre de La Morinerie
0ecfaf3b9e
Metal: enable concurrent compilation only if available
...
Bug: https://bugs.dolphin-emu.org/issues/13404
On macOS 13.6 / Intel HD 5000, Dolphin crashes with this message:
> -[MTLIGAccelDevice setShouldMaximizeConcurrentCompilation:]: unrecognized selector
This should be available on all macOS 13.3+ systems – but when using OCLP drivers,
some devices use an older version of Metal.framework, which doesn't expose the selector.
This concerns Intel Ivy Bridge, Haswell and Nvidia Kepler when using OCLP on macOS 13.3
or newer.
(See
34676702f4/docs/PATCHEXPLAIN.md (L354C1-L354C83)
)
As the behavior is an optional optimization anyway, perform a dynamic
detection to avoid crashing if the feature is not available.
2023-11-24 15:09:25 +01:00
iwubcode
713454b7d7
Metal: update binding mapping for SPRV due to change for custom shader uniforms in other backends (Metal is still not supported)
...
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-10-06 02:17:43 -05:00
OatmealDome
3e9c9a3e8d
Merge pull request #12004 from TellowKrinkle/MetalMultiTarget
...
VideoBackends:Metal: Multi render target support
2023-09-03 23:31:38 -04:00
iwubcode
3627398cf5
VideoBackends: support multiple compute images for some backends (D3D, OGL, Vulkan)
2023-06-28 17:15:31 -05:00
TellowKrinkle
fc4036af80
VideoBackends:Metal: Multi render target support
2023-06-28 00:11:37 -05:00
OatmealDome
7752e247f7
Merge pull request #11911 from TellowKrinkle/MTLParallelCompilation
...
VideoBackends:Metal: Enable shouldMaximizeConcurrentCompilation when available
2023-06-10 19:39:24 +02:00
Admiral H. Curtiss
8f51a9d2d8
Merge pull request #11699 from Pokechu22/gl-check-maximum-samples
...
OpenGL: Check the list of supported AA modes instead of hardcoding
2023-06-09 15:07:07 +02:00
Admiral H. Curtiss
092773ad0c
Merge pull request #11859 from iwubcode/backend-multi-output
...
VideoBackends: add support to allow rendering to multiple output targets
2023-06-09 13:40:21 +02:00
Pokechu22
c63f0f37cd
VideoCommon: Pass WindowSystemInfo to InitBackendInfo
2023-06-08 22:07:39 -07:00
TellowKrinkle
e7f4b7679b
VideoBackends:Metal: Enable shouldMaximizeConcurrentCompilation when available
2023-06-08 18:57:41 -05:00
Admiral H. Curtiss
3dbdf0472d
Merge pull request #11901 from Filoppi/add_texture_types
...
Video: add R10B10G10A2 and R16G16B16A16F texture types
2023-06-08 15:28:15 +02:00
Filoppi
cdc53c046b
Video: add R10B10G10A2 and R16G16B16A16F texture types (needed by PR 11850)
2023-06-08 03:17:20 +03:00
iwubcode
834f8f7b5c
VideoBackends: add support to allow rendering to multiple output textures
2023-06-03 14:52:31 -05:00
TellowKrinkle
0ee12b6164
VideoBackends:Metal: Allocate bounding box uploads on a cpu buffer
...
AMD Metal drivers have a goofy bug where the bbox buffer stops being coherent with the cpu if you copy to it from a private (gpu) buffer and don't do anything else with it in that command buffer.
2023-05-28 17:08:08 -05:00
OatmealDome
28f1a4cec1
Merge pull request #11757 from TellowKrinkle/BCniOS
...
Enable BCn texture support on iOS where available
2023-04-29 08:54:18 +02:00
TellowKrinkle
9cc3ba6fc6
VideoBackends:Metal: Enable BCn support on iOS
2023-04-28 20:35:54 -05:00
OatmealDome
8aae296d4e
Merge pull request #11759 from TellowKrinkle/MTLPerfQueryFixes
...
VideoBackends:Metal: Fix perf queries
2023-04-18 22:15:50 +02:00