diff options
Diffstat (limited to 'tests/vkrenderframework.cpp')
-rw-r--r-- | tests/vkrenderframework.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp index e16b229dd..f0008355f 100644 --- a/tests/vkrenderframework.cpp +++ b/tests/vkrenderframework.cpp @@ -818,6 +818,12 @@ VkQueueObj *VkDeviceObj::GetDefaultQueue() { if (graphics_queues().empty()) return nullptr; return graphics_queues()[0]; } + +VkQueueObj *VkDeviceObj::GetDefaultComputeQueue() { + if (compute_queues().empty()) return nullptr; + return compute_queues()[0]; +} + VkDescriptorSetLayoutObj::VkDescriptorSetLayoutObj(const VkDeviceObj *device, const std::vector<VkDescriptorSetLayoutBinding> &descriptor_set_bindings, VkDescriptorSetLayoutCreateFlags flags, void *pNext) { @@ -1604,7 +1610,7 @@ VkPipelineObj::VkPipelineObj(VkDeviceObj *device) { m_vp_state.pScissors = nullptr; m_rs_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; - m_rs_state.pNext = nullptr; + m_rs_state.pNext = &m_line_state; m_rs_state.flags = 0; m_rs_state.depthClampEnable = VK_FALSE; m_rs_state.rasterizerDiscardEnable = VK_FALSE; @@ -1617,6 +1623,13 @@ VkPipelineObj::VkPipelineObj(VkDeviceObj *device) { m_rs_state.depthBiasSlopeFactor = 0.0f; m_rs_state.lineWidth = 1.0f; + m_line_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT; + m_line_state.pNext = nullptr; + m_line_state.lineRasterizationMode = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT; + m_line_state.stippledLineEnable = VK_FALSE; + m_line_state.lineStippleFactor = 0; + m_line_state.lineStipplePattern = 0; + m_ms_state.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; m_ms_state.pNext = nullptr; m_ms_state.flags = 0; @@ -1692,10 +1705,15 @@ void VkPipelineObj::SetMSAA(const VkPipelineMultisampleStateCreateInfo *ms_state void VkPipelineObj::SetInputAssembly(const VkPipelineInputAssemblyStateCreateInfo *ia_state) { m_ia_state = *ia_state; } -void VkPipelineObj::SetRasterization(const VkPipelineRasterizationStateCreateInfo *rs_state) { m_rs_state = *rs_state; } +void VkPipelineObj::SetRasterization(const VkPipelineRasterizationStateCreateInfo *rs_state) { + m_rs_state = *rs_state; + m_rs_state.pNext = &m_line_state; +} void VkPipelineObj::SetTessellation(const VkPipelineTessellationStateCreateInfo *te_state) { m_te_state = te_state; } +void VkPipelineObj::SetLineState(const VkPipelineRasterizationLineStateCreateInfoEXT *line_state) { m_line_state = *line_state; } + void VkPipelineObj::InitGraphicsPipelineCreateInfo(VkGraphicsPipelineCreateInfo *gp_ci) { gp_ci->stageCount = m_shaderStages.size(); gp_ci->pStages = m_shaderStages.size() ? m_shaderStages.data() : nullptr; @@ -1845,6 +1863,19 @@ void VkCommandBufferObj::ClearDepthStencilImage(VkImage image, VkImageLayout ima vkCmdClearDepthStencilImage(handle(), image, imageLayout, pColor, rangeCount, pRanges); } +void VkCommandBufferObj::BuildAccelerationStructure(VkAccelerationStructureObj *as, VkBuffer scratchBuffer) { + BuildAccelerationStructure(as, scratchBuffer, VK_NULL_HANDLE); +} + +void VkCommandBufferObj::BuildAccelerationStructure(VkAccelerationStructureObj *as, VkBuffer scratchBuffer, VkBuffer instanceData) { + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = + (PFN_vkCmdBuildAccelerationStructureNV)vkGetDeviceProcAddr(as->dev(), "vkCmdBuildAccelerationStructureNV"); + assert(vkCmdBuildAccelerationStructureNV != nullptr); + + vkCmdBuildAccelerationStructureNV(handle(), &as->info(), instanceData, 0, VK_FALSE, as->handle(), VK_NULL_HANDLE, scratchBuffer, + 0); +} + void VkCommandBufferObj::PrepareAttachments(const vector<std::unique_ptr<VkImageObj>> &color_atts, VkDepthStencilObj *depth_stencil_att) { for (const auto &color_att : color_atts) { |