public void BindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint firstSet, List <DescriptorSet> descriptorSets, List <uint> dynamicOffsets) { unsafe { int dynamicOffsetCount = 0; if (dynamicOffsets != null) { dynamicOffsetCount = dynamicOffsets.Count; } var sets = stackalloc VkDescriptorSet[descriptorSets.Count]; var offsets = stackalloc uint[dynamicOffsetCount]; for (int i = 0; i < descriptorSets.Count; i++) { sets[i] = descriptorSets[i].Native; } for (int i = 0; i < dynamicOffsetCount; i++) { offsets[i] = dynamicOffsets[i]; } Device.Commands.cmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout.Native, firstSet, (uint)descriptorSets.Count, (IntPtr)sets, (uint)dynamicOffsetCount, (IntPtr)offsets); } }
public Pipeline(Device dev, VkPipelineBindPoint type, PipelineLayout layout, VkPipeline pipeline) { PipelineType = type; Device = dev; Layout = layout; Handle = pipeline; }
public void BindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint firstSet, DescriptorSet descriptorSet) { unsafe { VkDescriptorSet set = descriptorSet.Native; Device.Commands.cmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout.Native, firstSet, 1, (IntPtr)(&set), 0, IntPtr.Zero); } }
public static void vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { VkPreconditions.CheckNull(commandBuffer, nameof(commandBuffer)); VkPreconditions.CheckNull(pipeline, nameof(pipeline)); GetCommandBuffer(commandBuffer).CmdBindPipeline(pipelineBindPoint, pipeline); }
public unsafe void BindDescriptorSets( Pipeline pipeline, List <DescriptorSet> descriptorSets, VkPipelineBindPoint bindPoint = VkPipelineBindPoint.Graphics ) { var sets = new NativeList <VkDescriptorSet>(); if (descriptorSets != null) { foreach (var set in descriptorSets) { sets.Add(set.Handle); } } if (sets.Count > 0) { VulkanNative.vkCmdBindDescriptorSets( _handle, bindPoint, pipeline.Layout, 0, sets.Count, (VkDescriptorSet *)sets.Data.ToPointer(), 0, null ); } }
public static void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint firstSet, ReadOnlySpan <VkDescriptorSet> descriptorSets) { fixed(VkDescriptorSet *descriptorSetsPtr = descriptorSets) { vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, (uint)descriptorSets.Length, descriptorSetsPtr, 0, null); } }
public void CmdBindPipeline(VkPipelineBindPoint pipelineBindPoint, IVkPipeline pipeline) { var _commandBuffer = Handle; var _pipelineBindPoint = pipelineBindPoint; var _pipeline = pipeline?.Handle ?? VkPipeline.HandleType.Null; Direct.CmdBindPipeline(_commandBuffer, _pipelineBindPoint, _pipeline); }
public void CmdBindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, int firstSet, int descriptorSetCount, VkDescriptorSet[] pDescriptorSets, int dynamicOffsetCount, int[] pDynamicOffsets) { if (m_State != CommandBufferState.Recording) { return; } m_Commands.Add(new Cmd_BindDescriptorSets(pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets)); }
public void CmdBindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { if (m_State != CommandBufferState.Recording) { return; } m_Commands.Add(new Cmd_BindPipeline(pipelineBindPoint, pipeline)); }
public static extern void CmdBindDescriptorSets( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint firstSet, uint descriptorSetCount, IntPtr pDescriptorSets, uint dynamicOffsetCount, IntPtr pDynamicOffsets );
public Cmd_BindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, int firstSet, int descriptorSetCount, VkDescriptorSet[] pDescriptorSets, int dynamicOffsetCount, int[] pDynamicOffsets) { this.pipelineBindPoint = pipelineBindPoint; this.layout = layout; this.firstSet = firstSet; this.descriptorSetCount = descriptorSetCount; this.pDescriptorSets = pDescriptorSets; this.dynamicOffsetCount = dynamicOffsetCount; this.pDynamicOffsets = pDynamicOffsets; }
public RenderPassSubPass( VkPipelineBindPoint bindPoint, List <uint> colorAttachments, uint?depthAttachments = null ) { BindPoint = bindPoint; ColorAttachments = colorAttachments; DepthAttachments = depthAttachments; }
public unsafe void BindPipeline( Pipeline pipeline, VkPipelineBindPoint bindPoint = VkPipelineBindPoint.Graphics ) { VulkanNative.vkCmdBindPipeline( _handle, bindPoint, pipeline.Handle ); }
/// <summary> /// VkSubpassDescription - Structure specifying a subpass description /// </summary> /// <param name="pipelineBindPoint">pipelineBindPoint is a VkPipelineBindPoint value specifying /// the pipeline type supported for this subpass</param> /// <param name="flags">flags is a bitmask of VkSubpassDescriptionFlagBits /// specifying usage of the subpass</param> public VkSubpassDescription(VkPipelineBindPoint pipelineBindPoint, VkSubpassDescriptionFlagBits flags = 0) { this.pipelineBindPoint = pipelineBindPoint; this.inputAttachments = new VkAttachmentReferenceGroup(); this.colorAttachments = null;// new VkAttachmentReferencesGroup(); this.colorResolveAttachments = new VkColorResolveAttachmentGroup(); this.pDepthStencilAttachment = null; this.preserveAttachments = new UInt32Group(); this.flags = flags; }
public void CmdBindDescriptorSets( [FromProperty("this")] GenCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, GenPipelineLayout layout, int firstSet, [CountFor("descriptorSets")] int descriptorSetCount, [IsArray] GenDescriptorSet *pDescriptorSets, [CountFor("dynamicOffsets")] int dynamicOffsetCount, [IsArray] int *pDynamicOffsets) { }
private void FlushNewResourceSets( VkResourceSet[] resourceSets, bool[] resourceSetsChanged, VkPipelineBindPoint bindPoint, VkPipelineLayout pipelineLayout) { int setCount = resourceSets.Length; VkDescriptorSet *descriptorSets = stackalloc VkDescriptorSet[setCount]; uint currentBatchCount = 0; uint currentBatchFirstSet = 0; for (uint currentSlot = 0; currentSlot < resourceSets.Length; currentSlot++) { bool batchEnded = !resourceSetsChanged[currentSlot] || currentSlot == resourceSets.Length - 1; if (resourceSetsChanged[currentSlot]) { resourceSetsChanged[currentSlot] = false; descriptorSets[currentBatchCount] = resourceSets[currentSlot].DescriptorSet; currentBatchCount += 1; } if (batchEnded) { if (currentBatchCount != 0) { // Flush current batch. vkCmdBindDescriptorSets( _cb, bindPoint, pipelineLayout, currentBatchFirstSet, currentBatchCount, descriptorSets, 0, null); } currentBatchCount = 0; currentBatchFirstSet = currentSlot + 1; } } }
public void BindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint firstSet, DescriptorSet descriptorSet, List <uint> dynamicOffsets) { unsafe { int dynamicOffsetCount = 0; if (dynamicOffsets != null) { dynamicOffsetCount = dynamicOffsets.Count; } var offsets = stackalloc uint[dynamicOffsetCount]; VkDescriptorSet setNative = descriptorSet.Native; Interop.Copy(dynamicOffsets, (IntPtr)offsets); Device.Commands.cmdBindDescriptorSets(commandBuffer, VkPipelineBindPoint.Graphics, layout.Native, firstSet, 1, (IntPtr)(&setNative), (uint)dynamicOffsetCount, (IntPtr)offsets); } }
public void CmdBindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, IVkPipelineLayout layout, int firstSet, IReadOnlyList <IVkDescriptorSet> descriptorSets, IReadOnlyList <int> dynamicOffsets) { var unmanagedSize = descriptorSets.SizeOfMarshalDirect() + dynamicOffsets.SizeOfMarshalDirect(); var unmanagedArray = new byte[unmanagedSize]; fixed(byte *unmanagedStart = unmanagedArray) { var unmanaged = unmanagedStart; var _commandBuffer = Handle; var _pipelineBindPoint = pipelineBindPoint; var _layout = layout?.Handle ?? VkPipelineLayout.HandleType.Null; var _firstSet = firstSet; var _descriptorSetCount = descriptorSets?.Count ?? 0; var _pDescriptorSets = descriptorSets.MarshalDirect(ref unmanaged); var _dynamicOffsetCount = dynamicOffsets?.Count ?? 0; var _pDynamicOffsets = dynamicOffsets.MarshalDirect(ref unmanaged); Direct.CmdBindDescriptorSets(_commandBuffer, _pipelineBindPoint, _layout, _firstSet, _descriptorSetCount, _pDescriptorSets, _dynamicOffsetCount, _pDynamicOffsets); } }
public void BindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint firstSet, DescriptorSet[] descriptorSets, uint[] dynamicOffsets) { unsafe { var sets = stackalloc VkDescriptorSet[descriptorSets.Length]; for (int i = 0; i < descriptorSets.Length; i++) { sets[i] = descriptorSets[i].Native; } int dynamicOffsetCount = 0; if (dynamicOffsets != null) { dynamicOffsetCount = dynamicOffsets.Length; fixed(uint *ptr = dynamicOffsets) { Device.Commands.cmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout.Native, firstSet, (uint)descriptorSets.Length, (IntPtr)sets, (uint)dynamicOffsetCount, (IntPtr)ptr); } } }
internal extern static void vkCmdBindPipeline(IntPtr commandBuffer, VkPipelineBindPoint pipelineBindPoint, UInt64 pipeline);
public static void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, int firstSet, int descriptorSetCount, VkDescriptorSet[] pDescriptorSets, int dynamicOffsetCount, int[] pDynamicOffsets) { VkPreconditions.CheckNull(commandBuffer, nameof(commandBuffer)); GetCommandBuffer(commandBuffer).CmdBindDescriptorSets(pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets); }
public void CmdBindPipeline( [FromProperty("this")] GenCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, GenPipeline pipeline) { }
private void FlushNewResourceSets( int newResourceSetsCount, VkResourceSet[] resourceSets, bool[] resourceSetsChanged, VkPipelineBindPoint bindPoint, VkPipelineLayout pipelineLayout) { if (newResourceSetsCount > 0) { int totalChanged = 0; uint currentSlot = 0; uint currentBatchIndex = 0; uint currentBatchFirstSet = 0; VkDescriptorSet *descriptorSets = stackalloc VkDescriptorSet[newResourceSetsCount]; while (totalChanged < newResourceSetsCount) { if (resourceSetsChanged[currentSlot]) { resourceSetsChanged[currentSlot] = false; descriptorSets[currentBatchIndex] = resourceSets[currentSlot].DescriptorSet; totalChanged += 1; currentBatchIndex += 1; currentSlot += 1; } else { if (currentBatchIndex != 0) { // Flush current batch. vkCmdBindDescriptorSets( _cb, bindPoint, pipelineLayout, currentBatchFirstSet, currentBatchIndex, descriptorSets, 0, null); currentBatchIndex = 0; } currentSlot += 1; currentBatchFirstSet = currentSlot; } } if (currentBatchIndex != 0) { // Flush current batch. vkCmdBindDescriptorSets( _cb, bindPoint, pipelineLayout, currentBatchFirstSet, currentBatchIndex, descriptorSets, 0, null); } } }
public unsafe void CmdBindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { _Parent.Device.vkCmdBindPipeline(_Handle, pipelineBindPoint, pipeline._Handle); }
public void CmdBindDescriptorSets( [FromProperty("this")] GenCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, GenPipelineLayout layout, int firstSet, [CountFor("descriptorSets")] int descriptorSetCount, [IsArray] GenDescriptorSet* pDescriptorSets, [CountFor("dynamicOffsets")] int dynamicOffsetCount, [IsArray] int* pDynamicOffsets) { }
public void CmdBindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, IVkPipelineLayout layout, int firstSet, IReadOnlyList<IVkDescriptorSet> descriptorSets, IReadOnlyList<int> dynamicOffsets) { var unmanagedSize = descriptorSets.SizeOfMarshalDirect() + dynamicOffsets.SizeOfMarshalDirect(); var unmanagedArray = new byte[unmanagedSize]; fixed (byte* unmanagedStart = unmanagedArray) { var unmanaged = unmanagedStart; var _commandBuffer = Handle; var _pipelineBindPoint = pipelineBindPoint; var _layout = layout?.Handle ?? VkPipelineLayout.HandleType.Null; var _firstSet = firstSet; var _descriptorSetCount = descriptorSets?.Count ?? 0; var _pDescriptorSets = descriptorSets.MarshalDirect(ref unmanaged); var _dynamicOffsetCount = dynamicOffsets?.Count ?? 0; var _pDynamicOffsets = dynamicOffsets.MarshalDirect(ref unmanaged); Direct.CmdBindDescriptorSets(_commandBuffer, _pipelineBindPoint, _layout, _firstSet, _descriptorSetCount, _pDescriptorSets, _dynamicOffsetCount, _pDynamicOffsets); } }
public void BindPipeline(VkPipelineBindPoint bindPoint, Pipeline pipeline) { Device.Commands.cmdBindPipeline(commandBuffer, bindPoint, pipeline.Native); }
public void BindDescriptorSets(VkPipelineBindPoint bindPoint, PipelineLayout pipelineLayout, uint firstSet, params DescriptorSet[] descriptorSets) { vkCmdBindDescriptorSets(handle, bindPoint, pipelineLayout.handle, firstSet, (uint)descriptorSets.Length, descriptorSets.Pin(), 0, IntPtr.Zero); descriptorSets.Unpin(); }
public void BindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint firstSet, List <DescriptorSet> descriptorSets) { BindDescriptorSets(pipelineBindPoint, layout, firstSet, descriptorSets, null); }
internal extern static void vkCmdBindDescriptorSets(IntPtr commandBuffer, VkPipelineBindPoint pipelineBindPoint, UInt64 layout, UInt32 firstSet, UInt32 descriptorSetCount, [In] UInt64[] pDescriptorSets, UInt32 dynamicOffsetCount, [In] UInt32[] pDynamicOffsets);
public static extern void CmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline );
public static void vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint firstSet, VkDescriptorSet descriptorSet) { vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, 1, &descriptorSet, 0, null); }