tests Add VkPipelineLayoutObj
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 05164ef..5741b61 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -1156,6 +1156,21 @@
assert(VK_SUCCESS == err);
}
+VkPipelineLayoutObj::VkPipelineLayoutObj(VkDeviceObj *device,
+ const std::vector<const VkDescriptorSetLayoutObj *> &descriptor_layouts,
+ const std::vector<VkPushConstantRange> &push_constant_ranges) {
+ VkPipelineLayoutCreateInfo pl_ci = {};
+ pl_ci.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
+ pl_ci.pushConstantRangeCount = static_cast<uint32_t>(push_constant_ranges.size());
+ pl_ci.pPushConstantRanges = push_constant_ranges.data();
+
+ auto descriptor_layouts_unwrapped = MakeTestbindingHandles<const vk_testing::DescriptorSetLayout>(descriptor_layouts);
+
+ init(*device, pl_ci, descriptor_layouts_unwrapped);
+}
+
+void VkPipelineLayoutObj::Reset() { *this = VkPipelineLayoutObj(); }
+
VkPipelineObj::VkPipelineObj(VkDeviceObj *device) {
m_device = device;
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 924ea36..a3fa049 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -383,6 +383,18 @@
VkDeviceObj *m_device;
};
+class VkPipelineLayoutObj : public vk_testing::PipelineLayout {
+ public:
+ VkPipelineLayoutObj() = default;
+ VkPipelineLayoutObj(VkDeviceObj *device, const std::vector<const VkDescriptorSetLayoutObj *> &descriptor_layouts = {},
+ const std::vector<VkPushConstantRange> &push_constant_ranges = {});
+
+ VkPipelineLayoutObj(VkPipelineLayoutObj &&src) = default;
+ VkPipelineLayoutObj &operator=(VkPipelineLayoutObj &&src) = default;
+
+ void Reset();
+};
+
class VkPipelineObj : public vk_testing::Pipeline {
public:
VkPipelineObj(VkDeviceObj *device);
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 3fa3be8..cbb1875 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -643,6 +643,7 @@
void PipelineLayout::init(const Device &dev, VkPipelineLayoutCreateInfo &info,
const std::vector<const DescriptorSetLayout *> &layouts) {
const std::vector<VkDescriptorSetLayout> layout_handles = MakeVkHandles<VkDescriptorSetLayout>(layouts);
+ info.setLayoutCount = layout_handles.size();
info.pSetLayouts = layout_handles.data();
NON_DISPATCHABLE_HANDLE_INIT(vkCreatePipelineLayout, dev, &info);
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 215cced..85b646b 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -542,8 +542,16 @@
class PipelineLayout : public internal::NonDispHandle<VkPipelineLayout> {
public:
+ PipelineLayout() noexcept : NonDispHandle(){};
~PipelineLayout();
+ PipelineLayout(PipelineLayout &&src) = default;
+ PipelineLayout &operator=(PipelineLayout &&src) {
+ this->~PipelineLayout();
+ this->NonDispHandle::operator=(std::move(src));
+ return *this;
+ };
+
// vCreatePipelineLayout()
void init(const Device &dev, VkPipelineLayoutCreateInfo &info, const std::vector<const DescriptorSetLayout *> &layouts);
};