Class VulkanCommandBuffer

java.lang.Object
icyllis.arc3d.engine.CommandBuffer
icyllis.arc3d.vulkan.VulkanCommandBuffer
Direct Known Subclasses:
VulkanPrimaryCommandBuffer

public abstract class VulkanCommandBuffer extends CommandBuffer
  • Field Details

    • mCommandBuffer

      protected final org.lwjgl.vulkan.VkCommandBuffer mCommandBuffer
    • mIsRecording

      protected boolean mIsRecording
  • Constructor Details

    • VulkanCommandBuffer

      public VulkanCommandBuffer(org.lwjgl.vulkan.VkDevice device, long handle)
  • Method Details

    • beginRenderPass

      public boolean beginRenderPass(RenderPassDesc renderPassDesc, FramebufferDesc framebufferDesc, Rect2ic renderPassBounds, float[] clearColors, float clearDepth, int clearStencil)
      Description copied from class: CommandBuffer
      Begin render pass. If successful, CommandBuffer.endRenderPass() must be called.
      Specified by:
      beginRenderPass in class CommandBuffer
      Parameters:
      renderPassDesc - descriptor to create a render pass
      framebufferDesc - descriptor to create a framebuffer
      renderPassBounds - content bounds of this render pass
      clearColors - clear color for each color attachment
      clearDepth - clear depth
      clearStencil - clear stencil (unsigned)
      Returns:
      success or not
    • bindGraphicsPipeline

      public boolean bindGraphicsPipeline(GraphicsPipeline graphicsPipeline)
      Description copied from class: CommandBuffer
      Bind graphics pipeline. Due to async compiling, it may fail. Render pass scope, caller must track the pipeline.
      Specified by:
      bindGraphicsPipeline in class CommandBuffer
      Parameters:
      graphicsPipeline - the pipeline object
      Returns:
      success or not
    • setViewport

      public void setViewport(int x, int y, int width, int height)
      Description copied from class: CommandBuffer
      Specified by:
      setViewport in class CommandBuffer
    • setScissor

      public void setScissor(int x, int y, int width, int height)
      Description copied from class: CommandBuffer
      Specified by:
      setScissor in class CommandBuffer
    • bindIndexBuffer

      public void bindIndexBuffer(int indexType, Buffer buffer, long offset)
      Description copied from class: CommandBuffer
      Render pass scope, caller must track the buffer.
      Specified by:
      bindIndexBuffer in class CommandBuffer
      Parameters:
      indexType - see Engine.IndexType
    • bindVertexBuffer

      public void bindVertexBuffer(int binding, Buffer buffer, long offset)
      Description copied from class: CommandBuffer
      Render pass scope, caller must track the buffer.
      Specified by:
      bindVertexBuffer in class CommandBuffer
    • bindUniformBuffer

      public void bindUniformBuffer(int binding, Buffer buffer, long offset, long size)
      Description copied from class: CommandBuffer
      Render pass scope, caller must track the buffer.
      Specified by:
      bindUniformBuffer in class CommandBuffer
    • bindTextureSampler

      public void bindTextureSampler(int binding, Image texture, Sampler sampler, short swizzle)
      Description copied from class: CommandBuffer
      Bind texture view and sampler to the same binding point (combined image sampler). Render pass scope, caller must track the image and sampler.
      Specified by:
      bindTextureSampler in class CommandBuffer
      Parameters:
      binding - the binding index
      texture - the texture image
      sampler - the sampler state
      swizzle - the swizzle of the texture view for shader read, see Swizzle
    • draw

      public void draw(int vertexCount, int baseVertex)
      Description copied from class: CommandBuffer
      Records a non-indexed draw to current command buffer. Render pass scope.
      Specified by:
      draw in class CommandBuffer
      Parameters:
      vertexCount - the number of vertices to draw
      baseVertex - the index of the first vertex to draw
    • drawIndexed

      public void drawIndexed(int indexCount, int baseIndex, int baseVertex)
      Description copied from class: CommandBuffer
      Records an indexed draw to current command buffer. For OpenGL ES, if base vertex is unavailable, gl_VertexID always begins at 0. Render pass scope.
      Specified by:
      drawIndexed in class CommandBuffer
      Parameters:
      indexCount - the number of vertices to draw
      baseIndex - the base index within the index buffer
      baseVertex - the value added to the vertex index before indexing into the vertex buffer
    • drawInstanced

      public void drawInstanced(int instanceCount, int baseInstance, int vertexCount, int baseVertex)
      Description copied from class: CommandBuffer
      Records a non-indexed draw to current command buffer. For OpenGL, regardless of the baseInstance value, gl_InstanceID always begins at 0. Render pass scope.
      Specified by:
      drawInstanced in class CommandBuffer
      Parameters:
      instanceCount - the number of instances to draw
      baseInstance - the instance ID of the first instance to draw
      vertexCount - the number of vertices to draw
      baseVertex - the index of the first vertex to draw
    • drawIndexedInstanced

      public void drawIndexedInstanced(int indexCount, int baseIndex, int instanceCount, int baseInstance, int baseVertex)
      Description copied from class: CommandBuffer
      Records an indexed draw to current command buffer. For OpenGL ES, if base vertex is unavailable, gl_VertexID always begins at 0. For OpenGL, regardless of the baseInstance value, gl_InstanceID always begins at 0. Render pass scope.
      Specified by:
      drawIndexedInstanced in class CommandBuffer
      Parameters:
      indexCount - the number of vertices to draw
      baseIndex - the base index within the index buffer
      instanceCount - the number of instances to draw
      baseInstance - the instance ID of the first instance to draw
      baseVertex - the value added to the vertex index before indexing into the vertex buffer
    • endRenderPass

      public void endRenderPass()
      Description copied from class: CommandBuffer
      End the current render pass.
      Specified by:
      endRenderPass in class CommandBuffer
    • onCopyBuffer

      protected boolean onCopyBuffer(Buffer srcBuffer, Buffer dstBuffer, long srcOffset, long dstOffset, long size)
      Specified by:
      onCopyBuffer in class CommandBuffer
    • onCopyBufferToImage

      protected boolean onCopyBufferToImage(Buffer srcBuffer, Image dstImage, int srcColorType, int dstColorType, BufferImageCopyData[] copyData)
      Specified by:
      onCopyBufferToImage in class CommandBuffer
    • onCopyImage

      protected boolean onCopyImage(Image srcImage, int srcL, int srcT, int srcR, int srcB, Image dstImage, int dstX, int dstY, int mipLevel)
      Specified by:
      onCopyImage in class CommandBuffer
    • begin

      protected void begin()
      Specified by:
      begin in class CommandBuffer
    • submit

      protected boolean submit(QueueManager queueManager)
      Specified by:
      submit in class CommandBuffer
    • checkFinishedAndReset

      protected boolean checkFinishedAndReset()
      Specified by:
      checkFinishedAndReset in class CommandBuffer
    • waitUntilFinished

      protected void waitUntilFinished()
      Description copied from class: CommandBuffer
      Blocks the current thread and waits for GPU to finish outstanding works.
      Specified by:
      waitUntilFinished in class CommandBuffer
    • bindVertexBuffers

      public void bindVertexBuffers()
    • isRecording

      public boolean isRecording()