Package icyllis.arc3d.vulkan
Class VulkanCommandBuffer
java.lang.Object
icyllis.arc3d.engine.CommandBuffer
icyllis.arc3d.vulkan.VulkanCommandBuffer
- Direct Known Subclasses:
VulkanPrimaryCommandBuffer
-
Field Summary
Modifier and TypeFieldDescriptionprotected final org.lwjgl.vulkan.VkCommandBuffer
protected boolean
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
begin()
boolean
beginRenderPass
(RenderPassDesc renderPassDesc, FramebufferDesc framebufferDesc, Rect2ic renderPassBounds, float[] clearColors, float clearDepth, int clearStencil) Begin render pass.boolean
bindGraphicsPipeline
(GraphicsPipeline graphicsPipeline) Bind graphics pipeline.void
bindIndexBuffer
(int indexType, Buffer buffer, long offset) Render pass scope, caller must track the buffer.void
bindTextureSampler
(int binding, Image texture, Sampler sampler, short swizzle) Bind texture view and sampler to the same binding point (combined image sampler).void
bindUniformBuffer
(int binding, Buffer buffer, long offset, long size) Render pass scope, caller must track the buffer.void
bindVertexBuffer
(int binding, Buffer buffer, long offset) Render pass scope, caller must track the buffer.void
protected boolean
void
draw
(int vertexCount, int baseVertex) Records a non-indexed draw to current command buffer.void
drawIndexed
(int indexCount, int baseIndex, int baseVertex) Records an indexed draw to current command buffer.void
drawIndexedInstanced
(int indexCount, int baseIndex, int instanceCount, int baseInstance, int baseVertex) Records an indexed draw to current command buffer.void
drawInstanced
(int instanceCount, int baseInstance, int vertexCount, int baseVertex) Records a non-indexed draw to current command buffer.void
End the current render pass.boolean
protected boolean
onCopyBuffer
(Buffer srcBuffer, Buffer dstBuffer, long srcOffset, long dstOffset, long size) protected boolean
onCopyBufferToImage
(Buffer srcBuffer, Image dstImage, int srcColorType, int dstColorType, BufferImageCopyData[] copyData) protected boolean
onCopyImage
(Image srcImage, int srcL, int srcT, int srcR, int srcB, Image dstImage, int dstX, int dstY, int mipLevel) void
setScissor
(int x, int y, int width, int height) void
setViewport
(int x, int y, int width, int height) protected boolean
submit
(QueueManager queueManager) protected void
Blocks the current thread and waits for GPU to finish outstanding works.Methods inherited from class icyllis.arc3d.engine.CommandBuffer
callFinishedCallbacks, copyBuffer, copyBufferToImage, copyImage, releaseResources, trackCommandBufferResource, trackResource, trackResource
-
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 classCommandBuffer
- Parameters:
renderPassDesc
- descriptor to create a render passframebufferDesc
- descriptor to create a framebufferrenderPassBounds
- content bounds of this render passclearColors
- clear color for each color attachmentclearDepth
- clear depthclearStencil
- clear stencil (unsigned)- Returns:
- success or not
-
bindGraphicsPipeline
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 classCommandBuffer
- 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
Set viewport, must be called afterCommandBuffer.beginRenderPass(icyllis.arc3d.engine.RenderPassDesc, icyllis.arc3d.engine.FramebufferDesc, icyllis.arc3d.core.Rect2ic, float[], float, int)
.- Specified by:
setViewport
in classCommandBuffer
-
setScissor
public void setScissor(int x, int y, int width, int height) Description copied from class:CommandBuffer
Set scissor, must be called afterCommandBuffer.beginRenderPass(icyllis.arc3d.engine.RenderPassDesc, icyllis.arc3d.engine.FramebufferDesc, icyllis.arc3d.core.Rect2ic, float[], float, int)
.- Specified by:
setScissor
in classCommandBuffer
-
bindIndexBuffer
Description copied from class:CommandBuffer
Render pass scope, caller must track the buffer.- Specified by:
bindIndexBuffer
in classCommandBuffer
- Parameters:
indexType
- seeEngine.IndexType
-
bindVertexBuffer
Description copied from class:CommandBuffer
Render pass scope, caller must track the buffer.- Specified by:
bindVertexBuffer
in classCommandBuffer
-
bindUniformBuffer
Description copied from class:CommandBuffer
Render pass scope, caller must track the buffer.- Specified by:
bindUniformBuffer
in classCommandBuffer
-
bindTextureSampler
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 classCommandBuffer
- Parameters:
binding
- the binding indextexture
- the texture imagesampler
- the sampler stateswizzle
- the swizzle of the texture view for shader read, seeSwizzle
-
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 classCommandBuffer
- Parameters:
vertexCount
- the number of vertices to drawbaseVertex
- 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 classCommandBuffer
- Parameters:
indexCount
- the number of vertices to drawbaseIndex
- the base index within the index bufferbaseVertex
- 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 classCommandBuffer
- Parameters:
instanceCount
- the number of instances to drawbaseInstance
- the instance ID of the first instance to drawvertexCount
- the number of vertices to drawbaseVertex
- 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 classCommandBuffer
- Parameters:
indexCount
- the number of vertices to drawbaseIndex
- the base index within the index bufferinstanceCount
- the number of instances to drawbaseInstance
- the instance ID of the first instance to drawbaseVertex
- 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 classCommandBuffer
-
onCopyBuffer
protected boolean onCopyBuffer(Buffer srcBuffer, Buffer dstBuffer, long srcOffset, long dstOffset, long size) - Specified by:
onCopyBuffer
in classCommandBuffer
-
onCopyBufferToImage
protected boolean onCopyBufferToImage(Buffer srcBuffer, Image dstImage, int srcColorType, int dstColorType, BufferImageCopyData[] copyData) - Specified by:
onCopyBufferToImage
in classCommandBuffer
-
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 classCommandBuffer
-
begin
protected void begin()- Specified by:
begin
in classCommandBuffer
-
submit
- Specified by:
submit
in classCommandBuffer
-
checkFinishedAndReset
protected boolean checkFinishedAndReset()- Specified by:
checkFinishedAndReset
in classCommandBuffer
-
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 classCommandBuffer
-
bindVertexBuffers
public void bindVertexBuffers() -
isRecording
public boolean isRecording()
-