VulkanRenderer: Fix views and arrays support

This commit is contained in:
SirLynix
2022-12-02 22:59:07 +01:00
committed by Jérôme Leclercq
parent 56acbb2694
commit 4ae3f51174
6 changed files with 73 additions and 15 deletions

View File

@@ -34,6 +34,7 @@ namespace Nz
UInt8 GetLevelCount() const override;
VulkanTexture* GetParentTexture() const override;
Vector3ui GetSize(UInt8 level = 0) const override;
inline const VkImageSubresourceRange& GetSubresourceRange() const;
ImageType GetType() const override;
using Texture::Update;

View File

@@ -16,6 +16,11 @@ namespace Nz
{
return m_imageView;
}
inline const VkImageSubresourceRange& VulkanTexture::GetSubresourceRange() const
{
return m_imageRange;
}
}
#include <Nazara/VulkanRenderer/DebugOff.hpp>

View File

@@ -80,7 +80,7 @@ namespace Nz
inline VkResult GetLastErrorCode() const;
inline CommandPool& GetPool();
inline void ImageBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkImageLayout oldLayout, VkImageLayout newLayout, VkImage image, VkImageAspectFlags aspectFlags);
inline void ImageBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkImageLayout oldLayout, VkImageLayout newLayout, VkImage image, const VkImageSubresourceRange& subresourceRange);
inline void InsertDebugLabel(const char* label);
inline void InsertDebugLabel(const char* label, Color color);

View File

@@ -355,7 +355,7 @@ namespace Nz
return *m_pool;
}
inline void CommandBuffer::ImageBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkImageLayout oldLayout, VkImageLayout newLayout, VkImage image, VkImageAspectFlags aspectFlags)
inline void CommandBuffer::ImageBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkImageLayout oldLayout, VkImageLayout newLayout, VkImage image, const VkImageSubresourceRange& subresourceRange)
{
VkImageMemoryBarrier imageBarrier = {
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
@@ -367,11 +367,7 @@ namespace Nz
VK_QUEUE_FAMILY_IGNORED,
VK_QUEUE_FAMILY_IGNORED,
image,
{
aspectFlags,
0, 1,
0, 1
}
subresourceRange
};
return PipelineBarrier(srcStageMask, dstStageMask, dependencyFlags, imageBarrier);