From 6374a4c4a80e88eea2e5914fb84e393c91ec65af Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 21 Jan 2018 15:03:06 +1000 Subject: AbstractTexture: Support multisampled abstract texture --- Source/Core/VideoCommon/AbstractTexture.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/AbstractTexture.cpp') diff --git a/Source/Core/VideoCommon/AbstractTexture.cpp b/Source/Core/VideoCommon/AbstractTexture.cpp index e4a42ad62b..98872f5c59 100644 --- a/Source/Core/VideoCommon/AbstractTexture.cpp +++ b/Source/Core/VideoCommon/AbstractTexture.cpp @@ -29,7 +29,7 @@ bool AbstractTexture::Save(const std::string& filename, unsigned int level) // Use a temporary staging texture for the download. Certainly not optimal, // but this is not a frequently-executed code path.. - TextureConfig readback_texture_config(level_width, level_height, 1, 1, + TextureConfig readback_texture_config(level_width, level_height, 1, 1, 1, AbstractTextureFormat::RGBA8, false); auto readback_texture = g_renderer->CreateStagingTexture(StagingTextureType::Readback, readback_texture_config); -- cgit v1.2.3 From 2a6d9e4713a9a540684795cb10ee6e6462178ba1 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 21 Jan 2018 23:59:19 +1000 Subject: AbstractTexture: Add support for depth textures/formats --- Source/Core/VideoCommon/AbstractTexture.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'Source/Core/VideoCommon/AbstractTexture.cpp') diff --git a/Source/Core/VideoCommon/AbstractTexture.cpp b/Source/Core/VideoCommon/AbstractTexture.cpp index 98872f5c59..0f7602a0df 100644 --- a/Source/Core/VideoCommon/AbstractTexture.cpp +++ b/Source/Core/VideoCommon/AbstractTexture.cpp @@ -64,6 +64,20 @@ bool AbstractTexture::IsCompressedFormat(AbstractTextureFormat format) } } +bool AbstractTexture::IsDepthFormat(AbstractTextureFormat format) +{ + switch (format) + { + case AbstractTextureFormat::D16: + case AbstractTextureFormat::D32F: + case AbstractTextureFormat::D32F_S8: + return true; + + default: + return false; + } +} + size_t AbstractTexture::CalculateStrideForFormat(AbstractTextureFormat format, u32 row_length) { switch (format) @@ -74,9 +88,16 @@ size_t AbstractTexture::CalculateStrideForFormat(AbstractTextureFormat format, u case AbstractTextureFormat::DXT5: case AbstractTextureFormat::BPTC: return static_cast(std::max(1u, row_length / 4)) * 16; + case AbstractTextureFormat::R16: + case AbstractTextureFormat::D16: + return static_cast(row_length) * 2; case AbstractTextureFormat::RGBA8: case AbstractTextureFormat::BGRA8: + case AbstractTextureFormat::R32F: + case AbstractTextureFormat::D32F: return static_cast(row_length) * 4; + case AbstractTextureFormat::D32F_S8: + return static_cast(row_length) * 8; default: PanicAlert("Unhandled texture format."); return 0; @@ -93,9 +114,16 @@ size_t AbstractTexture::GetTexelSizeForFormat(AbstractTextureFormat format) case AbstractTextureFormat::DXT5: case AbstractTextureFormat::BPTC: return 16; + case AbstractTextureFormat::R16: + case AbstractTextureFormat::D16: + return 2; case AbstractTextureFormat::RGBA8: case AbstractTextureFormat::BGRA8: + case AbstractTextureFormat::R32F: + case AbstractTextureFormat::D32F: return 4; + case AbstractTextureFormat::D32F_S8: + return 8; default: PanicAlert("Unhandled texture format."); return 0; -- cgit v1.2.3 From 4c24a697106471b33973da619a43167c947276aa Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 21 Jan 2018 20:22:45 +1000 Subject: VideoCommon: Add support for Abstract Framebuffers --- Source/Core/VideoCommon/AbstractTexture.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Source/Core/VideoCommon/AbstractTexture.cpp') diff --git a/Source/Core/VideoCommon/AbstractTexture.cpp b/Source/Core/VideoCommon/AbstractTexture.cpp index 0f7602a0df..8a870de4bb 100644 --- a/Source/Core/VideoCommon/AbstractTexture.cpp +++ b/Source/Core/VideoCommon/AbstractTexture.cpp @@ -78,6 +78,11 @@ bool AbstractTexture::IsDepthFormat(AbstractTextureFormat format) } } +bool AbstractTexture::IsStencilFormat(AbstractTextureFormat format) +{ + return format == AbstractTextureFormat::D32F_S8; +} + size_t AbstractTexture::CalculateStrideForFormat(AbstractTextureFormat format, u32 row_length) { switch (format) -- cgit v1.2.3