mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-13 15:59:23 +01:00
Vulkan: Use correct aspect for D24S8 textures
This commit is contained in:
parent
c70da390a7
commit
2698e311aa
@ -138,7 +138,7 @@ bool VKTexture::CreateView(VkImageViewType type)
|
||||
GetVkFormat(),
|
||||
{VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY,
|
||||
VK_COMPONENT_SWIZZLE_IDENTITY},
|
||||
{GetImageAspectForFormat(GetFormat()), 0, GetLevels(), 0, GetLayers()}};
|
||||
{GetImageViewAspectForFormat(GetFormat()), 0, GetLevels(), 0, GetLayers()}};
|
||||
|
||||
VkResult res = vkCreateImageView(g_vulkan_context->GetDevice(), &view_info, nullptr, &m_view);
|
||||
if (res != VK_SUCCESS)
|
||||
@ -237,6 +237,21 @@ VkImageAspectFlags VKTexture::GetImageAspectForFormat(AbstractTextureFormat form
|
||||
}
|
||||
}
|
||||
|
||||
VkImageAspectFlags VKTexture::GetImageViewAspectForFormat(AbstractTextureFormat format)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case AbstractTextureFormat::D16:
|
||||
case AbstractTextureFormat::D24_S8:
|
||||
case AbstractTextureFormat::D32F_S8:
|
||||
case AbstractTextureFormat::D32F:
|
||||
return VK_IMAGE_ASPECT_DEPTH_BIT;
|
||||
|
||||
default:
|
||||
return VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
}
|
||||
}
|
||||
|
||||
void VKTexture::CopyRectangleFromTexture(const AbstractTexture* src,
|
||||
const MathUtil::Rectangle<int>& src_rect, u32 src_layer,
|
||||
u32 src_level, const MathUtil::Rectangle<int>& dst_rect,
|
||||
@ -743,7 +758,7 @@ void VKStagingTexture::CopyFromTexture(const AbstractTexture* src,
|
||||
|
||||
// Issue the image->buffer copy, but delay it for now.
|
||||
VkBufferImageCopy image_copy = {};
|
||||
const VkImageAspectFlags aspect = VKTexture::GetImageAspectForFormat(src_tex->GetFormat());
|
||||
const VkImageAspectFlags aspect = VKTexture::GetImageViewAspectForFormat(src_tex->GetFormat());
|
||||
image_copy.bufferOffset =
|
||||
static_cast<VkDeviceSize>(static_cast<size_t>(dst_rect.top) * m_config.GetStride() +
|
||||
static_cast<size_t>(dst_rect.left) * m_texel_size);
|
||||
|
@ -37,6 +37,7 @@ public:
|
||||
static VkFormat GetLinearFormat(VkFormat format);
|
||||
static VkFormat GetVkFormatForHostTextureFormat(AbstractTextureFormat format);
|
||||
static VkImageAspectFlags GetImageAspectForFormat(AbstractTextureFormat format);
|
||||
static VkImageAspectFlags GetImageViewAspectForFormat(AbstractTextureFormat format);
|
||||
|
||||
void CopyRectangleFromTexture(const AbstractTexture* src,
|
||||
const MathUtil::Rectangle<int>& src_rect, u32 src_layer,
|
||||
|
Loading…
x
Reference in New Issue
Block a user