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.MemoryManager.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.MemoryManager.Write(uniformBuffer.Address.Pack() + (uint)uniformBuffer.Offset, MemoryMarshal.Cast(data)); state.SetUniformBufferOffset(uniformBuffer.Offset + data.Length * 4); _context.AdvanceSequence(); } } }