blob: f53892255d4ff8fe6df40a72f7a456fb0119cadb [file] [log] [blame] [edit]
/*
* Copyright 2020 Google LLC
* SPDX-License-Identifier: MIT
*/
#include "vkr_command_buffer.h"
#include "vkr_command_buffer_gen.h"
#ifdef __clang__
#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#endif
#define VKR_CMD_CALL(cmd_name, args, ...) \
do { \
struct vkr_command_buffer *_cmd = \
vkr_command_buffer_from_handle(args->commandBuffer); \
struct vn_device_proc_table *_vk = &_cmd->device->proc_table; \
\
vn_replace_vk##cmd_name##_args_handle(args); \
_vk->cmd_name(args->commandBuffer, ##__VA_ARGS__); \
} while (0)
static void
vkr_dispatch_vkCreateCommandPool(struct vn_dispatch_context *dispatch,
struct vn_command_vkCreateCommandPool *args)
{
struct vkr_command_pool *pool = vkr_command_pool_create_and_add(dispatch->data, args);
if (!pool)
return;
list_inithead(&pool->command_buffers);
}
static void
vkr_dispatch_vkDestroyCommandPool(struct vn_dispatch_context *dispatch,
struct vn_command_vkDestroyCommandPool *args)
{
struct vkr_context *ctx = dispatch->data;
struct vkr_command_pool *pool = vkr_command_pool_from_handle(args->commandPool);
if (!pool)
return;
vkr_command_pool_release(ctx, pool);
vkr_command_pool_destroy_and_remove(ctx, args);
}
static void
vkr_dispatch_vkResetCommandPool(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkResetCommandPool *args)
{
struct vkr_device *dev = vkr_device_from_handle(args->device);
struct vn_device_proc_table *vk = &dev->proc_table;
vn_replace_vkResetCommandPool_args_handle(args);
args->ret = vk->ResetCommandPool(args->device, args->commandPool, args->flags);
}
static void
vkr_dispatch_vkTrimCommandPool(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkTrimCommandPool *args)
{
struct vkr_device *dev = vkr_device_from_handle(args->device);
struct vn_device_proc_table *vk = &dev->proc_table;
vn_replace_vkTrimCommandPool_args_handle(args);
vk->TrimCommandPool(args->device, args->commandPool, args->flags);
}
static void
vkr_dispatch_vkAllocateCommandBuffers(struct vn_dispatch_context *dispatch,
struct vn_command_vkAllocateCommandBuffers *args)
{
struct vkr_context *ctx = dispatch->data;
struct vkr_device *dev = vkr_device_from_handle(args->device);
struct vkr_command_pool *pool =
vkr_command_pool_from_handle(args->pAllocateInfo->commandPool);
struct object_array arr;
if (!pool) {
vkr_context_set_fatal(ctx);
return;
}
if (vkr_command_buffer_create_array(ctx, args, &arr) != VK_SUCCESS)
return;
vkr_command_buffer_add_array(ctx, dev, pool, &arr);
}
static void
vkr_dispatch_vkFreeCommandBuffers(struct vn_dispatch_context *dispatch,
struct vn_command_vkFreeCommandBuffers *args)
{
struct vkr_context *ctx = dispatch->data;
struct list_head free_list;
/* args->pCommandBuffers is marked noautovalidity="true" */
if (args->commandBufferCount && !args->pCommandBuffers) {
vkr_context_set_fatal(ctx);
return;
}
vkr_command_buffer_destroy_driver_handles(ctx, args, &free_list);
vkr_context_remove_objects(ctx, &free_list);
}
static void
vkr_dispatch_vkResetCommandBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkResetCommandBuffer *args)
{
struct vkr_command_buffer *cmd = vkr_command_buffer_from_handle(args->commandBuffer);
struct vn_device_proc_table *vk = &cmd->device->proc_table;
vn_replace_vkResetCommandBuffer_args_handle(args);
args->ret = vk->ResetCommandBuffer(args->commandBuffer, args->flags);
}
static void
vkr_dispatch_vkBeginCommandBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkBeginCommandBuffer *args)
{
struct vkr_command_buffer *cmd = vkr_command_buffer_from_handle(args->commandBuffer);
struct vn_device_proc_table *vk = &cmd->device->proc_table;
vn_replace_vkBeginCommandBuffer_args_handle(args);
args->ret = vk->BeginCommandBuffer(args->commandBuffer, args->pBeginInfo);
}
static void
vkr_dispatch_vkEndCommandBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkEndCommandBuffer *args)
{
struct vkr_command_buffer *cmd = vkr_command_buffer_from_handle(args->commandBuffer);
struct vn_device_proc_table *vk = &cmd->device->proc_table;
vn_replace_vkEndCommandBuffer_args_handle(args);
args->ret = vk->EndCommandBuffer(args->commandBuffer);
}
static void
vkr_dispatch_vkCmdBindPipeline(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBindPipeline *args)
{
VKR_CMD_CALL(CmdBindPipeline, args, args->pipelineBindPoint, args->pipeline);
}
static void
vkr_dispatch_vkCmdSetViewport(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetViewport *args)
{
VKR_CMD_CALL(CmdSetViewport, args, args->firstViewport, args->viewportCount,
args->pViewports);
}
static void
vkr_dispatch_vkCmdSetScissor(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetScissor *args)
{
VKR_CMD_CALL(CmdSetScissor, args, args->firstScissor, args->scissorCount,
args->pScissors);
}
static void
vkr_dispatch_vkCmdSetLineWidth(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetLineWidth *args)
{
VKR_CMD_CALL(CmdSetLineWidth, args, args->lineWidth);
}
static void
vkr_dispatch_vkCmdSetDepthBias(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthBias *args)
{
VKR_CMD_CALL(CmdSetDepthBias, args, args->depthBiasConstantFactor,
args->depthBiasClamp, args->depthBiasSlopeFactor);
}
static void
vkr_dispatch_vkCmdSetBlendConstants(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetBlendConstants *args)
{
VKR_CMD_CALL(CmdSetBlendConstants, args, args->blendConstants);
}
static void
vkr_dispatch_vkCmdSetDepthBounds(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthBounds *args)
{
VKR_CMD_CALL(CmdSetDepthBounds, args, args->minDepthBounds, args->maxDepthBounds);
}
static void
vkr_dispatch_vkCmdSetStencilCompareMask(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetStencilCompareMask *args)
{
VKR_CMD_CALL(CmdSetStencilCompareMask, args, args->faceMask, args->compareMask);
}
static void
vkr_dispatch_vkCmdSetStencilWriteMask(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetStencilWriteMask *args)
{
VKR_CMD_CALL(CmdSetStencilWriteMask, args, args->faceMask, args->writeMask);
}
static void
vkr_dispatch_vkCmdSetStencilReference(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetStencilReference *args)
{
VKR_CMD_CALL(CmdSetStencilReference, args, args->faceMask, args->reference);
}
static void
vkr_dispatch_vkCmdBindDescriptorSets(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBindDescriptorSets *args)
{
VKR_CMD_CALL(CmdBindDescriptorSets, args, args->pipelineBindPoint, args->layout,
args->firstSet, args->descriptorSetCount, args->pDescriptorSets,
args->dynamicOffsetCount, args->pDynamicOffsets);
}
static void
vkr_dispatch_vkCmdBindIndexBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBindIndexBuffer *args)
{
VKR_CMD_CALL(CmdBindIndexBuffer, args, args->buffer, args->offset, args->indexType);
}
static void
vkr_dispatch_vkCmdBindVertexBuffers(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBindVertexBuffers *args)
{
VKR_CMD_CALL(CmdBindVertexBuffers, args, args->firstBinding, args->bindingCount,
args->pBuffers, args->pOffsets);
}
static void
vkr_dispatch_vkCmdDraw(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDraw *args)
{
VKR_CMD_CALL(CmdDraw, args, args->vertexCount, args->instanceCount, args->firstVertex,
args->firstInstance);
}
static void
vkr_dispatch_vkCmdDrawIndexed(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawIndexed *args)
{
VKR_CMD_CALL(CmdDrawIndexed, args, args->indexCount, args->instanceCount,
args->firstIndex, args->vertexOffset, args->firstInstance);
}
static void
vkr_dispatch_vkCmdDrawIndirect(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawIndirect *args)
{
VKR_CMD_CALL(CmdDrawIndirect, args, args->buffer, args->offset, args->drawCount,
args->stride);
}
static void
vkr_dispatch_vkCmdDrawIndexedIndirect(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawIndexedIndirect *args)
{
VKR_CMD_CALL(CmdDrawIndexedIndirect, args, args->buffer, args->offset, args->drawCount,
args->stride);
}
static void
vkr_dispatch_vkCmdDispatch(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDispatch *args)
{
VKR_CMD_CALL(CmdDispatch, args, args->groupCountX, args->groupCountY,
args->groupCountZ);
}
static void
vkr_dispatch_vkCmdDispatchIndirect(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDispatchIndirect *args)
{
VKR_CMD_CALL(CmdDispatchIndirect, args, args->buffer, args->offset);
}
static void
vkr_dispatch_vkCmdCopyBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyBuffer *args)
{
VKR_CMD_CALL(CmdCopyBuffer, args, args->srcBuffer, args->dstBuffer, args->regionCount,
args->pRegions);
}
static void
vkr_dispatch_vkCmdCopyBuffer2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyBuffer2 *args)
{
VKR_CMD_CALL(CmdCopyBuffer2, args, args->pCopyBufferInfo);
}
static void
vkr_dispatch_vkCmdCopyImage(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyImage *args)
{
VKR_CMD_CALL(CmdCopyImage, args, args->srcImage, args->srcImageLayout, args->dstImage,
args->dstImageLayout, args->regionCount, args->pRegions);
}
static void
vkr_dispatch_vkCmdCopyImage2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyImage2 *args)
{
VKR_CMD_CALL(CmdCopyImage2, args, args->pCopyImageInfo);
}
static void
vkr_dispatch_vkCmdBlitImage(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBlitImage *args)
{
VKR_CMD_CALL(CmdBlitImage, args, args->srcImage, args->srcImageLayout, args->dstImage,
args->dstImageLayout, args->regionCount, args->pRegions, args->filter);
}
static void
vkr_dispatch_vkCmdBlitImage2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBlitImage2 *args)
{
VKR_CMD_CALL(CmdBlitImage2, args, args->pBlitImageInfo);
}
static void
vkr_dispatch_vkCmdCopyBufferToImage(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyBufferToImage *args)
{
VKR_CMD_CALL(CmdCopyBufferToImage, args, args->srcBuffer, args->dstImage,
args->dstImageLayout, args->regionCount, args->pRegions);
}
static void
vkr_dispatch_vkCmdCopyBufferToImage2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyBufferToImage2 *args)
{
VKR_CMD_CALL(CmdCopyBufferToImage2, args, args->pCopyBufferToImageInfo);
}
static void
vkr_dispatch_vkCmdCopyImageToBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyImageToBuffer *args)
{
VKR_CMD_CALL(CmdCopyImageToBuffer, args, args->srcImage, args->srcImageLayout,
args->dstBuffer, args->regionCount, args->pRegions);
}
static void
vkr_dispatch_vkCmdCopyImageToBuffer2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyImageToBuffer2 *args)
{
VKR_CMD_CALL(CmdCopyImageToBuffer2, args, args->pCopyImageToBufferInfo);
}
static void
vkr_dispatch_vkCmdUpdateBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdUpdateBuffer *args)
{
VKR_CMD_CALL(CmdUpdateBuffer, args, args->dstBuffer, args->dstOffset, args->dataSize,
args->pData);
}
static void
vkr_dispatch_vkCmdFillBuffer(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdFillBuffer *args)
{
VKR_CMD_CALL(CmdFillBuffer, args, args->dstBuffer, args->dstOffset, args->size,
args->data);
}
static void
vkr_dispatch_vkCmdClearColorImage(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdClearColorImage *args)
{
VKR_CMD_CALL(CmdClearColorImage, args, args->image, args->imageLayout, args->pColor,
args->rangeCount, args->pRanges);
}
static void
vkr_dispatch_vkCmdClearDepthStencilImage(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdClearDepthStencilImage *args)
{
VKR_CMD_CALL(CmdClearDepthStencilImage, args, args->image, args->imageLayout,
args->pDepthStencil, args->rangeCount, args->pRanges);
}
static void
vkr_dispatch_vkCmdClearAttachments(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdClearAttachments *args)
{
VKR_CMD_CALL(CmdClearAttachments, args, args->attachmentCount, args->pAttachments,
args->rectCount, args->pRects);
}
static void
vkr_dispatch_vkCmdResolveImage(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdResolveImage *args)
{
VKR_CMD_CALL(CmdResolveImage, args, args->srcImage, args->srcImageLayout,
args->dstImage, args->dstImageLayout, args->regionCount, args->pRegions);
}
static void
vkr_dispatch_vkCmdResolveImage2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdResolveImage2 *args)
{
VKR_CMD_CALL(CmdResolveImage2, args, args->pResolveImageInfo);
}
static void
vkr_dispatch_vkCmdSetEvent(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetEvent *args)
{
VKR_CMD_CALL(CmdSetEvent, args, args->event, args->stageMask);
}
static void
vkr_dispatch_vkCmdResetEvent(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdResetEvent *args)
{
VKR_CMD_CALL(CmdResetEvent, args, args->event, args->stageMask);
}
static void
vkr_dispatch_vkCmdWaitEvents(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdWaitEvents *args)
{
VKR_CMD_CALL(CmdWaitEvents, args, args->eventCount, args->pEvents, args->srcStageMask,
args->dstStageMask, args->memoryBarrierCount, args->pMemoryBarriers,
args->bufferMemoryBarrierCount, args->pBufferMemoryBarriers,
args->imageMemoryBarrierCount, args->pImageMemoryBarriers);
}
static void
vkr_dispatch_vkCmdPipelineBarrier(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdPipelineBarrier *args)
{
VKR_CMD_CALL(CmdPipelineBarrier, args, args->srcStageMask, args->dstStageMask,
args->dependencyFlags, args->memoryBarrierCount, args->pMemoryBarriers,
args->bufferMemoryBarrierCount, args->pBufferMemoryBarriers,
args->imageMemoryBarrierCount, args->pImageMemoryBarriers);
}
static void
vkr_dispatch_vkCmdBeginQuery(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBeginQuery *args)
{
VKR_CMD_CALL(CmdBeginQuery, args, args->queryPool, args->query, args->flags);
}
static void
vkr_dispatch_vkCmdEndQuery(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdEndQuery *args)
{
VKR_CMD_CALL(CmdEndQuery, args, args->queryPool, args->query);
}
static void
vkr_dispatch_vkCmdResetQueryPool(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdResetQueryPool *args)
{
VKR_CMD_CALL(CmdResetQueryPool, args, args->queryPool, args->firstQuery,
args->queryCount);
}
static void
vkr_dispatch_vkCmdWriteTimestamp(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdWriteTimestamp *args)
{
VKR_CMD_CALL(CmdWriteTimestamp, args, args->pipelineStage, args->queryPool,
args->query);
}
static void
vkr_dispatch_vkCmdCopyQueryPoolResults(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdCopyQueryPoolResults *args)
{
VKR_CMD_CALL(CmdCopyQueryPoolResults, args, args->queryPool, args->firstQuery,
args->queryCount, args->dstBuffer, args->dstOffset, args->stride,
args->flags);
}
static void
vkr_dispatch_vkCmdPushConstants(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdPushConstants *args)
{
VKR_CMD_CALL(CmdPushConstants, args, args->layout, args->stageFlags, args->offset,
args->size, args->pValues);
}
static void
vkr_dispatch_vkCmdBeginRenderPass(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBeginRenderPass *args)
{
VKR_CMD_CALL(CmdBeginRenderPass, args, args->pRenderPassBegin, args->contents);
}
static void
vkr_dispatch_vkCmdNextSubpass(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdNextSubpass *args)
{
VKR_CMD_CALL(CmdNextSubpass, args, args->contents);
}
static void
vkr_dispatch_vkCmdEndRenderPass(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdEndRenderPass *args)
{
VKR_CMD_CALL(CmdEndRenderPass, args);
}
static void
vkr_dispatch_vkCmdExecuteCommands(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdExecuteCommands *args)
{
VKR_CMD_CALL(CmdExecuteCommands, args, args->commandBufferCount,
args->pCommandBuffers);
}
static void
vkr_dispatch_vkCmdSetDeviceMask(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDeviceMask *args)
{
VKR_CMD_CALL(CmdSetDeviceMask, args, args->deviceMask);
}
static void
vkr_dispatch_vkCmdDispatchBase(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDispatchBase *args)
{
VKR_CMD_CALL(CmdDispatchBase, args, args->baseGroupX, args->baseGroupY,
args->baseGroupZ, args->groupCountX, args->groupCountY,
args->groupCountZ);
}
static void
vkr_dispatch_vkCmdBeginRenderPass2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBeginRenderPass2 *args)
{
VKR_CMD_CALL(CmdBeginRenderPass2, args, args->pRenderPassBegin,
args->pSubpassBeginInfo);
}
static void
vkr_dispatch_vkCmdNextSubpass2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdNextSubpass2 *args)
{
VKR_CMD_CALL(CmdNextSubpass2, args, args->pSubpassBeginInfo, args->pSubpassEndInfo);
}
static void
vkr_dispatch_vkCmdEndRenderPass2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdEndRenderPass2 *args)
{
VKR_CMD_CALL(CmdEndRenderPass2, args, args->pSubpassEndInfo);
}
static void
vkr_dispatch_vkCmdDrawIndirectCount(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawIndirectCount *args)
{
VKR_CMD_CALL(CmdDrawIndirectCount, args, args->buffer, args->offset, args->countBuffer,
args->countBufferOffset, args->maxDrawCount, args->stride);
}
static void
vkr_dispatch_vkCmdDrawIndexedIndirectCount(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawIndexedIndirectCount *args)
{
VKR_CMD_CALL(CmdDrawIndexedIndirectCount, args, args->buffer, args->offset,
args->countBuffer, args->countBufferOffset, args->maxDrawCount,
args->stride);
}
static void
vkr_dispatch_vkCmdSetLineStippleEXT(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetLineStippleEXT *args)
{
VKR_CMD_CALL(CmdSetLineStippleEXT, args, args->lineStippleFactor,
args->lineStipplePattern);
}
static void
vkr_dispatch_vkCmdBindTransformFeedbackBuffersEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBindTransformFeedbackBuffersEXT *args)
{
VKR_CMD_CALL(CmdBindTransformFeedbackBuffersEXT, args, args->firstBinding,
args->bindingCount, args->pBuffers, args->pOffsets, args->pSizes);
}
static void
vkr_dispatch_vkCmdBeginTransformFeedbackEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBeginTransformFeedbackEXT *args)
{
VKR_CMD_CALL(CmdBeginTransformFeedbackEXT, args, args->firstCounterBuffer,
args->counterBufferCount, args->pCounterBuffers,
args->pCounterBufferOffsets);
}
static void
vkr_dispatch_vkCmdEndTransformFeedbackEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdEndTransformFeedbackEXT *args)
{
VKR_CMD_CALL(CmdEndTransformFeedbackEXT, args, args->firstCounterBuffer,
args->counterBufferCount, args->pCounterBuffers,
args->pCounterBufferOffsets);
}
static void
vkr_dispatch_vkCmdBeginQueryIndexedEXT(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBeginQueryIndexedEXT *args)
{
VKR_CMD_CALL(CmdBeginQueryIndexedEXT, args, args->queryPool, args->query, args->flags,
args->index);
}
static void
vkr_dispatch_vkCmdEndQueryIndexedEXT(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdEndQueryIndexedEXT *args)
{
VKR_CMD_CALL(CmdEndQueryIndexedEXT, args, args->queryPool, args->query, args->index);
}
static void
vkr_dispatch_vkCmdDrawIndirectByteCountEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawIndirectByteCountEXT *args)
{
VKR_CMD_CALL(CmdDrawIndirectByteCountEXT, args, args->instanceCount,
args->firstInstance, args->counterBuffer, args->counterBufferOffset,
args->counterOffset, args->vertexStride);
}
static void
vkr_dispatch_vkCmdBindVertexBuffers2(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBindVertexBuffers2 *args)
{
VKR_CMD_CALL(CmdBindVertexBuffers2, args, args->firstBinding, args->bindingCount,
args->pBuffers, args->pOffsets, args->pSizes, args->pStrides);
}
static void
vkr_dispatch_vkCmdSetCullMode(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetCullMode *args)
{
VKR_CMD_CALL(CmdSetCullMode, args, args->cullMode);
}
static void
vkr_dispatch_vkCmdSetDepthBoundsTestEnable(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthBoundsTestEnable *args)
{
VKR_CMD_CALL(CmdSetDepthBoundsTestEnable, args, args->depthBoundsTestEnable);
}
static void
vkr_dispatch_vkCmdSetDepthCompareOp(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthCompareOp *args)
{
VKR_CMD_CALL(CmdSetDepthCompareOp, args, args->depthCompareOp);
}
static void
vkr_dispatch_vkCmdSetDepthTestEnable(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthTestEnable *args)
{
VKR_CMD_CALL(CmdSetDepthTestEnable, args, args->depthTestEnable);
}
static void
vkr_dispatch_vkCmdSetDepthWriteEnable(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthWriteEnable *args)
{
VKR_CMD_CALL(CmdSetDepthWriteEnable, args, args->depthWriteEnable);
}
static void
vkr_dispatch_vkCmdSetFrontFace(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetFrontFace *args)
{
VKR_CMD_CALL(CmdSetFrontFace, args, args->frontFace);
}
static void
vkr_dispatch_vkCmdSetPrimitiveTopology(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetPrimitiveTopology *args)
{
VKR_CMD_CALL(CmdSetPrimitiveTopology, args, args->primitiveTopology);
}
static void
vkr_dispatch_vkCmdSetScissorWithCount(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetScissorWithCount *args)
{
VKR_CMD_CALL(CmdSetScissorWithCount, args, args->scissorCount, args->pScissors);
}
static void
vkr_dispatch_vkCmdSetStencilOp(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetStencilOp *args)
{
VKR_CMD_CALL(CmdSetStencilOp, args, args->faceMask, args->failOp, args->passOp,
args->depthFailOp, args->compareOp);
}
static void
vkr_dispatch_vkCmdSetStencilTestEnable(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetStencilTestEnable *args)
{
VKR_CMD_CALL(CmdSetStencilTestEnable, args, args->stencilTestEnable);
}
static void
vkr_dispatch_vkCmdSetViewportWithCount(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetViewportWithCount *args)
{
VKR_CMD_CALL(CmdSetViewportWithCount, args, args->viewportCount, args->pViewports);
}
static void
vkr_dispatch_vkCmdSetDepthBiasEnable(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetDepthBiasEnable *args)
{
VKR_CMD_CALL(CmdSetDepthBiasEnable, args, args->depthBiasEnable);
}
static void
vkr_dispatch_vkCmdSetLogicOpEXT(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetLogicOpEXT *args)
{
VKR_CMD_CALL(CmdSetLogicOpEXT, args, args->logicOp);
}
static void
vkr_dispatch_vkCmdSetPatchControlPointsEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetPatchControlPointsEXT *args)
{
VKR_CMD_CALL(CmdSetPatchControlPointsEXT, args, args->patchControlPoints);
}
static void
vkr_dispatch_vkCmdSetPrimitiveRestartEnable(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetPrimitiveRestartEnable *args)
{
VKR_CMD_CALL(CmdSetPrimitiveRestartEnable, args, args->primitiveRestartEnable);
}
static void
vkr_dispatch_vkCmdSetRasterizerDiscardEnable(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetRasterizerDiscardEnable *args)
{
VKR_CMD_CALL(CmdSetRasterizerDiscardEnable, args, args->rasterizerDiscardEnable);
}
static void
vkr_dispatch_vkCmdBeginConditionalRenderingEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdBeginConditionalRenderingEXT *args)
{
VKR_CMD_CALL(CmdBeginConditionalRenderingEXT, args, args->pConditionalRenderingBegin);
}
static void
vkr_dispatch_vkCmdEndConditionalRenderingEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdEndConditionalRenderingEXT *args)
{
VKR_CMD_CALL(CmdEndConditionalRenderingEXT, args);
}
static void
vkr_dispatch_vkCmdBeginRendering(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdBeginRendering *args)
{
VKR_CMD_CALL(CmdBeginRendering, args, args->pRenderingInfo);
}
static void
vkr_dispatch_vkCmdEndRendering(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdEndRendering *args)
{
VKR_CMD_CALL(CmdEndRendering, args);
}
static void
vkr_dispatch_vkCmdPipelineBarrier2(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdPipelineBarrier2 *args)
{
VKR_CMD_CALL(CmdPipelineBarrier2, args, args->pDependencyInfo);
}
static void
vkr_dispatch_vkCmdResetEvent2(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdResetEvent2 *args)
{
VKR_CMD_CALL(CmdResetEvent2, args, args->event, args->stageMask);
}
static void
vkr_dispatch_vkCmdSetEvent2(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdSetEvent2 *args)
{
VKR_CMD_CALL(CmdSetEvent2, args, args->event, args->pDependencyInfo);
}
static void
vkr_dispatch_vkCmdWaitEvents2(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdWaitEvents2 *args)
{
VKR_CMD_CALL(CmdWaitEvents2, args, args->eventCount, args->pEvents,
args->pDependencyInfos);
}
static void
vkr_dispatch_vkCmdWriteTimestamp2(UNUSED struct vn_dispatch_context *ctx,
struct vn_command_vkCmdWriteTimestamp2 *args)
{
VKR_CMD_CALL(CmdWriteTimestamp2, args, args->stage, args->queryPool, args->query);
}
static void
vkr_dispatch_vkCmdDrawMultiEXT(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawMultiEXT *args)
{
VKR_CMD_CALL(CmdDrawMultiEXT, args, args->drawCount, args->pVertexInfo,
args->instanceCount, args->firstInstance, args->stride);
}
static void
vkr_dispatch_vkCmdDrawMultiIndexedEXT(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdDrawMultiIndexedEXT *args)
{
VKR_CMD_CALL(CmdDrawMultiIndexedEXT, args, args->drawCount, args->pIndexInfo,
args->instanceCount, args->firstInstance, args->stride,
args->pVertexOffset);
}
static void
vkr_dispatch_vkCmdPushDescriptorSetKHR(UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdPushDescriptorSetKHR *args)
{
VKR_CMD_CALL(CmdPushDescriptorSetKHR, args, args->pipelineBindPoint, args->layout,
args->set, args->descriptorWriteCount, args->pDescriptorWrites);
}
static void
vkr_dispatch_vkCmdSetColorWriteEnableEXT(
UNUSED struct vn_dispatch_context *dispatch,
struct vn_command_vkCmdSetColorWriteEnableEXT *args)
{
VKR_CMD_CALL(CmdSetColorWriteEnableEXT, args, args->attachmentCount,
args->pColorWriteEnables);
}
void
vkr_context_init_command_pool_dispatch(struct vkr_context *ctx)
{
struct vn_dispatch_context *dispatch = &ctx->dispatch;
dispatch->dispatch_vkCreateCommandPool = vkr_dispatch_vkCreateCommandPool;
dispatch->dispatch_vkDestroyCommandPool = vkr_dispatch_vkDestroyCommandPool;
dispatch->dispatch_vkResetCommandPool = vkr_dispatch_vkResetCommandPool;
dispatch->dispatch_vkTrimCommandPool = vkr_dispatch_vkTrimCommandPool;
}
void
vkr_context_init_command_buffer_dispatch(struct vkr_context *ctx)
{
struct vn_dispatch_context *dispatch = &ctx->dispatch;
dispatch->dispatch_vkAllocateCommandBuffers = vkr_dispatch_vkAllocateCommandBuffers;
dispatch->dispatch_vkFreeCommandBuffers = vkr_dispatch_vkFreeCommandBuffers;
dispatch->dispatch_vkResetCommandBuffer = vkr_dispatch_vkResetCommandBuffer;
dispatch->dispatch_vkBeginCommandBuffer = vkr_dispatch_vkBeginCommandBuffer;
dispatch->dispatch_vkEndCommandBuffer = vkr_dispatch_vkEndCommandBuffer;
dispatch->dispatch_vkCmdBindPipeline = vkr_dispatch_vkCmdBindPipeline;
dispatch->dispatch_vkCmdSetViewport = vkr_dispatch_vkCmdSetViewport;
dispatch->dispatch_vkCmdSetScissor = vkr_dispatch_vkCmdSetScissor;
dispatch->dispatch_vkCmdSetLineWidth = vkr_dispatch_vkCmdSetLineWidth;
dispatch->dispatch_vkCmdSetDepthBias = vkr_dispatch_vkCmdSetDepthBias;
dispatch->dispatch_vkCmdSetBlendConstants = vkr_dispatch_vkCmdSetBlendConstants;
dispatch->dispatch_vkCmdSetDepthBounds = vkr_dispatch_vkCmdSetDepthBounds;
dispatch->dispatch_vkCmdSetStencilCompareMask =
vkr_dispatch_vkCmdSetStencilCompareMask;
dispatch->dispatch_vkCmdSetStencilWriteMask = vkr_dispatch_vkCmdSetStencilWriteMask;
dispatch->dispatch_vkCmdSetStencilReference = vkr_dispatch_vkCmdSetStencilReference;
dispatch->dispatch_vkCmdBindDescriptorSets = vkr_dispatch_vkCmdBindDescriptorSets;
dispatch->dispatch_vkCmdBindIndexBuffer = vkr_dispatch_vkCmdBindIndexBuffer;
dispatch->dispatch_vkCmdBindVertexBuffers = vkr_dispatch_vkCmdBindVertexBuffers;
dispatch->dispatch_vkCmdDraw = vkr_dispatch_vkCmdDraw;
dispatch->dispatch_vkCmdDrawIndexed = vkr_dispatch_vkCmdDrawIndexed;
dispatch->dispatch_vkCmdDrawIndirect = vkr_dispatch_vkCmdDrawIndirect;
dispatch->dispatch_vkCmdDrawIndexedIndirect = vkr_dispatch_vkCmdDrawIndexedIndirect;
dispatch->dispatch_vkCmdDispatch = vkr_dispatch_vkCmdDispatch;
dispatch->dispatch_vkCmdDispatchIndirect = vkr_dispatch_vkCmdDispatchIndirect;
dispatch->dispatch_vkCmdCopyBuffer = vkr_dispatch_vkCmdCopyBuffer;
dispatch->dispatch_vkCmdCopyBuffer2 = vkr_dispatch_vkCmdCopyBuffer2;
dispatch->dispatch_vkCmdCopyImage = vkr_dispatch_vkCmdCopyImage;
dispatch->dispatch_vkCmdCopyImage2 = vkr_dispatch_vkCmdCopyImage2;
dispatch->dispatch_vkCmdBlitImage = vkr_dispatch_vkCmdBlitImage;
dispatch->dispatch_vkCmdBlitImage2 = vkr_dispatch_vkCmdBlitImage2;
dispatch->dispatch_vkCmdCopyBufferToImage = vkr_dispatch_vkCmdCopyBufferToImage;
dispatch->dispatch_vkCmdCopyBufferToImage2 = vkr_dispatch_vkCmdCopyBufferToImage2;
dispatch->dispatch_vkCmdCopyImageToBuffer = vkr_dispatch_vkCmdCopyImageToBuffer;
dispatch->dispatch_vkCmdCopyImageToBuffer2 = vkr_dispatch_vkCmdCopyImageToBuffer2;
dispatch->dispatch_vkCmdUpdateBuffer = vkr_dispatch_vkCmdUpdateBuffer;
dispatch->dispatch_vkCmdFillBuffer = vkr_dispatch_vkCmdFillBuffer;
dispatch->dispatch_vkCmdClearColorImage = vkr_dispatch_vkCmdClearColorImage;
dispatch->dispatch_vkCmdClearDepthStencilImage =
vkr_dispatch_vkCmdClearDepthStencilImage;
dispatch->dispatch_vkCmdClearAttachments = vkr_dispatch_vkCmdClearAttachments;
dispatch->dispatch_vkCmdResolveImage = vkr_dispatch_vkCmdResolveImage;
dispatch->dispatch_vkCmdResolveImage2 = vkr_dispatch_vkCmdResolveImage2;
dispatch->dispatch_vkCmdSetEvent = vkr_dispatch_vkCmdSetEvent;
dispatch->dispatch_vkCmdResetEvent = vkr_dispatch_vkCmdResetEvent;
dispatch->dispatch_vkCmdWaitEvents = vkr_dispatch_vkCmdWaitEvents;
dispatch->dispatch_vkCmdPipelineBarrier = vkr_dispatch_vkCmdPipelineBarrier;
dispatch->dispatch_vkCmdBeginQuery = vkr_dispatch_vkCmdBeginQuery;
dispatch->dispatch_vkCmdEndQuery = vkr_dispatch_vkCmdEndQuery;
dispatch->dispatch_vkCmdResetQueryPool = vkr_dispatch_vkCmdResetQueryPool;
dispatch->dispatch_vkCmdWriteTimestamp = vkr_dispatch_vkCmdWriteTimestamp;
dispatch->dispatch_vkCmdCopyQueryPoolResults = vkr_dispatch_vkCmdCopyQueryPoolResults;
dispatch->dispatch_vkCmdPushConstants = vkr_dispatch_vkCmdPushConstants;
dispatch->dispatch_vkCmdBeginRenderPass = vkr_dispatch_vkCmdBeginRenderPass;
dispatch->dispatch_vkCmdNextSubpass = vkr_dispatch_vkCmdNextSubpass;
dispatch->dispatch_vkCmdEndRenderPass = vkr_dispatch_vkCmdEndRenderPass;
dispatch->dispatch_vkCmdExecuteCommands = vkr_dispatch_vkCmdExecuteCommands;
dispatch->dispatch_vkCmdSetDeviceMask = vkr_dispatch_vkCmdSetDeviceMask;
dispatch->dispatch_vkCmdDispatchBase = vkr_dispatch_vkCmdDispatchBase;
dispatch->dispatch_vkCmdBeginRenderPass2 = vkr_dispatch_vkCmdBeginRenderPass2;
dispatch->dispatch_vkCmdNextSubpass2 = vkr_dispatch_vkCmdNextSubpass2;
dispatch->dispatch_vkCmdEndRenderPass2 = vkr_dispatch_vkCmdEndRenderPass2;
dispatch->dispatch_vkCmdDrawIndirectCount = vkr_dispatch_vkCmdDrawIndirectCount;
dispatch->dispatch_vkCmdDrawIndexedIndirectCount =
vkr_dispatch_vkCmdDrawIndexedIndirectCount;
dispatch->dispatch_vkCmdSetLineStippleEXT = vkr_dispatch_vkCmdSetLineStippleEXT;
dispatch->dispatch_vkCmdBindTransformFeedbackBuffersEXT =
vkr_dispatch_vkCmdBindTransformFeedbackBuffersEXT;
dispatch->dispatch_vkCmdBeginTransformFeedbackEXT =
vkr_dispatch_vkCmdBeginTransformFeedbackEXT;
dispatch->dispatch_vkCmdEndTransformFeedbackEXT =
vkr_dispatch_vkCmdEndTransformFeedbackEXT;
dispatch->dispatch_vkCmdBeginQueryIndexedEXT = vkr_dispatch_vkCmdBeginQueryIndexedEXT;
dispatch->dispatch_vkCmdEndQueryIndexedEXT = vkr_dispatch_vkCmdEndQueryIndexedEXT;
dispatch->dispatch_vkCmdDrawIndirectByteCountEXT =
vkr_dispatch_vkCmdDrawIndirectByteCountEXT;
dispatch->dispatch_vkCmdBindVertexBuffers2 = vkr_dispatch_vkCmdBindVertexBuffers2;
dispatch->dispatch_vkCmdSetCullMode = vkr_dispatch_vkCmdSetCullMode;
dispatch->dispatch_vkCmdSetDepthBoundsTestEnable =
vkr_dispatch_vkCmdSetDepthBoundsTestEnable;
dispatch->dispatch_vkCmdSetDepthCompareOp = vkr_dispatch_vkCmdSetDepthCompareOp;
dispatch->dispatch_vkCmdSetDepthTestEnable = vkr_dispatch_vkCmdSetDepthTestEnable;
dispatch->dispatch_vkCmdSetDepthWriteEnable = vkr_dispatch_vkCmdSetDepthWriteEnable;
dispatch->dispatch_vkCmdSetFrontFace = vkr_dispatch_vkCmdSetFrontFace;
dispatch->dispatch_vkCmdSetPrimitiveTopology = vkr_dispatch_vkCmdSetPrimitiveTopology;
dispatch->dispatch_vkCmdSetScissorWithCount = vkr_dispatch_vkCmdSetScissorWithCount;
dispatch->dispatch_vkCmdSetStencilOp = vkr_dispatch_vkCmdSetStencilOp;
dispatch->dispatch_vkCmdSetStencilTestEnable = vkr_dispatch_vkCmdSetStencilTestEnable;
dispatch->dispatch_vkCmdSetViewportWithCount = vkr_dispatch_vkCmdSetViewportWithCount;
/* VK_KHR_dynamic_rendering */
dispatch->dispatch_vkCmdBeginRendering = vkr_dispatch_vkCmdBeginRendering;
dispatch->dispatch_vkCmdEndRendering = vkr_dispatch_vkCmdEndRendering;
/* VK_KHR_synchronization2 */
dispatch->dispatch_vkCmdPipelineBarrier2 = vkr_dispatch_vkCmdPipelineBarrier2;
dispatch->dispatch_vkCmdResetEvent2 = vkr_dispatch_vkCmdResetEvent2;
dispatch->dispatch_vkCmdSetEvent2 = vkr_dispatch_vkCmdSetEvent2;
dispatch->dispatch_vkCmdWaitEvents2 = vkr_dispatch_vkCmdWaitEvents2;
dispatch->dispatch_vkCmdWriteTimestamp2 = vkr_dispatch_vkCmdWriteTimestamp2;
/* VK_EXT_extended_dynamic_state2 */
dispatch->dispatch_vkCmdSetRasterizerDiscardEnable =
vkr_dispatch_vkCmdSetRasterizerDiscardEnable;
dispatch->dispatch_vkCmdSetPrimitiveRestartEnable =
vkr_dispatch_vkCmdSetPrimitiveRestartEnable;
dispatch->dispatch_vkCmdSetPatchControlPointsEXT =
vkr_dispatch_vkCmdSetPatchControlPointsEXT;
dispatch->dispatch_vkCmdSetLogicOpEXT = vkr_dispatch_vkCmdSetLogicOpEXT;
dispatch->dispatch_vkCmdSetDepthBiasEnable = vkr_dispatch_vkCmdSetDepthBiasEnable;
/* VK_EXT_conditional_rendering */
dispatch->dispatch_vkCmdBeginConditionalRenderingEXT =
vkr_dispatch_vkCmdBeginConditionalRenderingEXT;
dispatch->dispatch_vkCmdEndConditionalRenderingEXT =
vkr_dispatch_vkCmdEndConditionalRenderingEXT;
/* VK_EXT_multi_draw */
dispatch->dispatch_vkCmdDrawMultiEXT = vkr_dispatch_vkCmdDrawMultiEXT;
dispatch->dispatch_vkCmdDrawMultiIndexedEXT = vkr_dispatch_vkCmdDrawMultiIndexedEXT;
/* VK_KHR_push_descriptor */
dispatch->dispatch_vkCmdPushDescriptorSetKHR = vkr_dispatch_vkCmdPushDescriptorSetKHR;
dispatch->dispatch_vkCmdPushDescriptorSetWithTemplateKHR = NULL;
/* VK_EXT_color_write_enable */
dispatch->dispatch_vkCmdSetColorWriteEnableEXT =
vkr_dispatch_vkCmdSetColorWriteEnableEXT;
}