/// <summary> /// Reads EDID data of an output /// </summary> /// <param name="output">The GPU output to read EDID information for</param> /// <returns>A byte array containing EDID data</returns> public byte[] ReadEDIDData(GPUOutput output) { try { var data = new byte[0]; var identification = 0; var totalSize = EDIDV3.MaxDataSize; for (var offset = 0; offset < totalSize; offset += EDIDV3.MaxDataSize) { var edid = GPUApi.GetEDID(Handle, output.OutputId, offset, identification); identification = edid.Identification; totalSize = edid.TotalSize; var edidData = edid.Data; Array.Resize(ref data, data.Length + edidData.Length); Array.Copy(edidData, 0, data, data.Length - edidData.Length, edidData.Length); } return(data); } catch (NVIDIAApiException ex) { if (ex.Status == Status.IncompatibleStructureVersion) { return(GPUApi.GetEDID(Handle, output.OutputId).Data); } throw; } }
/// <summary> /// Writes EDID data of an output /// </summary> /// <param name="output">The GPU output to write EDID information for</param> /// <param name="edidData">A byte array containing EDID data</param> public void WriteEDIDData(GPUOutput output, byte[] edidData) { WriteEDIDData((uint)output.OutputId, edidData); }
/// <summary> /// Get the display device connected to a specific GPU output /// </summary> /// <param name="output">The GPU output to get connected display device for</param> /// <returns>DisplayDevice connected to the specified GPU output</returns> public DisplayDevice GetDisplayDeviceByOutput(GPUOutput output) { return(new DisplayDevice(GPUApi.GetDisplayIdFromGPUAndOutputId(Handle, output.OutputId))); }