summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Metal
AgeCommit message (Collapse)Author
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
2023-06-28VideoBackends: support multiple compute images for some backends (D3D, OGL, ↵iwubcode
Vulkan)
2023-06-28VideoBackends:Metal: Multi render target supportTellowKrinkle
2023-06-10Merge pull request #11911 from TellowKrinkle/MTLParallelCompilationOatmealDome
VideoBackends:Metal: Enable shouldMaximizeConcurrentCompilation when available
2023-06-09Merge pull request #11699 from Pokechu22/gl-check-maximum-samplesAdmiral H. Curtiss
OpenGL: Check the list of supported AA modes instead of hardcoding
2023-06-09Merge pull request #11859 from iwubcode/backend-multi-outputAdmiral H. Curtiss
VideoBackends: add support to allow rendering to multiple output targets
2023-06-08VideoCommon: Pass WindowSystemInfo to InitBackendInfoPokechu22
2023-06-08VideoBackends:Metal: Enable shouldMaximizeConcurrentCompilation when availableTellowKrinkle
2023-06-08Merge pull request #11901 from Filoppi/add_texture_typesAdmiral H. Curtiss
Video: add R10B10G10A2 and R16G16B16A16F texture types
2023-06-08Video: add R10B10G10A2 and R16G16B16A16F texture types (needed by PR 11850)Filoppi
2023-06-03VideoBackends: add support to allow rendering to multiple output texturesiwubcode
2023-05-28VideoBackends:Metal: Allocate bounding box uploads on a cpu bufferTellowKrinkle
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-04-29Merge pull request #11757 from TellowKrinkle/BCniOSOatmealDome
Enable BCn texture support on iOS where available
2023-04-28VideoBackends:Metal: Enable BCn support on iOSTellowKrinkle
2023-04-18Merge pull request #11759 from TellowKrinkle/MTLPerfQueryFixesOatmealDome
VideoBackends:Metal: Fix perf queries
2023-04-14VideoBackends:Metal: Fix perf queriesTellowKrinkle
Fixes an issue where perf queries could end up including counts from previous queries
2023-04-08VideoBackends:Metal: Use max pixel samplers constantTellowKrinkle
2023-03-14Return quarter value for PerfQuery in all backends.Admiral H. Curtiss
2023-02-10Merge pull request #11523 from degasus/OGL_KHR_subgroupJMC47
VideoBackend/OGL: Prefer KHR_shader_subgroup over NV_shader_thread.
2023-02-09VideoBackend/OGL: Prefer KHR_subgroup over NV_shader_thread.degasus
While the NV extension is totally fine, the KHR extension should be able to support more hardware. For NVIDIA, the hardware either supports both or neither, it just needs a driver from the last two years. For AMD, the drivers from late 2022-12 seems to bring support for the KHR extension. For Intel, the KHR is also supported for some years.
2023-02-09VideoCommon: store the configuration used to create the AbstractPipeline on ↵iwubcode
the pipeline itself, so that it's easy to duplicate pipelines with slightly altered configuration
2023-02-09Merge pull request #11522 from phire/KillRendererWithFireScott Mansell
Kill Renderer (with phire)
2023-02-09Apply suggestions from code reviewScott Mansell
Co-authored-by: Mai <mathew1800@gmail.com> Co-authored-by: BhaaL <bhaalsen@gmail.com> Co-authored-by: iwubcode <iwubcode@users.noreply.github.com>
2023-02-09Lint fixesScott Mansell
2023-02-09Cleanup headersScott Mansell
2023-02-09Lint fixesScott Mansell
2023-02-09Move xfb tracking and IR scaling out of RenderBaseScott Mansell
2023-02-09Refactor ClearRegionScott Mansell
And fix bug where opengl was getting the wrong coordinates
2023-02-02lint: update to clang-format-13Pierre Bourdon
2023-02-01Merge pull request #11501 from iwubcode/abstract_texture_load_specify_layerScott Mansell
VideoBackends: add a way to load data into a specific level AND layer
2023-01-31Also use events for config changedScott Mansell
2023-01-31Implement AbstactGfx for MetalScott Mansell
2023-01-31Move Presenting, Dumping and ImGui out of RendererScott Mansell