diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h index 25246865..f70ad676 100644 --- a/src/dxvk/dxvk_cmdlist.h +++ b/src/dxvk/dxvk_cmdlist.h @@ -221,12 +221,32 @@ namespace dxvk { } + void cmdBeginQueryIndexed( + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index) { + m_vkd->vkCmdBeginQueryIndexedEXT( + m_execBuffer, queryPool, query, flags, index); + } + + void cmdBeginRenderPass( const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) { m_vkd->vkCmdBeginRenderPass(m_execBuffer, pRenderPassBegin, contents); } + + + void cmdBeginTransformFeedback( + uint32_t firstBuffer, + uint32_t bufferCount, + const VkBuffer* counterBuffers, + const VkDeviceSize* counterOffsets) { + m_vkd->vkCmdBeginTransformFeedbackEXT(m_execBuffer, + firstBuffer, bufferCount, counterBuffers, counterOffsets); + } void cmdBindDescriptorSet( @@ -256,6 +276,17 @@ namespace dxvk { m_vkd->vkCmdBindPipeline(m_execBuffer, pipelineBindPoint, pipeline); } + + + void cmdBindTransformFeedbackBuffers( + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes) { + m_vkd->vkCmdBindTransformFeedbackBuffersEXT(m_execBuffer, + firstBinding, bindingCount, pBuffers, pOffsets, pSizes); + } void cmdBindVertexBuffers( @@ -425,6 +456,19 @@ namespace dxvk { m_vkd->vkCmdDrawIndexedIndirect(m_execBuffer, buffer, offset, drawCount, stride); } + + + void cmdDrawIndirectVertexCount( + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride) { + m_vkd->vkCmdDrawIndirectByteCountEXT(m_execBuffer, + instanceCount, firstInstance, counterBuffer, + counterBufferOffset, counterOffset, vertexStride); + } void cmdEndQuery( @@ -432,6 +476,15 @@ namespace dxvk { uint32_t query) { m_vkd->vkCmdEndQuery(m_execBuffer, queryPool, query); } + + + void cmdEndQueryIndexed( + VkQueryPool queryPool, + uint32_t query, + uint32_t index) { + m_vkd->vkCmdEndQueryIndexedEXT( + m_execBuffer, queryPool, query, index); + } void cmdEndRenderPass() { @@ -439,6 +492,16 @@ namespace dxvk { } + void cmdEndTransformFeedback( + uint32_t firstBuffer, + uint32_t bufferCount, + const VkBuffer* counterBuffers, + const VkDeviceSize* counterOffsets) { + m_vkd->vkCmdEndTransformFeedbackEXT(m_execBuffer, + firstBuffer, bufferCount, counterBuffers, counterOffsets); + } + + void cmdFillBuffer( VkBuffer dstBuffer, VkDeviceSize dstOffset, diff --git a/src/dxvk/vulkan/dxvk_vulkan_loader.h b/src/dxvk/vulkan/dxvk_vulkan_loader.h index 6b2a53ec..8a9b8508 100644 --- a/src/dxvk/vulkan/dxvk_vulkan_loader.h +++ b/src/dxvk/vulkan/dxvk_vulkan_loader.h @@ -284,6 +284,15 @@ namespace dxvk::vk { VULKAN_FN(vkGetBufferMemoryRequirements2KHR); VULKAN_FN(vkGetImageMemoryRequirements2KHR); #endif + + #ifdef VK_EXT_transform_feedback + VULKAN_FN(vkCmdBindTransformFeedbackBuffersEXT); + VULKAN_FN(vkCmdBeginTransformFeedbackEXT); + VULKAN_FN(vkCmdEndTransformFeedbackEXT); + VULKAN_FN(vkCmdDrawIndirectByteCountEXT); + VULKAN_FN(vkCmdBeginQueryIndexedEXT); + VULKAN_FN(vkCmdEndQueryIndexedEXT); + #endif }; } \ No newline at end of file