mirror of
https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git
synced 2025-05-15 09:18:49 +00:00
safestruct: Remove safe_VkDescriptorDataEXT
This commit is contained in:
parent
1defcd3208
commit
1135918c96
4 changed files with 9 additions and 519 deletions
|
@ -13494,33 +13494,11 @@ struct safe_VkDescriptorBufferBindingPushDescriptorBufferHandleEXT {
|
||||||
return reinterpret_cast<VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const*>(this);
|
return reinterpret_cast<VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const*>(this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
union safe_VkDescriptorDataEXT {
|
|
||||||
const VkSampler* pSampler{};
|
|
||||||
const VkDescriptorImageInfo* pCombinedImageSampler;
|
|
||||||
const VkDescriptorImageInfo* pInputAttachmentImage;
|
|
||||||
const VkDescriptorImageInfo* pSampledImage;
|
|
||||||
const VkDescriptorImageInfo* pStorageImage;
|
|
||||||
safe_VkDescriptorAddressInfoEXT* pUniformTexelBuffer;
|
|
||||||
safe_VkDescriptorAddressInfoEXT* pStorageTexelBuffer;
|
|
||||||
safe_VkDescriptorAddressInfoEXT* pUniformBuffer;
|
|
||||||
safe_VkDescriptorAddressInfoEXT* pStorageBuffer;
|
|
||||||
VkDeviceAddress accelerationStructure;
|
|
||||||
char type_at_end[sizeof(VkDescriptorDataEXT) + sizeof(VkDescriptorGetInfoEXT::type)];
|
|
||||||
safe_VkDescriptorDataEXT(const VkDescriptorDataEXT* in_struct, const VkDescriptorType type, PNextCopyState* copy_state = {});
|
|
||||||
safe_VkDescriptorDataEXT(const safe_VkDescriptorDataEXT& copy_src);
|
|
||||||
safe_VkDescriptorDataEXT& operator=(const safe_VkDescriptorDataEXT& copy_src);
|
|
||||||
safe_VkDescriptorDataEXT();
|
|
||||||
~safe_VkDescriptorDataEXT();
|
|
||||||
void initialize(const VkDescriptorDataEXT* in_struct, const VkDescriptorType type, PNextCopyState* copy_state = {});
|
|
||||||
void initialize(const safe_VkDescriptorDataEXT* copy_src, PNextCopyState* copy_state = {});
|
|
||||||
VkDescriptorDataEXT* ptr() { return reinterpret_cast<VkDescriptorDataEXT*>(this); }
|
|
||||||
VkDescriptorDataEXT const* ptr() const { return reinterpret_cast<VkDescriptorDataEXT const*>(this); }
|
|
||||||
};
|
|
||||||
struct safe_VkDescriptorGetInfoEXT {
|
struct safe_VkDescriptorGetInfoEXT {
|
||||||
VkStructureType sType;
|
VkStructureType sType;
|
||||||
const void* pNext{};
|
const void* pNext{};
|
||||||
VkDescriptorType type;
|
VkDescriptorType type;
|
||||||
safe_VkDescriptorDataEXT data;
|
VkDescriptorDataEXT data;
|
||||||
|
|
||||||
safe_VkDescriptorGetInfoEXT(const VkDescriptorGetInfoEXT* in_struct, PNextCopyState* copy_state = {}, bool copy_pnext = true);
|
safe_VkDescriptorGetInfoEXT(const VkDescriptorGetInfoEXT* in_struct, PNextCopyState* copy_state = {}, bool copy_pnext = true);
|
||||||
safe_VkDescriptorGetInfoEXT(const safe_VkDescriptorGetInfoEXT& copy_src);
|
safe_VkDescriptorGetInfoEXT(const safe_VkDescriptorGetInfoEXT& copy_src);
|
||||||
|
|
|
@ -77,9 +77,6 @@ class SafeStructOutputGenerator(BaseGenerator):
|
||||||
# vku::safe::AccelerationStructureGeometryKHR needs to know if we're doing a host or device build
|
# vku::safe::AccelerationStructureGeometryKHR needs to know if we're doing a host or device build
|
||||||
'VkAccelerationStructureGeometryKHR' :
|
'VkAccelerationStructureGeometryKHR' :
|
||||||
', const bool is_host, const VkAccelerationStructureBuildRangeInfoKHR *build_range_info',
|
', const bool is_host, const VkAccelerationStructureBuildRangeInfoKHR *build_range_info',
|
||||||
# vku::safe::DescriptorDataEXT needs to know what field of union is intialized
|
|
||||||
'VkDescriptorDataEXT' :
|
|
||||||
', const VkDescriptorType type',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Determine if a structure needs a safe_struct helper function
|
# Determine if a structure needs a safe_struct helper function
|
||||||
|
@ -87,6 +84,8 @@ class SafeStructOutputGenerator(BaseGenerator):
|
||||||
def needSafeStruct(self, struct: Struct) -> bool:
|
def needSafeStruct(self, struct: Struct) -> bool:
|
||||||
if struct.name in self.no_autogen:
|
if struct.name in self.no_autogen:
|
||||||
return False
|
return False
|
||||||
|
if struct.name in self.union_of_pointers:
|
||||||
|
return False
|
||||||
if 'VkBase' in struct.name:
|
if 'VkBase' in struct.name:
|
||||||
return False # Ingore structs like VkBaseOutStructure
|
return False # Ingore structs like VkBaseOutStructure
|
||||||
if struct.sType is not None:
|
if struct.sType is not None:
|
||||||
|
@ -189,9 +188,6 @@ class SafeStructOutputGenerator(BaseGenerator):
|
||||||
else:
|
else:
|
||||||
out.append(f'{member.cDeclaration}{initialize};\n')
|
out.append(f'{member.cDeclaration}{initialize};\n')
|
||||||
|
|
||||||
if (struct.name == 'VkDescriptorDataEXT'):
|
|
||||||
out.append('char type_at_end[sizeof(VkDescriptorDataEXT)+sizeof(VkDescriptorGetInfoEXT::type)];')
|
|
||||||
|
|
||||||
constructParam = self.custom_construct_params.get(struct.name, '')
|
constructParam = self.custom_construct_params.get(struct.name, '')
|
||||||
out.append(f'''
|
out.append(f'''
|
||||||
{safe_name}(const {struct.name}* in_struct{constructParam}, PNextCopyState* copy_state = {{}}{copy_pnext});
|
{safe_name}(const {struct.name}* in_struct{constructParam}, PNextCopyState* copy_state = {{}}{copy_pnext});
|
||||||
|
|
|
@ -9179,19 +9179,19 @@ void safe_VkDescriptorBufferBindingPushDescriptorBufferHandleEXT::initialize(
|
||||||
|
|
||||||
safe_VkDescriptorGetInfoEXT::safe_VkDescriptorGetInfoEXT(const VkDescriptorGetInfoEXT* in_struct,
|
safe_VkDescriptorGetInfoEXT::safe_VkDescriptorGetInfoEXT(const VkDescriptorGetInfoEXT* in_struct,
|
||||||
[[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
|
[[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
|
||||||
: sType(in_struct->sType), type(in_struct->type), data(&in_struct->data, in_struct->type) {
|
: sType(in_struct->sType), type(in_struct->type), data(in_struct->data) {
|
||||||
if (copy_pnext) {
|
if (copy_pnext) {
|
||||||
pNext = SafePnextCopy(in_struct->pNext, copy_state);
|
pNext = SafePnextCopy(in_struct->pNext, copy_state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
safe_VkDescriptorGetInfoEXT::safe_VkDescriptorGetInfoEXT()
|
safe_VkDescriptorGetInfoEXT::safe_VkDescriptorGetInfoEXT()
|
||||||
: sType(VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT), pNext(nullptr), type() {}
|
: sType(VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT), pNext(nullptr), type(), data() {}
|
||||||
|
|
||||||
safe_VkDescriptorGetInfoEXT::safe_VkDescriptorGetInfoEXT(const safe_VkDescriptorGetInfoEXT& copy_src) {
|
safe_VkDescriptorGetInfoEXT::safe_VkDescriptorGetInfoEXT(const safe_VkDescriptorGetInfoEXT& copy_src) {
|
||||||
sType = copy_src.sType;
|
sType = copy_src.sType;
|
||||||
type = copy_src.type;
|
type = copy_src.type;
|
||||||
data.initialize(©_src.data);
|
data = copy_src.data;
|
||||||
pNext = SafePnextCopy(copy_src.pNext);
|
pNext = SafePnextCopy(copy_src.pNext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9202,7 +9202,7 @@ safe_VkDescriptorGetInfoEXT& safe_VkDescriptorGetInfoEXT::operator=(const safe_V
|
||||||
|
|
||||||
sType = copy_src.sType;
|
sType = copy_src.sType;
|
||||||
type = copy_src.type;
|
type = copy_src.type;
|
||||||
data.initialize(©_src.data);
|
data = copy_src.data;
|
||||||
pNext = SafePnextCopy(copy_src.pNext);
|
pNext = SafePnextCopy(copy_src.pNext);
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -9214,7 +9214,7 @@ void safe_VkDescriptorGetInfoEXT::initialize(const VkDescriptorGetInfoEXT* in_st
|
||||||
FreePnextChain(pNext);
|
FreePnextChain(pNext);
|
||||||
sType = in_struct->sType;
|
sType = in_struct->sType;
|
||||||
type = in_struct->type;
|
type = in_struct->type;
|
||||||
data.initialize(&in_struct->data, in_struct->type);
|
data = in_struct->data;
|
||||||
pNext = SafePnextCopy(in_struct->pNext, copy_state);
|
pNext = SafePnextCopy(in_struct->pNext, copy_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9222,7 +9222,7 @@ void safe_VkDescriptorGetInfoEXT::initialize(const safe_VkDescriptorGetInfoEXT*
|
||||||
[[maybe_unused]] PNextCopyState* copy_state) {
|
[[maybe_unused]] PNextCopyState* copy_state) {
|
||||||
sType = copy_src->sType;
|
sType = copy_src->sType;
|
||||||
type = copy_src->type;
|
type = copy_src->type;
|
||||||
data.initialize(©_src->data);
|
data = copy_src->data;
|
||||||
pNext = SafePnextCopy(copy_src->pNext);
|
pNext = SafePnextCopy(copy_src->pNext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -303,490 +303,6 @@ void safe_VkRayTracingPipelineCreateInfoCommon::initialize(const VkRayTracingPip
|
||||||
safe_VkRayTracingPipelineCreateInfoKHR::initialize(pCreateInfo);
|
safe_VkRayTracingPipelineCreateInfoKHR::initialize(pCreateInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
safe_VkDescriptorDataEXT::safe_VkDescriptorDataEXT(const VkDescriptorDataEXT* in_struct, const VkDescriptorType type,
|
|
||||||
[[maybe_unused]] PNextCopyState* copy_state) {
|
|
||||||
VkDescriptorType* pType = (VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
pSampler = new VkSampler(*in_struct->pSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
pCombinedImageSampler = new VkDescriptorImageInfo(*in_struct->pCombinedImageSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
pSampledImage = in_struct->pSampledImage ? new VkDescriptorImageInfo(*in_struct->pSampledImage) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
pStorageImage = in_struct->pStorageImage ? new VkDescriptorImageInfo(*in_struct->pStorageImage) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
pInputAttachmentImage = new VkDescriptorImageInfo(*in_struct->pInputAttachmentImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
pUniformTexelBuffer =
|
|
||||||
in_struct->pUniformTexelBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pUniformTexelBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
pStorageTexelBuffer =
|
|
||||||
in_struct->pStorageTexelBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pStorageTexelBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
pUniformBuffer = in_struct->pUniformBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pUniformBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
pStorageBuffer = in_struct->pStorageBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pStorageBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = in_struct->accelerationStructure;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = in_struct->accelerationStructure;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pType = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_VkDescriptorDataEXT::safe_VkDescriptorDataEXT() : type_at_end{0} {
|
|
||||||
VkDescriptorType* pType = (VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
*pType = VK_DESCRIPTOR_TYPE_MAX_ENUM;
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_VkDescriptorDataEXT::safe_VkDescriptorDataEXT(const safe_VkDescriptorDataEXT& copy_src) {
|
|
||||||
pSampler = nullptr;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
accelerationStructure = copy_src.accelerationStructure;
|
|
||||||
|
|
||||||
VkDescriptorType* pType = (VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
VkDescriptorType type = *(VkDescriptorType*)©_src.type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
pSampler = new VkSampler(*copy_src.pSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
pCombinedImageSampler = new VkDescriptorImageInfo(*copy_src.pCombinedImageSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
pSampledImage = new VkDescriptorImageInfo(*copy_src.pSampledImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
pStorageImage = new VkDescriptorImageInfo(*copy_src.pStorageImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
pInputAttachmentImage = new VkDescriptorImageInfo(*copy_src.pInputAttachmentImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
pUniformTexelBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pUniformTexelBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
pStorageTexelBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pStorageTexelBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
pUniformBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pUniformBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
pStorageBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pStorageBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = copy_src.accelerationStructure;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = copy_src.accelerationStructure;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pType = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_VkDescriptorDataEXT& safe_VkDescriptorDataEXT::operator=(const safe_VkDescriptorDataEXT& copy_src) {
|
|
||||||
if (©_src == this) return *this;
|
|
||||||
|
|
||||||
VkDescriptorType& thisType = *(VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (thisType) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
delete pSampler;
|
|
||||||
pSampler = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
delete pCombinedImageSampler;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
delete pSampledImage;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
delete pStorageImage;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
delete pInputAttachmentImage;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
delete pUniformTexelBuffer;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
delete pStorageTexelBuffer;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
delete pUniformBuffer;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
delete pStorageBuffer;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = 0ull;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = 0ull;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
thisType = VK_DESCRIPTOR_TYPE_MAX_ENUM;
|
|
||||||
|
|
||||||
pSampler = nullptr;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
accelerationStructure = copy_src.accelerationStructure;
|
|
||||||
|
|
||||||
VkDescriptorType* pType = (VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
VkDescriptorType type = *(VkDescriptorType*)©_src.type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
pSampler = new VkSampler(*copy_src.pSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
pCombinedImageSampler = new VkDescriptorImageInfo(*copy_src.pCombinedImageSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
pSampledImage = new VkDescriptorImageInfo(*copy_src.pSampledImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
pStorageImage = new VkDescriptorImageInfo(*copy_src.pStorageImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
pInputAttachmentImage = new VkDescriptorImageInfo(*copy_src.pInputAttachmentImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
pUniformTexelBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pUniformTexelBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
pStorageTexelBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pStorageTexelBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
pUniformBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pUniformBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
pStorageBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src.pStorageBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = copy_src.accelerationStructure;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = copy_src.accelerationStructure;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pType = type;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_VkDescriptorDataEXT::~safe_VkDescriptorDataEXT() {
|
|
||||||
VkDescriptorType& thisType = *(VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (thisType) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
delete pSampler;
|
|
||||||
pSampler = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
delete pCombinedImageSampler;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
delete pSampledImage;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
delete pStorageImage;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
delete pInputAttachmentImage;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
delete pUniformTexelBuffer;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
delete pStorageTexelBuffer;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
delete pUniformBuffer;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
delete pStorageBuffer;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = 0ull;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = 0ull;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
thisType = VK_DESCRIPTOR_TYPE_MAX_ENUM;
|
|
||||||
}
|
|
||||||
|
|
||||||
void safe_VkDescriptorDataEXT::initialize(const VkDescriptorDataEXT* in_struct, const VkDescriptorType type,
|
|
||||||
[[maybe_unused]] PNextCopyState* copy_state) {
|
|
||||||
VkDescriptorType& thisType = *(VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (thisType) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
delete pSampler;
|
|
||||||
pSampler = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
delete pCombinedImageSampler;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
delete pSampledImage;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
delete pStorageImage;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
delete pInputAttachmentImage;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
delete pUniformTexelBuffer;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
delete pStorageTexelBuffer;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
delete pUniformBuffer;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
delete pStorageBuffer;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = 0ull;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = 0ull;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
thisType = VK_DESCRIPTOR_TYPE_MAX_ENUM;
|
|
||||||
pSampler = nullptr;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
accelerationStructure = in_struct->accelerationStructure;
|
|
||||||
|
|
||||||
VkDescriptorType* pType = (VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
pSampler = new VkSampler(*in_struct->pSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
pCombinedImageSampler = new VkDescriptorImageInfo(*in_struct->pCombinedImageSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
pSampledImage = in_struct->pSampledImage ? new VkDescriptorImageInfo(*in_struct->pSampledImage) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
pStorageImage = in_struct->pStorageImage ? new VkDescriptorImageInfo(*in_struct->pStorageImage) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
pInputAttachmentImage = new VkDescriptorImageInfo(*in_struct->pInputAttachmentImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
pUniformTexelBuffer =
|
|
||||||
in_struct->pUniformTexelBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pUniformTexelBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
pStorageTexelBuffer =
|
|
||||||
in_struct->pStorageTexelBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pStorageTexelBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
pUniformBuffer = in_struct->pUniformBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pUniformBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
pStorageBuffer = in_struct->pStorageBuffer ? new safe_VkDescriptorAddressInfoEXT(in_struct->pStorageBuffer) : nullptr;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = in_struct->accelerationStructure;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = in_struct->accelerationStructure;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pType = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
void safe_VkDescriptorDataEXT::initialize(const safe_VkDescriptorDataEXT* copy_src, [[maybe_unused]] PNextCopyState* copy_state) {
|
|
||||||
pSampler = nullptr;
|
|
||||||
pCombinedImageSampler = nullptr;
|
|
||||||
pInputAttachmentImage = nullptr;
|
|
||||||
pSampledImage = nullptr;
|
|
||||||
pStorageImage = nullptr;
|
|
||||||
pUniformTexelBuffer = nullptr;
|
|
||||||
pStorageTexelBuffer = nullptr;
|
|
||||||
pUniformBuffer = nullptr;
|
|
||||||
pStorageBuffer = nullptr;
|
|
||||||
accelerationStructure = copy_src->accelerationStructure;
|
|
||||||
|
|
||||||
VkDescriptorType* pType = (VkDescriptorType*)&type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
VkDescriptorType type = *(VkDescriptorType*)©_src->type_at_end[sizeof(VkDescriptorDataEXT)];
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case VK_DESCRIPTOR_TYPE_MAX_ENUM:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLER:
|
|
||||||
pSampler = new VkSampler(*copy_src->pSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
|
|
||||||
pCombinedImageSampler = new VkDescriptorImageInfo(*copy_src->pCombinedImageSampler);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
|
|
||||||
pSampledImage = new VkDescriptorImageInfo(*copy_src->pSampledImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
|
|
||||||
pStorageImage = new VkDescriptorImageInfo(*copy_src->pStorageImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
|
|
||||||
pInputAttachmentImage = new VkDescriptorImageInfo(*copy_src->pInputAttachmentImage);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
|
|
||||||
pUniformTexelBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src->pUniformTexelBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
|
|
||||||
pStorageTexelBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src->pStorageTexelBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
|
||||||
pUniformBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src->pUniformBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
|
||||||
pStorageBuffer = new safe_VkDescriptorAddressInfoEXT(*copy_src->pStorageBuffer);
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:
|
|
||||||
accelerationStructure = copy_src->accelerationStructure;
|
|
||||||
break;
|
|
||||||
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
|
|
||||||
accelerationStructure = copy_src->accelerationStructure;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pType = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_VkGraphicsPipelineCreateInfo::safe_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo* in_struct,
|
safe_VkGraphicsPipelineCreateInfo::safe_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo* in_struct,
|
||||||
const bool uses_color_attachment,
|
const bool uses_color_attachment,
|
||||||
const bool uses_depthstencil_attachment,
|
const bool uses_depthstencil_attachment,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue