Texture Cache: Fix ASTC textures
This commit is contained in:
		| @@ -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,11 +896,11 @@ 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, | ||||
|                                              tile_size.height, output.subspan(output_offset)); | ||||
|             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, | ||||
|                           output.subspan(output_offset)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Fernando Sahmkow
					Fernando Sahmkow