mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-03-21 05:20:17 +00:00
* check for too bix texture bindings * implement lod query * print shader stage name * always have fragment input * resolve merge conflicts * fix: lod query * fix: casting texture coords * support non-array memories * use structure types for buffers * implement compute pipeline cache * compute dispatch * improve error message * rebind compute state * bind compute textures * pass local size as an argument to dispatch * implement texture buffers * hack: change vertex index to vertex id * pass support buffer as an argument to every function * return at the end of function * fix: certain missing compute bindings * implement texture base * improve texture binding system * remove useless exception * move texture handle to texture base * fix: segfault when using disposed textures --------- Co-authored-by: Samuliak <samuliak77@gmail.com> Co-authored-by: SamoZ256 <96914946+SamoZ256@users.noreply.github.com>
36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
using Ryujinx.Common.Logging;
|
|
using SharpMetal.Foundation;
|
|
using SharpMetal.Metal;
|
|
using System;
|
|
using System.Runtime.Versioning;
|
|
|
|
namespace Ryujinx.Graphics.Metal
|
|
{
|
|
[SupportedOSPlatform("macos")]
|
|
public class ComputePipelineCache : StateCache<MTLComputePipelineState, MTLFunction, MTLFunction>
|
|
{
|
|
private readonly MTLDevice _device;
|
|
|
|
public ComputePipelineCache(MTLDevice device)
|
|
{
|
|
_device = device;
|
|
}
|
|
|
|
protected override MTLFunction GetHash(MTLFunction function)
|
|
{
|
|
return function;
|
|
}
|
|
|
|
protected override MTLComputePipelineState CreateValue(MTLFunction function)
|
|
{
|
|
var error = new NSError(IntPtr.Zero);
|
|
var pipelineState = _device.NewComputePipelineState(function, ref error);
|
|
if (error != IntPtr.Zero)
|
|
{
|
|
Logger.Error?.PrintMsg(LogClass.Gpu, $"Failed to create Compute Pipeline State: {StringHelper.String(error.LocalizedDescription)}");
|
|
}
|
|
|
|
return pipelineState;
|
|
}
|
|
}
|
|
}
|