From 053ab585f407db82a537877f56d9be66262a3a23 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sun, 25 Feb 2018 12:48:32 +0300 Subject: [PATCH] gl/vk: Clean up some format casts - TODO: Byte ordering considerations on data casts --- rpcs3/Emu/RSX/GL/GLTextureCache.h | 19 ++++++++++++++++--- rpcs3/Emu/RSX/VK/VKHelpers.cpp | 8 ++++---- rpcs3/Emu/RSX/VK/VKTextureCache.h | 12 ++++++++++-- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLTextureCache.h b/rpcs3/Emu/RSX/GL/GLTextureCache.h index 33cf63b34f..c4cf33cb62 100644 --- a/rpcs3/Emu/RSX/GL/GLTextureCache.h +++ b/rpcs3/Emu/RSX/GL/GLTextureCache.h @@ -996,10 +996,23 @@ namespace gl return (ifmt == gl::texture::internal_format::r32f); case CELL_GCM_TEXTURE_R5G6B5: return (ifmt == gl::texture::internal_format::r5g6b5); - case CELL_GCM_TEXTURE_DEPTH24_D8: - return (ifmt == gl::texture::internal_format::depth24_stencil8 || ifmt == gl::texture::internal_format::depth32f_stencil8); case CELL_GCM_TEXTURE_A8R8G8B8: - return (ifmt == gl::texture::internal_format::rgba8 || ifmt == gl::texture::internal_format::depth24_stencil8 || ifmt == gl::texture::internal_format::depth32f_stencil8); + return (ifmt == gl::texture::internal_format::rgba8 || + ifmt == gl::texture::internal_format::depth24_stencil8 || + ifmt == gl::texture::internal_format::depth32f_stencil8); + case CELL_GCM_TEXTURE_B8: + return (ifmt == gl::texture::internal_format::r8); + case CELL_GCM_TEXTURE_G8B8: + return (ifmt == gl::texture::internal_format::rg8); + case CELL_GCM_TEXTURE_DEPTH24_D8: + case CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT: + return (ifmt == gl::texture::internal_format::depth24_stencil8 || + ifmt == gl::texture::internal_format::depth32f_stencil8 || + ifmt == gl::texture::internal_format::depth_stencil); + case CELL_GCM_TEXTURE_DEPTH16: + case CELL_GCM_TEXTURE_DEPTH16_FLOAT: + return (ifmt == gl::texture::internal_format::depth16 || + ifmt == gl::texture::internal_format::depth); } } diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.cpp b/rpcs3/Emu/RSX/VK/VKHelpers.cpp index 18e465dec2..4171af71ea 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.cpp +++ b/rpcs3/Emu/RSX/VK/VKHelpers.cpp @@ -121,10 +121,10 @@ namespace vk case CELL_GCM_TEXTURE_COMPRESSED_DXT45: return VK_FORMAT_BC3_UNORM_BLOCK; case CELL_GCM_TEXTURE_G8B8: return VK_FORMAT_R8G8_UNORM; case CELL_GCM_TEXTURE_R6G5B5: return VK_FORMAT_R5G6B5_UNORM_PACK16; // Expand, discard high bit? - case CELL_GCM_TEXTURE_DEPTH24_D8: return VK_FORMAT_R32_UINT; - case CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT: return VK_FORMAT_R32_SFLOAT; - case CELL_GCM_TEXTURE_DEPTH16: return VK_FORMAT_R16_UINT; - case CELL_GCM_TEXTURE_DEPTH16_FLOAT: return VK_FORMAT_R16_SFLOAT; + case CELL_GCM_TEXTURE_DEPTH24_D8: return VK_FORMAT_D24_UNORM_S8_UINT; //TODO + case CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT: return VK_FORMAT_D24_UNORM_S8_UINT; //TODO + case CELL_GCM_TEXTURE_DEPTH16: return VK_FORMAT_D16_UNORM; + case CELL_GCM_TEXTURE_DEPTH16_FLOAT: return VK_FORMAT_D16_UNORM; case CELL_GCM_TEXTURE_X16: return VK_FORMAT_R16_UNORM; case CELL_GCM_TEXTURE_Y16_X16: return VK_FORMAT_R16G16_UNORM; case CELL_GCM_TEXTURE_Y16_X16_FLOAT: return VK_FORMAT_R16G16_SFLOAT; diff --git a/rpcs3/Emu/RSX/VK/VKTextureCache.h b/rpcs3/Emu/RSX/VK/VKTextureCache.h index 5d6e000ebe..e0474de50a 100644 --- a/rpcs3/Emu/RSX/VK/VKTextureCache.h +++ b/rpcs3/Emu/RSX/VK/VKTextureCache.h @@ -1010,10 +1010,18 @@ namespace vk return (vk_format == VK_FORMAT_R32_SFLOAT); case CELL_GCM_TEXTURE_R5G6B5: return (vk_format == VK_FORMAT_R5G6B5_UNORM_PACK16); - case CELL_GCM_TEXTURE_DEPTH24_D8: - return (vk_format == VK_FORMAT_D24_UNORM_S8_UINT || vk_format == VK_FORMAT_D32_SFLOAT_S8_UINT); case CELL_GCM_TEXTURE_A8R8G8B8: return (vk_format == VK_FORMAT_B8G8R8A8_UNORM || vk_format == VK_FORMAT_D24_UNORM_S8_UINT || vk_format == VK_FORMAT_D32_SFLOAT_S8_UINT); + case CELL_GCM_TEXTURE_B8: + return (vk_format == VK_FORMAT_R8_UNORM); + case CELL_GCM_TEXTURE_G8B8: + return (vk_format == VK_FORMAT_R8G8_UNORM); + case CELL_GCM_TEXTURE_DEPTH24_D8: + case CELL_GCM_TEXTURE_DEPTH24_D8_FLOAT: + return (vk_format == VK_FORMAT_D24_UNORM_S8_UINT || vk_format == VK_FORMAT_D32_SFLOAT_S8_UINT); + case CELL_GCM_TEXTURE_DEPTH16: + case CELL_GCM_TEXTURE_DEPTH16_FLOAT: + return (vk_format == VK_FORMAT_D16_UNORM); } }