diff options
| author | 2022-02-18 09:44:34 +0100 | |
|---|---|---|
| committer | 2022-02-21 09:21:41 +0100 | |
| commit | 7712e46d64e0eb857527cc2592a5373cc7b45e20 (patch) | |
| tree | a89bc8c3494a3723ab5523de75669cf74095a998 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #7867 from german77/amiibo (diff) | |
| download | yuzu-7712e46d64e0eb857527cc2592a5373cc7b45e20.tar.gz yuzu-7712e46d64e0eb857527cc2592a5373cc7b45e20.tar.xz yuzu-7712e46d64e0eb857527cc2592a5373cc7b45e20.zip | |
vulkan_device: fix missing format in ANV
Currently Mesa's ANV driver does not support
VK_FORMAT_B5G6R5_UNORM_PACK16, implement an alternative for it.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 0ba56ff1e..0f62779de 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -554,10 +554,12 @@ void CopyBufferToImage(vk::CommandBuffer cmdbuf, VkBuffer src_buffer, VkImage im | |||
| 554 | }; | 554 | }; |
| 555 | } | 555 | } |
| 556 | 556 | ||
| 557 | [[nodiscard]] bool IsFormatFlipped(PixelFormat format) { | 557 | [[nodiscard]] bool IsFormatFlipped(PixelFormat format, bool emulate_bgr565) { |
| 558 | switch (format) { | 558 | switch (format) { |
| 559 | case PixelFormat::A1B5G5R5_UNORM: | 559 | case PixelFormat::A1B5G5R5_UNORM: |
| 560 | return true; | 560 | return true; |
| 561 | case PixelFormat::B5G6R5_UNORM: | ||
| 562 | return emulate_bgr565; | ||
| 561 | default: | 563 | default: |
| 562 | return false; | 564 | return false; |
| 563 | } | 565 | } |
| @@ -1488,7 +1490,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI | |||
| 1488 | }; | 1490 | }; |
| 1489 | if (!info.IsRenderTarget()) { | 1491 | if (!info.IsRenderTarget()) { |
| 1490 | swizzle = info.Swizzle(); | 1492 | swizzle = info.Swizzle(); |
| 1491 | if (IsFormatFlipped(format)) { | 1493 | if (IsFormatFlipped(format, device->MustEmulateBGR565())) { |
| 1492 | std::ranges::transform(swizzle, swizzle.begin(), SwapBlueRed); | 1494 | std::ranges::transform(swizzle, swizzle.begin(), SwapBlueRed); |
| 1493 | } | 1495 | } |
| 1494 | if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) { | 1496 | if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) { |