diff options
| author | 2023-09-21 15:33:44 +0300 | |
|---|---|---|
| committer | 2023-09-21 15:33:44 +0300 | |
| commit | 4a59dc2947e2a0ce92c0f0b1691ba18e75feb4a2 (patch) | |
| tree | 42ab09576b8fa4028dfd74cc1803a173a6e4c9c9 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #11542 from t895/touch-offset-fix (diff) | |
| download | yuzu-4a59dc2947e2a0ce92c0f0b1691ba18e75feb4a2.tar.gz yuzu-4a59dc2947e2a0ce92c0f0b1691ba18e75feb4a2.tar.xz yuzu-4a59dc2947e2a0ce92c0f0b1691ba18e75feb4a2.zip | |
renderer_vulkan: Correct component order for A4B4G4R4_UNORM
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 10 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 35bf80ea3..208e88533 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp | |||
| @@ -185,7 +185,7 @@ struct FormatTuple { | |||
| 185 | {VK_FORMAT_BC2_SRGB_BLOCK}, // BC2_SRGB | 185 | {VK_FORMAT_BC2_SRGB_BLOCK}, // BC2_SRGB |
| 186 | {VK_FORMAT_BC3_SRGB_BLOCK}, // BC3_SRGB | 186 | {VK_FORMAT_BC3_SRGB_BLOCK}, // BC3_SRGB |
| 187 | {VK_FORMAT_BC7_SRGB_BLOCK}, // BC7_SRGB | 187 | {VK_FORMAT_BC7_SRGB_BLOCK}, // BC7_SRGB |
| 188 | {VK_FORMAT_R4G4B4A4_UNORM_PACK16}, // A4B4G4R4_UNORM | 188 | {VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT}, // A4B4G4R4_UNORM |
| 189 | {VK_FORMAT_R4G4_UNORM_PACK8}, // G4R4_UNORM | 189 | {VK_FORMAT_R4G4_UNORM_PACK8}, // G4R4_UNORM |
| 190 | {VK_FORMAT_ASTC_4x4_SRGB_BLOCK}, // ASTC_2D_4X4_SRGB | 190 | {VK_FORMAT_ASTC_4x4_SRGB_BLOCK}, // ASTC_2D_4X4_SRGB |
| 191 | {VK_FORMAT_ASTC_8x8_SRGB_BLOCK}, // ASTC_2D_8X8_SRGB | 191 | {VK_FORMAT_ASTC_8x8_SRGB_BLOCK}, // ASTC_2D_8X8_SRGB |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index b3e17c332..285a50ea4 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -600,7 +600,7 @@ void CopyBufferToImage(vk::CommandBuffer cmdbuf, VkBuffer src_buffer, VkImage im | |||
| 600 | } | 600 | } |
| 601 | 601 | ||
| 602 | void TryTransformSwizzleIfNeeded(PixelFormat format, std::array<SwizzleSource, 4>& swizzle, | 602 | void TryTransformSwizzleIfNeeded(PixelFormat format, std::array<SwizzleSource, 4>& swizzle, |
| 603 | bool emulate_bgr565) { | 603 | bool emulate_bgr565, bool emulate_a4b4g4r4) { |
| 604 | switch (format) { | 604 | switch (format) { |
| 605 | case PixelFormat::A1B5G5R5_UNORM: | 605 | case PixelFormat::A1B5G5R5_UNORM: |
| 606 | std::ranges::transform(swizzle, swizzle.begin(), SwapBlueRed); | 606 | std::ranges::transform(swizzle, swizzle.begin(), SwapBlueRed); |
| @@ -616,6 +616,11 @@ void TryTransformSwizzleIfNeeded(PixelFormat format, std::array<SwizzleSource, 4 | |||
| 616 | case PixelFormat::G4R4_UNORM: | 616 | case PixelFormat::G4R4_UNORM: |
| 617 | std::ranges::transform(swizzle, swizzle.begin(), SwapGreenRed); | 617 | std::ranges::transform(swizzle, swizzle.begin(), SwapGreenRed); |
| 618 | break; | 618 | break; |
| 619 | case PixelFormat::A4B4G4R4_UNORM: | ||
| 620 | if (emulate_a4b4g4r4) { | ||
| 621 | std::ranges::reverse(swizzle); | ||
| 622 | } | ||
| 623 | break; | ||
| 619 | default: | 624 | default: |
| 620 | break; | 625 | break; |
| 621 | } | 626 | } |
| @@ -1649,7 +1654,8 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI | |||
| 1649 | }; | 1654 | }; |
| 1650 | if (!info.IsRenderTarget()) { | 1655 | if (!info.IsRenderTarget()) { |
| 1651 | swizzle = info.Swizzle(); | 1656 | swizzle = info.Swizzle(); |
| 1652 | TryTransformSwizzleIfNeeded(format, swizzle, device->MustEmulateBGR565()); | 1657 | TryTransformSwizzleIfNeeded(format, swizzle, device->MustEmulateBGR565(), |
| 1658 | !device->IsExt4444FormatsSupported()); | ||
| 1653 | if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) { | 1659 | if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) { |
| 1654 | std::ranges::transform(swizzle, swizzle.begin(), ConvertGreenRed); | 1660 | std::ranges::transform(swizzle, swizzle.begin(), ConvertGreenRed); |
| 1655 | } | 1661 | } |