Cache call to FormatImageAspects

This commit is contained in:
baldurk
2020-08-18 13:15:15 +01:00
parent d0f59de405
commit 6eca4a4cd4
2 changed files with 10 additions and 1 deletions
+5 -1
View File
@@ -878,6 +878,7 @@ struct ImageInfo
VkFormat format = VK_FORMAT_UNDEFINED;
VkImageLayout initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
VkSharingMode sharingMode = VK_SHARING_MODE_EXCLUSIVE;
VkImageAspectFlags aspects = 0;
ImageInfo() {}
ImageInfo(VkFormat format, VkExtent3D extent, int levelCount, int layerCount, int sampleCount,
VkImageLayout initialLayout, VkSharingMode sharingMode)
@@ -889,6 +890,7 @@ struct ImageInfo
initialLayout(initialLayout),
sharingMode(sharingMode)
{
aspects = FormatImageAspects(format);
}
ImageInfo(const VkImageCreateInfo &ci)
: layerCount(ci.arrayLayers),
@@ -912,6 +914,7 @@ struct ImageInfo
{
extent.depth = 1;
}
aspects = FormatImageAspects(format);
}
ImageInfo(const VkSwapchainCreateInfoKHR &ci)
: layerCount(ci.imageArrayLayers),
@@ -923,8 +926,9 @@ struct ImageInfo
extent.width = ci.imageExtent.width;
extent.height = ci.imageExtent.height;
extent.depth = 1;
aspects = FormatImageAspects(format);
}
VkImageAspectFlags Aspects() const { return FormatImageAspects(format); }
VkImageAspectFlags Aspects() const { return aspects; }
ImageSubresourceRange FullRange() const;
inline bool operator==(const ImageInfo &other) const
{
+5
View File
@@ -4153,6 +4153,11 @@ void DoSerialise(SerialiserType &ser, ImageInfo &el)
SERIALISE_MEMBER(initialLayout);
SERIALISE_MEMBER(sharingMode);
}
if(ser.IsReading())
{
el.aspects = FormatImageAspects(el.format);
}
}
template <typename SerialiserType>