using Ryujinx.Graphics.Gpu.State;
using System;
using System.Runtime.InteropServices;
namespace Ryujinx.Graphics.Gpu.Engine
{
partial class Methods
{
///
/// Updates the uniform buffer data with inline data.
///
/// Current GPU state
/// New uniform buffer data word
private void UniformBufferUpdate(GpuState state, int argument)
{
var uniformBuffer = state.Get(MethodOffset.UniformBufferState);
_context.MemoryAccessor.Write(uniformBuffer.Address.Pack() + (uint)uniformBuffer.Offset, argument);
state.SetUniformBufferOffset(uniformBuffer.Offset + 4);
_context.AdvanceSequence();
}
///
/// Updates the uniform buffer data with inline data.
///
/// Current GPU state
/// Data to be written to the uniform buffer
public void UniformBufferUpdate(GpuState state, ReadOnlySpan data)
{
var uniformBuffer = state.Get(MethodOffset.UniformBufferState);
_context.MemoryAccessor.Write(uniformBuffer.Address.Pack() + (uint)uniformBuffer.Offset, MemoryMarshal.Cast(data));
state.SetUniformBufferOffset(uniformBuffer.Offset + data.Length * 4);
_context.AdvanceSequence();
}
}
}