diff options
| author | 2022-08-06 13:11:34 -0700 | |
|---|---|---|
| committer | 2022-08-06 13:11:34 -0700 | |
| commit | 0f2fc6335e09667a4c7635863709516b79aec1e8 (patch) | |
| tree | 7338e378dea01b2c3d7e45dab50ce62114ff068c | |
| parent | Merge pull request #8667 from Kelebek1/xc3 (diff) | |
| parent | vk_texture_cache: return VK_NULL_HANDLE for views of null images (diff) | |
| download | yuzu-0f2fc6335e09667a4c7635863709516b79aec1e8.tar.gz yuzu-0f2fc6335e09667a4c7635863709516b79aec1e8.tar.xz yuzu-0f2fc6335e09667a4c7635863709516b79aec1e8.zip | |
Merge pull request #8700 from liamwhite/xc3-vk-crash
vk_texture_cache: return VK_NULL_HANDLE for views of null images
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index ba6d81420..16463a892 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -1618,6 +1618,9 @@ ImageView::ImageView(TextureCacheRuntime&, const VideoCommon::NullImageViewParam | |||
| 1618 | ImageView::~ImageView() = default; | 1618 | ImageView::~ImageView() = default; |
| 1619 | 1619 | ||
| 1620 | VkImageView ImageView::DepthView() { | 1620 | VkImageView ImageView::DepthView() { |
| 1621 | if (!image_handle) { | ||
| 1622 | return VK_NULL_HANDLE; | ||
| 1623 | } | ||
| 1621 | if (depth_view) { | 1624 | if (depth_view) { |
| 1622 | return *depth_view; | 1625 | return *depth_view; |
| 1623 | } | 1626 | } |
| @@ -1627,6 +1630,9 @@ VkImageView ImageView::DepthView() { | |||
| 1627 | } | 1630 | } |
| 1628 | 1631 | ||
| 1629 | VkImageView ImageView::StencilView() { | 1632 | VkImageView ImageView::StencilView() { |
| 1633 | if (!image_handle) { | ||
| 1634 | return VK_NULL_HANDLE; | ||
| 1635 | } | ||
| 1630 | if (stencil_view) { | 1636 | if (stencil_view) { |
| 1631 | return *stencil_view; | 1637 | return *stencil_view; |
| 1632 | } | 1638 | } |
| @@ -1636,6 +1642,9 @@ VkImageView ImageView::StencilView() { | |||
| 1636 | } | 1642 | } |
| 1637 | 1643 | ||
| 1638 | VkImageView ImageView::ColorView() { | 1644 | VkImageView ImageView::ColorView() { |
| 1645 | if (!image_handle) { | ||
| 1646 | return VK_NULL_HANDLE; | ||
| 1647 | } | ||
| 1639 | if (color_view) { | 1648 | if (color_view) { |
| 1640 | return *color_view; | 1649 | return *color_view; |
| 1641 | } | 1650 | } |
| @@ -1645,6 +1654,9 @@ VkImageView ImageView::ColorView() { | |||
| 1645 | 1654 | ||
| 1646 | VkImageView ImageView::StorageView(Shader::TextureType texture_type, | 1655 | VkImageView ImageView::StorageView(Shader::TextureType texture_type, |
| 1647 | Shader::ImageFormat image_format) { | 1656 | Shader::ImageFormat image_format) { |
| 1657 | if (!image_handle) { | ||
| 1658 | return VK_NULL_HANDLE; | ||
| 1659 | } | ||
| 1648 | if (image_format == Shader::ImageFormat::Typeless) { | 1660 | if (image_format == Shader::ImageFormat::Typeless) { |
| 1649 | return Handle(texture_type); | 1661 | return Handle(texture_type); |
| 1650 | } | 1662 | } |