diff options
| author | Filoppi <filippotarpini@hotmail.it> | 2023-06-08 03:17:20 +0300 |
|---|---|---|
| committer | Filoppi <filippotarpini@hotmail.it> | 2023-06-08 03:17:20 +0300 |
| commit | cdc53c046b47e8aaef70637dfdc8dffc22b5e4ac (patch) | |
| tree | 7da2d93aed8fe255ff13edb632599676bce590b7 /Source/Core/VideoBackends | |
| parent | 6743ca8e098268e7a11f26d626a15a09bd342577 (diff) | |
Video: add R10B10G10A2 and R16G16B16A16F texture types (needed by PR 11850)
Diffstat (limited to 'Source/Core/VideoBackends')
| -rw-r--r-- | Source/Core/VideoBackends/D3DCommon/D3DCommon.cpp | 20 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Metal/MTLUtil.mm | 4 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/OGL/OGLTexture.cpp | 12 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/VKTexture.cpp | 6 |
4 files changed, 42 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/D3DCommon/D3DCommon.cpp b/Source/Core/VideoBackends/D3DCommon/D3DCommon.cpp index 69014d8f2e..18406c2142 100644 --- a/Source/Core/VideoBackends/D3DCommon/D3DCommon.cpp +++ b/Source/Core/VideoBackends/D3DCommon/D3DCommon.cpp @@ -136,6 +136,10 @@ DXGI_FORMAT GetDXGIFormatForAbstractFormat(AbstractTextureFormat format, bool ty return typeless ? DXGI_FORMAT_R8G8B8A8_TYPELESS : DXGI_FORMAT_R8G8B8A8_UNORM; case AbstractTextureFormat::BGRA8: return typeless ? DXGI_FORMAT_B8G8R8A8_TYPELESS : DXGI_FORMAT_B8G8R8A8_UNORM; + case AbstractTextureFormat::RGB10_A2: + return typeless ? DXGI_FORMAT_R10G10B10A2_TYPELESS : DXGI_FORMAT_R10G10B10A2_UNORM; + case AbstractTextureFormat::RGBA16F: + return typeless ? DXGI_FORMAT_R16G16B16A16_TYPELESS : DXGI_FORMAT_R16G16B16A16_FLOAT; case AbstractTextureFormat::R16: return typeless ? DXGI_FORMAT_R16_TYPELESS : DXGI_FORMAT_R16_UNORM; case AbstractTextureFormat::R32F: @@ -169,6 +173,10 @@ DXGI_FORMAT GetSRVFormatForAbstractFormat(AbstractTextureFormat format) return DXGI_FORMAT_R8G8B8A8_UNORM; case AbstractTextureFormat::BGRA8: return DXGI_FORMAT_B8G8R8A8_UNORM; + case AbstractTextureFormat::RGB10_A2: + return DXGI_FORMAT_R10G10B10A2_UNORM; + case AbstractTextureFormat::RGBA16F: + return DXGI_FORMAT_R16G16B16A16_FLOAT; case AbstractTextureFormat::R16: return DXGI_FORMAT_R16_UNORM; case AbstractTextureFormat::R32F: @@ -195,6 +203,10 @@ DXGI_FORMAT GetRTVFormatForAbstractFormat(AbstractTextureFormat format, bool int return integer ? DXGI_FORMAT_R8G8B8A8_UINT : DXGI_FORMAT_R8G8B8A8_UNORM; case AbstractTextureFormat::BGRA8: return DXGI_FORMAT_B8G8R8A8_UNORM; + case AbstractTextureFormat::RGB10_A2: + return DXGI_FORMAT_R10G10B10A2_UNORM; + case AbstractTextureFormat::RGBA16F: + return DXGI_FORMAT_R16G16B16A16_FLOAT; case AbstractTextureFormat::R16: return integer ? DXGI_FORMAT_R16_UINT : DXGI_FORMAT_R16_UNORM; case AbstractTextureFormat::R32F: @@ -235,6 +247,14 @@ AbstractTextureFormat GetAbstractFormatForDXGIFormat(DXGI_FORMAT format) case DXGI_FORMAT_B8G8R8A8_TYPELESS: return AbstractTextureFormat::BGRA8; + case DXGI_FORMAT_R10G10B10A2_UNORM: + case DXGI_FORMAT_R10G10B10A2_TYPELESS: + return AbstractTextureFormat::RGB10_A2; + + case DXGI_FORMAT_R16G16B16A16_FLOAT: + case DXGI_FORMAT_R16G16B16A16_TYPELESS: + return AbstractTextureFormat::RGBA16F; + case DXGI_FORMAT_R16_UINT: case DXGI_FORMAT_R16_UNORM: case DXGI_FORMAT_R16_TYPELESS: diff --git a/Source/Core/VideoBackends/Metal/MTLUtil.mm b/Source/Core/VideoBackends/Metal/MTLUtil.mm index c6b95d674f..d10aa4b5f0 100644 --- a/Source/Core/VideoBackends/Metal/MTLUtil.mm +++ b/Source/Core/VideoBackends/Metal/MTLUtil.mm @@ -263,6 +263,8 @@ AbstractTextureFormat Metal::Util::ToAbstract(MTLPixelFormat format) { case MTLPixelFormatRGBA8Unorm: return AbstractTextureFormat::RGBA8; case MTLPixelFormatBGRA8Unorm: return AbstractTextureFormat::BGRA8; + case MTLPixelFormatRGB10A2Unorm: return AbstractTextureFormat::RGB10_A2; + case MTLPixelFormatRGBA16Float: return AbstractTextureFormat::RGBA16F; case MTLPixelFormatBC1_RGBA: return AbstractTextureFormat::DXT1; case MTLPixelFormatBC2_RGBA: return AbstractTextureFormat::DXT3; case MTLPixelFormatBC3_RGBA: return AbstractTextureFormat::DXT5; @@ -289,6 +291,8 @@ MTLPixelFormat Metal::Util::FromAbstract(AbstractTextureFormat format) { case AbstractTextureFormat::RGBA8: return MTLPixelFormatRGBA8Unorm; case AbstractTextureFormat::BGRA8: return MTLPixelFormatBGRA8Unorm; + case AbstractTextureFormat::RGB10_A2: return MTLPixelFormatRGB10A2Unorm; + case AbstractTextureFormat::RGBA16F: return MTLPixelFormatRGBA16Float; case AbstractTextureFormat::DXT1: return MTLPixelFormatBC1_RGBA; case AbstractTextureFormat::DXT3: return MTLPixelFormatBC2_RGBA; case AbstractTextureFormat::DXT5: return MTLPixelFormatBC3_RGBA; diff --git a/Source/Core/VideoBackends/OGL/OGLTexture.cpp b/Source/Core/VideoBackends/OGL/OGLTexture.cpp index d3274a3528..f356e52d32 100644 --- a/Source/Core/VideoBackends/OGL/OGLTexture.cpp +++ b/Source/Core/VideoBackends/OGL/OGLTexture.cpp @@ -33,6 +33,10 @@ GLenum GetGLInternalFormatForTextureFormat(AbstractTextureFormat format, bool st return storage ? GL_RGBA8 : GL_RGBA; case AbstractTextureFormat::BGRA8: return storage ? GL_RGBA8 : GL_BGRA; + case AbstractTextureFormat::RGB10_A2: + return GL_RGB10_A2; + case AbstractTextureFormat::RGBA16F: + return GL_RGBA16F; case AbstractTextureFormat::R16: return GL_R16; case AbstractTextureFormat::R32F: @@ -59,6 +63,10 @@ GLenum GetGLFormatForTextureFormat(AbstractTextureFormat format) return GL_RGBA; case AbstractTextureFormat::BGRA8: return GL_BGRA; + case AbstractTextureFormat::RGB10_A2: + return GL_RGB10_A2; + case AbstractTextureFormat::RGBA16F: + return GL_RGBA16F; case AbstractTextureFormat::R16: case AbstractTextureFormat::R32F: return GL_RED; @@ -81,6 +89,10 @@ GLenum GetGLTypeForTextureFormat(AbstractTextureFormat format) case AbstractTextureFormat::RGBA8: case AbstractTextureFormat::BGRA8: return GL_UNSIGNED_BYTE; + case AbstractTextureFormat::RGB10_A2: + return GL_UNSIGNED_INT_2_10_10_10_REV; + case AbstractTextureFormat::RGBA16F: + return GL_HALF_FLOAT; case AbstractTextureFormat::R16: return GL_UNSIGNED_SHORT; case AbstractTextureFormat::R32F: diff --git a/Source/Core/VideoBackends/Vulkan/VKTexture.cpp b/Source/Core/VideoBackends/Vulkan/VKTexture.cpp index 14b33d2376..201ee5f84f 100644 --- a/Source/Core/VideoBackends/Vulkan/VKTexture.cpp +++ b/Source/Core/VideoBackends/Vulkan/VKTexture.cpp @@ -189,6 +189,12 @@ VkFormat VKTexture::GetVkFormatForHostTextureFormat(AbstractTextureFormat format case AbstractTextureFormat::BGRA8: return VK_FORMAT_B8G8R8A8_UNORM; + case AbstractTextureFormat::RGB10_A2: + return VK_FORMAT_A2R10G10B10_UNORM_PACK32; + + case AbstractTextureFormat::RGBA16F: + return VK_FORMAT_R16G16B16A16_SFLOAT; + case AbstractTextureFormat::R16: return VK_FORMAT_R16_UNORM; |
