aboutsummaryrefslogtreecommitdiff
path: root/tests/vkrenderframework.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vkrenderframework.cpp')
-rw-r--r--tests/vkrenderframework.cpp35
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) {