summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Metal
AgeCommit message (Collapse)Author
2026-04-20Replace `find(x) != npos` with `contains(x)` - CoreDr. Dystopia
2026-03-21DriverDetails: Use macOS version as the driver versionOatmealDome
2026-03-03Metal: Always run endEncoding on command encodersSimonx22
Fixes a macOS Metal crash when stopping immediately after boot starts. m_upload_encoder and m_texture_upload_encoder could be dealloc'd during shutdown before endEncoding could be called, which causes a Metal assertion failure. Co-authored-by: OatmealDome <julian@oatmealdome.me>
2026-01-17Fix various typos and spelling mistakesSintendo
2026-01-04Metal: Move ObjectCache constructor and destructorDentomologist
Move the constructor and destructor after the definition of the class `Internal`. This fixes an error generated by Clang from the destructor of `std::unique_ptr<Internal>` when setting the standard version to c++23: `invalid application of 'sizeof' to an incomplete type 'Metal::ObjectCache::Internal'`.
2025-11-02Merge pull request #13975 from iwubcode/shader_includesJMC47
VideoBackends / VideoCommon: add support for specifying include files in shader code
2025-10-26VideoBackends / VideoCommon: add support for specifying include files in ↵iwubcode
shader code
2025-10-24CMake: Fix bundled glslangTellowKrinkle
2025-10-13VideoBackend: Rename GetName to GetConfigNameDentomologist
Make the function name more explicit and a better match for GetDisplayName. Change NAME to CONFIG_NAME while I'm at it.
2025-09-27Externals: Update glslang to 16.0.0 and allow using system glslangJoshua Vandaële
2025-09-08Fix broken imgui text in Metal backend.TryTwo
2025-08-23VideoBackends / VideoCommon: rename member variables in RenderState to be ↵iwubcode
consistent
2025-07-12Fix various warningsJoshua Vandaële
2025-04-23 linter: Add and apply new formatting rulesJoshua Vandaële
New rules: `InsertNewlineAtEOF: true` `RemoveSemicolon: true` `RequiresClausePosition: WithPreceding`
2025-04-21MTLUtil: Remove availability check for iOS 13OatmealDome
My personal fork requires minimum iOS 14, so this is not required.
2025-04-21MTLUtil: Always use MSL 2.3OatmealDome
The minimum macOS (and minimum iOS on my personal fork) are enough to allow MSL 2.3 usage without availability checks.
2025-04-21MTLUtil: Remove availability checks for macOS 10.15 and iOS 13OatmealDome
2025-04-21MTLUtil: Remove availability check for macOS 10.15OatmealDome
2025-04-21MTLUtil: Remove availability check for macOS 11OatmealDome
2025-04-01VideoBackends/Metal: Fix anisotropic filtering handling.Jordan Woyak
2025-03-17Enable game-requested anisotropic filtering in Metal backend.Jordan Woyak
2025-03-09VideoCommon: Move backend_info out of VideoConfig struct.Jordan Woyak
2024-10-19Merge pull request #13104 from TellowKrinkle/MTLLoggingJMC47
VideoBackends:Metal: Log file on failed pipeline compile
2024-10-11Merge pull request #13117 from mitaclaw/ranges-modernization-9-trivial-findTilka
Ranges Algorithms Modernization - Find
2024-10-10C++20: Synthesize `operator!=` From `operator==`mitaclaw
The inequality operator is automatically generated by the compiler if `operator==` is defined.
2024-10-10Modernize `std::find_if` with rangesmitaclaw
In BTEmu.cpp, `std::mem_fn` was not necessary for the predicate to compile.
2024-10-06VideoBackends:Metal: Use standardized C++ features over clang builtinsTellowKrinkle
2024-10-06VideoBackends:Metal: Log file on failed pipeline compileTellowKrinkle
2024-10-04Merge pull request #13088 from TellowKrinkle/iOSFixesOatmealDome
VideoBackends:Metal: Fix bbox on newer iOS devices
2024-10-02VideoBackends:Vulkan: Don't try to present if swapchain acquire failedTellowKrinkle
2024-09-30VideoBackends:Metal: subgroup_ops requires Apple7, not Apple6TellowKrinkle
SIMD-scoped permute operations are Apple6, but reduction operations are Apple7
2024-09-29VideoBackends:Metal: Use ios_use_simdgroup_functions with SPIRV-CrossTellowKrinkle
It defaults to trying to emulate simdgroup functions on iOS
2024-05-21Merge pull request #12537 from TellowKrinkle/MTLSubgroupAdmiral H. Curtiss
VideoCommon: More specific subgroup op bugs
2024-04-04Fix out of bounds accesses for invalid vertex component formatsPokechu22
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-03-10Add HDR to MetalSam Belliveau
2024-01-28VideoCommon: Post to analytics when bug is overriddenTellowKrinkle
2024-01-28VideoCommon: Add ability for backends to override bugsTellowKrinkle
2024-01-28VideoBackends:Multiple: Split up BUG_BROKEN_SUBGROUP_OPSTellowKrinkle
We now use subgroup ops for more than just a minor performance optimization
2024-01-27VideoBackends:MTL: Use SPIRV 1.5TellowKrinkle
Allows non-constant simd broadcast, which is used by the ascii art shader
2023-12-17Merge pull request #12370 from iwubcode/more_samplersMai
VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16
2023-12-17Merge pull request #12372 from iwubcode/texture_usage_flagMai
VideoBackends / VideoCommon: add type enum to dictate how the texture is used; support texture 2d
2023-12-15VideoBackends / VideoCommon: add type enum to dictate whether a texture is a ↵iwubcode
2D texture, a texture array, or a cube map; support 2D texture type across backends Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-12-14MTLStateTracker: Increase fragment buffer array size to 3OatmealDome
2023-12-10VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16, ↵iwubcode
this allows us to support more samplers than the native Wii/GC
2023-12-09VideoCommon: Use std::span for BoundingBox::Write()Lioncash
Crosses off a lingering TODO. Also amends a few nearby cases where a u32 cast was being repromoted to size_t.
2023-11-29VideoBackends:Metal: Support multiple compute texturesTellowKrinkle
2023-11-29VideoBackends:Metal: Align utility uniform sizesTellowKrinkle
Prevents complaining from validation layers
2023-11-24Metal: enable concurrent compilation only if availablePierre de La Morinerie
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 https://github.com/dortania/OpenCore-Legacy-Patcher/blob/34676702f494a2a789c514cc76dba19b8b7206b1/docs/PATCHEXPLAIN.md?plain=1#L354C1-L354C83) As the behavior is an optional optimization anyway, perform a dynamic detection to avoid crashing if the feature is not available.
2023-10-06Metal: update binding mapping for SPRV due to change for custom shader ↵iwubcode
uniforms in other backends (Metal is still not supported) Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
2023-09-03Merge pull request #12004 from TellowKrinkle/MetalMultiTargetOatmealDome
VideoBackends:Metal: Multi render target support