Revert "HACK: Avoid swizzling and reuploading ASTC image every frame"
This reverts commit b18c1fb1bb
.
This commit is contained in:
parent
b18c1fb1bb
commit
9058486b9b
|
@ -554,14 +554,7 @@ void TextureCacheRuntime::Finish() {
|
||||||
}
|
}
|
||||||
|
|
||||||
StagingBufferMap TextureCacheRuntime::UploadStagingBuffer(size_t size) {
|
StagingBufferMap TextureCacheRuntime::UploadStagingBuffer(size_t size) {
|
||||||
static StagingBufferMap result;
|
return staging_buffer_pool.RequestUploadBuffer(size);
|
||||||
static size_t last_size = 0;
|
|
||||||
if (size == last_size) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
last_size = size;
|
|
||||||
result = staging_buffer_pool.RequestUploadBuffer(size);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StagingBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size) {
|
StagingBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size) {
|
||||||
|
|
|
@ -214,7 +214,6 @@ StagingBufferPool::StagingBuffersCache& StagingBufferPool::GetCache(MemoryUsage
|
||||||
}
|
}
|
||||||
|
|
||||||
void StagingBufferPool::ReleaseCache(MemoryUsage usage) {
|
void StagingBufferPool::ReleaseCache(MemoryUsage usage) {
|
||||||
return;
|
|
||||||
ReleaseLevel(GetCache(usage), current_delete_level);
|
ReleaseLevel(GetCache(usage), current_delete_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -846,15 +846,7 @@ void TextureCacheRuntime::Finish() {
|
||||||
}
|
}
|
||||||
|
|
||||||
StagingBufferRef TextureCacheRuntime::UploadStagingBuffer(size_t size) {
|
StagingBufferRef TextureCacheRuntime::UploadStagingBuffer(size_t size) {
|
||||||
static StagingBufferRef result;
|
return staging_buffer_pool.Request(size, MemoryUsage::Upload);
|
||||||
static size_t last_size = 0;
|
|
||||||
if (size == last_size) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
LOG_ERROR(Debug, "Called");
|
|
||||||
last_size = size;
|
|
||||||
result = staging_buffer_pool.Request(size, MemoryUsage::Upload);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StagingBufferRef TextureCacheRuntime::DownloadStagingBuffer(size_t size, bool deferred) {
|
StagingBufferRef TextureCacheRuntime::DownloadStagingBuffer(size_t size, bool deferred) {
|
||||||
|
|
|
@ -1021,18 +1021,8 @@ void TextureCache<P>::UploadImageContents(Image& image, StagingBuffer& staging)
|
||||||
const GPUVAddr gpu_addr = image.gpu_addr;
|
const GPUVAddr gpu_addr = image.gpu_addr;
|
||||||
|
|
||||||
if (True(image.flags & ImageFlagBits::AcceleratedUpload)) {
|
if (True(image.flags & ImageFlagBits::AcceleratedUpload)) {
|
||||||
static u64 last_size = 0;
|
gpu_memory->ReadBlock(gpu_addr, mapped_span.data(), mapped_span.size_bytes(),
|
||||||
bool has_run = false;
|
VideoCommon::CacheType::NoTextureCache);
|
||||||
if (last_size == image.unswizzled_size_bytes) {
|
|
||||||
has_run = true;
|
|
||||||
}
|
|
||||||
last_size = image.unswizzled_size_bytes;
|
|
||||||
|
|
||||||
if (!has_run) {
|
|
||||||
LOG_ERROR(Debug, "Called");
|
|
||||||
gpu_memory->ReadBlock(gpu_addr, mapped_span.data(), mapped_span.size_bytes(),
|
|
||||||
VideoCommon::CacheType::NoTextureCache);
|
|
||||||
}
|
|
||||||
const auto uploads = FullUploadSwizzles(image.info);
|
const auto uploads = FullUploadSwizzles(image.info);
|
||||||
runtime.AccelerateImageUpload(image, staging, uploads);
|
runtime.AccelerateImageUpload(image, staging, uploads);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -88,7 +88,6 @@ void SwizzleImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <bool TO_LINEAR, u32 BYTES_PER_PIXEL>
|
template <bool TO_LINEAR, u32 BYTES_PER_PIXEL>
|
||||||
void SwizzleSubrectImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32 height,
|
void SwizzleSubrectImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32 height,
|
||||||
u32 depth, u32 origin_x, u32 origin_y, u32 extent_x, u32 num_lines,
|
u32 depth, u32 origin_x, u32 origin_y, u32 extent_x, u32 num_lines,
|
||||||
|
@ -96,14 +95,6 @@ void SwizzleSubrectImpl(std::span<u8> output, std::span<const u8> input, u32 wid
|
||||||
// The origin of the transformation can be configured here, leave it as zero as the current API
|
// The origin of the transformation can be configured here, leave it as zero as the current API
|
||||||
// doesn't expose it.
|
// doesn't expose it.
|
||||||
static constexpr u32 origin_z = 0;
|
static constexpr u32 origin_z = 0;
|
||||||
static u32 last_width = 0;
|
|
||||||
static u32 last_height = 0;
|
|
||||||
if (last_width == width && last_height == height) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LOG_ERROR(Debug, "Called");
|
|
||||||
last_width = width;
|
|
||||||
last_height = height;
|
|
||||||
|
|
||||||
// We can configure here a custom pitch
|
// We can configure here a custom pitch
|
||||||
// As it's not exposed 'width * BYTES_PER_PIXEL' will be the expected pitch.
|
// As it's not exposed 'width * BYTES_PER_PIXEL' will be the expected pitch.
|
||||||
|
|
Reference in New Issue