texture_cache: Don't download depth images

This commit is contained in:
IndecisiveTurtle 2025-07-07 12:18:29 +03:00
parent 4238cd9fac
commit ac430ca0d0

View file

@ -72,22 +72,22 @@ void TextureCache::DownloadImageMemory(ImageId image_id) {
return; return;
} }
auto& download_buffer = buffer_cache.GetUtilityBuffer(MemoryUsage::Download); auto& download_buffer = buffer_cache.GetUtilityBuffer(MemoryUsage::Download);
const u32 download_size = image.info.size.width * image.info.size.height * const u32 download_size = image.info.pitch * image.info.size.height *
image.info.resources.layers * (image.info.num_bits / 8); image.info.resources.layers * (image.info.num_bits / 8);
// ASSERT(download_size == image.info.guest_size); ASSERT(download_size <= image.info.guest_size);
const auto [download, offset] = download_buffer.Map(download_size); const auto [download, offset] = download_buffer.Map(download_size);
download_buffer.Commit(); download_buffer.Commit();
const vk::BufferImageCopy image_download = { const vk::BufferImageCopy image_download = {
.bufferOffset = offset, .bufferOffset = offset,
.bufferRowLength = 0, .bufferRowLength = image.info.pitch,
.bufferImageHeight = 0, .bufferImageHeight = image.info.size.height,
.imageSubresource = .imageSubresource =
{ {
.aspectMask = image.info.IsDepthStencil() ? vk::ImageAspectFlagBits::eDepth .aspectMask = image.info.IsDepthStencil() ? vk::ImageAspectFlagBits::eDepth
: vk::ImageAspectFlagBits::eColor, : vk::ImageAspectFlagBits::eColor,
.mipLevel = 0, .mipLevel = 0,
.baseArrayLayer = 0, .baseArrayLayer = 0,
.layerCount = VK_REMAINING_ARRAY_LAYERS, .layerCount = image.info.resources.layers,
}, },
.imageOffset = {0, 0, 0}, .imageOffset = {0, 0, 0},
.imageExtent = {image.info.size.width, image.info.size.height, 1}, .imageExtent = {image.info.size.width, image.info.size.height, 1},
@ -528,9 +528,6 @@ ImageView& TextureCache::FindDepthTarget(BaseDesc& desc) {
const ImageId image_id = FindImage(desc); const ImageId image_id = FindImage(desc);
Image& image = slot_images[image_id]; Image& image = slot_images[image_id];
image.flags |= ImageFlagBits::GpuModified; image.flags |= ImageFlagBits::GpuModified;
if (image.info.tiling_mode == AmdGpu::TilingMode::Display_Linear) {
download_images.emplace(image_id);
}
image.usage.depth_target = 1u; image.usage.depth_target = 1u;
image.usage.stencil = image.info.HasStencil(); image.usage.stencil = image.info.HasStencil();
UpdateImage(image_id); UpdateImage(image_id);