| Age | Commit message (Collapse) | Author |
|
|
|
|
|
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>
|
|
|
|
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'`.
|
|
VideoBackends / VideoCommon: add support for specifying include files in shader code
|
|
shader code
|
|
|
|
Make the function name more explicit and a better match for
GetDisplayName.
Change NAME to CONFIG_NAME while I'm at it.
|
|
|
|
|
|
consistent
|
|
|
|
New rules:
`InsertNewlineAtEOF: true`
`RemoveSemicolon: true`
`RequiresClausePosition: WithPreceding`
|
|
My personal fork requires minimum iOS 14, so this is not required.
|
|
The minimum macOS (and minimum iOS on my personal fork) are enough to allow MSL 2.3 usage without availability checks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VideoBackends:Metal: Log file on failed pipeline compile
|
|
Ranges Algorithms Modernization - Find
|
|
The inequality operator is automatically generated by the compiler if `operator==` is defined.
|
|
In BTEmu.cpp, `std::mem_fn` was not necessary for the predicate to compile.
|
|
|
|
|
|
VideoBackends:Metal: Fix bbox on newer iOS devices
|
|
|
|
SIMD-scoped permute operations are Apple6, but reduction operations are Apple7
|
|
It defaults to trying to emulate simdgroup functions on iOS
|
|
VideoCommon: More specific subgroup op bugs
|
|
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.
|
|
|
|
|
|
|
|
We now use subgroup ops for more than just a minor performance optimization
|
|
Allows non-constant simd broadcast, which is used by the ascii art shader
|
|
VideoBackends / VideoCommon: update max pixel shader samplers from 8 to 16
|
|
VideoBackends / VideoCommon: add type enum to dictate how the texture is used; support texture 2d
|
|
2D texture, a texture array, or a cube map; support 2D texture type across backends
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
|
|
|
|
this allows us to support more samplers than the native Wii/GC
|
|
Crosses off a lingering TODO.
Also amends a few nearby cases where a u32 cast was being repromoted to
size_t.
|
|
|
|
Prevents complaining from validation layers
|
|
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.
|
|
uniforms in other backends (Metal is still not supported)
Co-authored-by: TellowKrinkle <tellowkrinkle@gmail.com>
|
|
VideoBackends:Metal: Multi render target support
|