Browse Source
Merge pull request #10206 from FernandoS27/astc-3d
Texture Cache: Fix 3D ASTC textures
pull/15/merge
liamwhite
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
7 additions and
7 deletions
-
src/video_core/renderer_opengl/gl_texture_cache.cpp
-
src/video_core/renderer_vulkan/vk_texture_cache.cpp
-
src/video_core/texture_cache/util.cpp
|
|
|
@ -231,7 +231,7 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4 |
|
|
|
|
|
|
|
[[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime, |
|
|
|
const VideoCommon::ImageInfo& info) { |
|
|
|
if (IsPixelFormatASTC(info.format) && !runtime.HasNativeASTC()) { |
|
|
|
if (IsPixelFormatASTC(info.format) && info.size.depth == 1 && !runtime.HasNativeASTC()) { |
|
|
|
return Settings::values.accelerate_astc.GetValue() && |
|
|
|
!Settings::values.async_astc.GetValue(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -1268,7 +1268,7 @@ Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu |
|
|
|
if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported()) { |
|
|
|
if (Settings::values.async_astc.GetValue()) { |
|
|
|
flags |= VideoCommon::ImageFlagBits::AsynchronousDecode; |
|
|
|
} else if (Settings::values.accelerate_astc.GetValue()) { |
|
|
|
} else if (Settings::values.accelerate_astc.GetValue() && info.size.depth == 1) { |
|
|
|
flags |= VideoCommon::ImageFlagBits::AcceleratedUpload; |
|
|
|
} |
|
|
|
flags |= VideoCommon::ImageFlagBits::Converted; |
|
|
|
|
|
|
|
@ -896,10 +896,10 @@ void ConvertImage(std::span<const u8> input, const ImageInfo& info, std::span<u8 |
|
|
|
ASSERT(copy.buffer_row_length == Common::AlignUp(mip_size.width, tile_size.width)); |
|
|
|
ASSERT(copy.buffer_image_height == Common::AlignUp(mip_size.height, tile_size.height)); |
|
|
|
if (IsPixelFormatASTC(info.format)) { |
|
|
|
ASSERT(copy.image_extent.depth == 1); |
|
|
|
Tegra::Texture::ASTC::Decompress(input.subspan(copy.buffer_offset), |
|
|
|
copy.image_extent.width, copy.image_extent.height, |
|
|
|
copy.image_subresource.num_layers, tile_size.width, |
|
|
|
Tegra::Texture::ASTC::Decompress( |
|
|
|
input.subspan(copy.buffer_offset), copy.image_extent.width, |
|
|
|
copy.image_extent.height, |
|
|
|
copy.image_subresource.num_layers * copy.image_extent.depth, tile_size.width, |
|
|
|
tile_size.height, output.subspan(output_offset)); |
|
|
|
} else { |
|
|
|
DecompressBC4(input.subspan(copy.buffer_offset), copy.image_extent, |
|
|
|
|