test/binding: inherit Descriptor* from NonDispHandle
This also assumes VkDescriptor{SetLayout,Pool,Set} does not require any
VkDeviceMemory.
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index e66384b..d502aa4 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -482,7 +482,7 @@
VkDescriptorSet VkDescriptorSetObj::GetDescriptorSetHandle() const
{
- return m_set->obj();
+ return m_set->handle();
}
void VkDescriptorSetObj::CreateVKDescriptorSet(VkCommandBufferObj *cmdBuffer)
@@ -529,7 +529,7 @@
size_t imageSamplerCount = 0;
for (std::vector<VkWriteDescriptorSet>::iterator it = m_writes.begin();
it != m_writes.end(); it++) {
- it->destSet = m_set->obj();
+ it->destSet = m_set->handle();
if (it->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)
it->pDescriptors = &m_imageSamplerDescriptors[imageSamplerCount++];
}
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index a72a628..74a92d7 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -854,8 +854,8 @@
void PipelineLayout::init(const Device &dev, VkPipelineLayoutCreateInfo &info, const std::vector<const DescriptorSetLayout *> &layouts)
{
- const std::vector<VkDescriptorSetLayout> layout_objs = make_objects<VkDescriptorSetLayout>(layouts);
- info.pSetLayouts = &layout_objs[0];
+ const std::vector<VkDescriptorSetLayout> layout_handles = make_handles<VkDescriptorSetLayout>(layouts);
+ info.pSetLayouts = &layout_handles[0];
NON_DISPATCHABLE_HANDLE_INIT(vkCreatePipelineLayout, dev, &info);
}
@@ -867,40 +867,42 @@
NON_DISPATCHABLE_HANDLE_INIT(vkCreateSampler, dev, &info);
}
+NON_DISPATCHABLE_HANDLE_DTOR(DescriptorSetLayout, vkDestroyObject, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)
+
void DescriptorSetLayout::init(const Device &dev, const VkDescriptorSetLayoutCreateInfo &info)
{
- DERIVED_OBJECT_TYPE_INIT(vkCreateDescriptorSetLayout, dev, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, &info);
- alloc_memory();
+ NON_DISPATCHABLE_HANDLE_INIT(vkCreateDescriptorSetLayout, dev, &info);
}
+NON_DISPATCHABLE_HANDLE_DTOR(DescriptorPool, vkDestroyObject, VK_OBJECT_TYPE_DESCRIPTOR_POOL)
+
void DescriptorPool::init(const Device &dev, VkDescriptorPoolUsage usage,
uint32_t max_sets, const VkDescriptorPoolCreateInfo &info)
{
- DERIVED_OBJECT_TYPE_INIT(vkCreateDescriptorPool, dev, VK_OBJECT_TYPE_DESCRIPTOR_POOL, usage, max_sets, &info);
- alloc_memory();
+ NON_DISPATCHABLE_HANDLE_INIT(vkCreateDescriptorPool, dev, usage, max_sets, &info);
}
void DescriptorPool::reset()
{
- EXPECT(vkResetDescriptorPool(dev_->handle(), obj()) == VK_SUCCESS);
+ EXPECT(vkResetDescriptorPool(device(), handle()) == VK_SUCCESS);
}
std::vector<DescriptorSet *> DescriptorPool::alloc_sets(const Device &dev, VkDescriptorSetUsage usage, const std::vector<const DescriptorSetLayout *> &layouts)
{
- const std::vector<VkDescriptorSetLayout> layout_objs = make_objects<VkDescriptorSetLayout>(layouts);
+ const std::vector<VkDescriptorSetLayout> layout_handles = make_handles<VkDescriptorSetLayout>(layouts);
- std::vector<VkDescriptorSet> set_objs;
- set_objs.resize(layout_objs.size());
+ std::vector<VkDescriptorSet> set_handles;
+ set_handles.resize(layout_handles.size());
uint32_t set_count;
- VkResult err = vkAllocDescriptorSets(dev_->handle(), obj(), usage, layout_objs.size(), &layout_objs[0], &set_objs[0], &set_count);
+ VkResult err = vkAllocDescriptorSets(device(), handle(), usage, layout_handles.size(), &layout_handles[0], &set_handles[0], &set_count);
if (err == VK_SUCCESS)
- EXPECT(set_count == set_objs.size());
- set_objs.resize(set_count);
+ EXPECT(set_count == set_handles.size());
+ set_handles.resize(set_count);
std::vector<DescriptorSet *> sets;
sets.reserve(set_count);
- for (std::vector<VkDescriptorSet>::const_iterator it = set_objs.begin(); it != set_objs.end(); it++) {
+ for (std::vector<VkDescriptorSet>::const_iterator it = set_handles.begin(); it != set_handles.end(); it++) {
// do descriptor sets need memories bound?
DescriptorSet *descriptorSet = new DescriptorSet(dev, *it);
sets.push_back(descriptorSet);
@@ -919,6 +921,8 @@
return (set.empty()) ? NULL : set[0];
}
+NON_DISPATCHABLE_HANDLE_DTOR(DescriptorSet, vkDestroyObject, VK_OBJECT_TYPE_DESCRIPTOR_SET)
+
void DynamicVpStateObject::init(const Device &dev, const VkDynamicVpStateCreateInfo &info)
{
DERIVED_OBJECT_TYPE_INIT(vkCreateDynamicViewportState, dev, VK_OBJECT_TYPE_DYNAMIC_VP_STATE, &info);
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index fd3ecd1..057ce7e 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -596,14 +596,18 @@
void init(const Device &dev, const VkSamplerCreateInfo &info);
};
-class DescriptorSetLayout : public DerivedObject<VkDescriptorSetLayout, Object, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT> {
+class DescriptorSetLayout : public internal::NonDispHandle<VkDescriptorSetLayout> {
public:
+ ~DescriptorSetLayout();
+
// vkCreateDescriptorSetLayout()
void init(const Device &dev, const VkDescriptorSetLayoutCreateInfo &info);
};
-class DescriptorPool : public DerivedObject<VkDescriptorPool, Object, VK_OBJECT_TYPE_DESCRIPTOR_POOL> {
+class DescriptorPool : public internal::NonDispHandle<VkDescriptorPool> {
public:
+ ~DescriptorPool();
+
// vkCreateDescriptorPool()
void init(const Device &dev, VkDescriptorPoolUsage usage,
uint32_t max_sets, const VkDescriptorPoolCreateInfo &info);
@@ -617,10 +621,12 @@
DescriptorSet *alloc_sets(const Device &dev, VkDescriptorSetUsage usage, const DescriptorSetLayout &layout);
};
-class DescriptorSet : public DerivedObject<VkDescriptorSet, Object, VK_OBJECT_TYPE_DESCRIPTOR_SET> {
+class DescriptorSet : public internal::NonDispHandle<VkDescriptorSet> {
public:
- explicit DescriptorSet() : DerivedObject() {}
- explicit DescriptorSet(const Device &dev, VkDescriptorSet set) : DerivedObject(dev, set) {}
+ ~DescriptorSet();
+
+ explicit DescriptorSet() : NonDispHandle() {}
+ explicit DescriptorSet(const Device &dev, VkDescriptorSet set) : NonDispHandle(dev.handle(), set) {}
};
class DynamicVpStateObject : public DerivedObject<VkDynamicVpState, DynamicStateObject, VK_OBJECT_TYPE_DYNAMIC_VP_STATE> {
@@ -852,7 +858,7 @@
{
VkWriteDescriptorSet write = {};
write.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
- write.destSet = set.obj();
+ write.destSet = set.handle();
write.destBinding = binding;
write.destArrayElement = array_element;
write.count = count;
@@ -873,10 +879,10 @@
{
VkCopyDescriptorSet copy = {};
copy.sType = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET;
- copy.srcSet = src_set.obj();
+ copy.srcSet = src_set.handle();
copy.srcBinding = src_binding;
copy.srcArrayElement = src_array_element;
- copy.destSet = dst_set.obj();
+ copy.destSet = dst_set.handle();
copy.destBinding = dst_binding;
copy.destArrayElement = dst_array_element;
copy.count = count;