Serialise memory requirements in vulkan with vkCreateBuffer/CreateImage

This commit is contained in:
baldurk
2017-11-24 13:48:49 +00:00
parent e2cea3d302
commit 2651ef3185
3 changed files with 29 additions and 0 deletions
+1
View File
@@ -466,6 +466,7 @@ DECLARE_REFLECTION_STRUCT(VkDeviceCreateInfo);
DECLARE_REFLECTION_STRUCT(VkBufferCreateInfo);
DECLARE_REFLECTION_STRUCT(VkBufferViewCreateInfo);
DECLARE_REFLECTION_STRUCT(VkImageCreateInfo);
DECLARE_REFLECTION_STRUCT(VkMemoryRequirements);
DECLARE_REFLECTION_STRUCT(VkImageViewCreateInfo);
DECLARE_REFLECTION_STRUCT(VkSparseMemoryBind);
DECLARE_REFLECTION_STRUCT(VkBindSparseInfo);
+9
View File
@@ -538,6 +538,14 @@ void Deserialise(const VkImageCreateInfo &el)
delete[] el.pQueueFamilyIndices;
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkMemoryRequirements &el)
{
SERIALISE_MEMBER(size);
SERIALISE_MEMBER(alignment);
SERIALISE_MEMBER(memoryTypeBits);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkImageViewCreateInfo &el)
{
@@ -1822,6 +1830,7 @@ INSTANTIATE_SERIALISE_TYPE(VkBufferCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkBufferViewCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkImageCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkImageViewCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkMemoryRequirements);
INSTANTIATE_SERIALISE_TYPE(VkSparseMemoryBind);
INSTANTIATE_SERIALISE_TYPE(VkBindSparseInfo);
INSTANTIATE_SERIALISE_TYPE(VkSubmitInfo);
@@ -1081,9 +1081,19 @@ bool WrappedVulkan::Serialise_vkCreateBuffer(SerialiserType &ser, VkDevice devic
const VkAllocationCallbacks *pAllocator,
VkBuffer *pBuffer)
{
VkMemoryRequirements memoryRequirements = {};
if(ser.IsWriting())
{
ObjDisp(device)->GetBufferMemoryRequirements(Unwrap(device), Unwrap(*pBuffer),
&memoryRequirements);
}
SERIALISE_ELEMENT(device);
SERIALISE_ELEMENT_LOCAL(CreateInfo, *pCreateInfo);
SERIALISE_ELEMENT_LOCAL(Buffer, GetResID(*pBuffer));
// unused at the moment, just for user information
SERIALISE_ELEMENT(memoryRequirements);
SERIALISE_CHECK_READ_ERRORS();
@@ -1298,9 +1308,18 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device
const VkImageCreateInfo *pCreateInfo,
const VkAllocationCallbacks *pAllocator, VkImage *pImage)
{
VkMemoryRequirements memoryRequirements = {};
if(ser.IsWriting())
{
ObjDisp(device)->GetImageMemoryRequirements(Unwrap(device), Unwrap(*pImage), &memoryRequirements);
}
SERIALISE_ELEMENT(device);
SERIALISE_ELEMENT_LOCAL(CreateInfo, *pCreateInfo);
SERIALISE_ELEMENT_LOCAL(Image, GetResID(*pImage));
// unused at the moment, just for user information
SERIALISE_ELEMENT(memoryRequirements);
SERIALISE_CHECK_READ_ERRORS();