aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/surface.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2025-07-26 05:58:04 +0200
committercrueter <crueter@eden-emu.dev>2025-07-26 05:58:04 +0200
commitc7c2ed7b46b82ce1fe85a45b32a8fe9de72d3abb (patch)
treeded87b0794aed8905ed1021fe387c83a8c734baf /src/video_core/surface.cpp
parentac675c52966f656dd308346b982393199d32ead3 (diff)
[vk] copy incompatible alpha patch 1.5(2) (#123)
Avoid copy size incompatible textures and reinterpret it instead. Uses existing logic to properly re-interpret to a compatible texture. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/123 Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/video_core/surface.cpp')
-rw-r--r--src/video_core/surface.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp
index 9055b1b929..c791bfa4e4 100644
--- a/src/video_core/surface.cpp
+++ b/src/video_core/surface.cpp
@@ -237,6 +237,38 @@ SurfaceType GetFormatType(PixelFormat pixel_format) {
return SurfaceType::Invalid;
}
+bool HasAlpha(PixelFormat pixel_format) {
+ switch (pixel_format) {
+ case PixelFormat::A8B8G8R8_UNORM:
+ case PixelFormat::A8B8G8R8_SNORM:
+ case PixelFormat::A8B8G8R8_SINT:
+ case PixelFormat::A8B8G8R8_UINT:
+ case PixelFormat::A1R5G5B5_UNORM:
+ case PixelFormat::A2B10G10R10_UNORM:
+ case PixelFormat::A2B10G10R10_UINT:
+ case PixelFormat::A2R10G10B10_UNORM:
+ case PixelFormat::A1B5G5R5_UNORM:
+ case PixelFormat::A5B5G5R1_UNORM:
+ case PixelFormat::R16G16B16A16_FLOAT:
+ case PixelFormat::R16G16B16A16_UNORM:
+ case PixelFormat::R16G16B16A16_SNORM:
+ case PixelFormat::R16G16B16A16_SINT:
+ case PixelFormat::R16G16B16A16_UINT:
+ case PixelFormat::R32G32B32A32_UINT:
+ case PixelFormat::BC1_RGBA_UNORM:
+ case PixelFormat::B8G8R8A8_UNORM:
+ case PixelFormat::R32G32B32A32_FLOAT:
+ case PixelFormat::R32G32B32A32_SINT:
+ case PixelFormat::A8B8G8R8_SRGB:
+ case PixelFormat::B8G8R8A8_SRGB:
+ case PixelFormat::BC1_RGBA_SRGB:
+ case PixelFormat::A4B4G4R4_UNORM:
+ return true;
+ default:
+ return false;
+ }
+}
+
bool IsPixelFormatASTC(PixelFormat format) {
switch (format) {
case PixelFormat::ASTC_2D_4X4_UNORM: