forked from ShuriZma/suyu
TextureCache: Eliminate format deduction as full depth conversion has been supported.
This commit is contained in:
parent
ea6fa044f3
commit
779f4ac72d
|
@ -1079,7 +1079,7 @@ ImageId TextureCache<P>::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, VA
|
||||||
template <class P>
|
template <class P>
|
||||||
typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
|
typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
|
||||||
const Tegra::Engines::Fermi2D::Surface& dst, const Tegra::Engines::Fermi2D::Surface& src) {
|
const Tegra::Engines::Fermi2D::Surface& dst, const Tegra::Engines::Fermi2D::Surface& src) {
|
||||||
static constexpr auto FIND_OPTIONS = RelaxedOptions::Format | RelaxedOptions::Samples;
|
static constexpr auto FIND_OPTIONS = RelaxedOptions::Samples;
|
||||||
const GPUVAddr dst_addr = dst.Address();
|
const GPUVAddr dst_addr = dst.Address();
|
||||||
const GPUVAddr src_addr = src.Address();
|
const GPUVAddr src_addr = src.Address();
|
||||||
ImageInfo dst_info(dst);
|
ImageInfo dst_info(dst);
|
||||||
|
@ -1093,9 +1093,7 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
|
||||||
const ImageBase* const dst_image = dst_id ? &slot_images[dst_id] : nullptr;
|
const ImageBase* const dst_image = dst_id ? &slot_images[dst_id] : nullptr;
|
||||||
const ImageBase* const src_image = src_id ? &slot_images[src_id] : nullptr;
|
const ImageBase* const src_image = src_id ? &slot_images[src_id] : nullptr;
|
||||||
DeduceBlitImages(dst_info, src_info, dst_image, src_image);
|
DeduceBlitImages(dst_info, src_info, dst_image, src_image);
|
||||||
if (GetFormatType(dst_info.format) != GetFormatType(src_info.format)) {
|
ASSERT(GetFormatType(dst_info.format) == GetFormatType(src_info.format));
|
||||||
continue;
|
|
||||||
}
|
|
||||||
RelaxedOptions find_options{};
|
RelaxedOptions find_options{};
|
||||||
if (src_info.num_samples > 1) {
|
if (src_info.num_samples > 1) {
|
||||||
// it's a resolve, we must enforce the same format.
|
// it's a resolve, we must enforce the same format.
|
||||||
|
|
|
@ -1152,36 +1152,14 @@ bool IsSubresource(const ImageInfo& candidate, const ImageBase& image, GPUVAddr
|
||||||
void DeduceBlitImages(ImageInfo& dst_info, ImageInfo& src_info, const ImageBase* dst,
|
void DeduceBlitImages(ImageInfo& dst_info, ImageInfo& src_info, const ImageBase* dst,
|
||||||
const ImageBase* src) {
|
const ImageBase* src) {
|
||||||
bool is_resolve = false;
|
bool is_resolve = false;
|
||||||
const auto original_src_format = src_info.format;
|
|
||||||
const auto original_dst_format = dst_info.format;
|
|
||||||
if (src) {
|
if (src) {
|
||||||
if (GetFormatType(src->info.format) != SurfaceType::ColorTexture) {
|
|
||||||
src_info.format = src->info.format;
|
|
||||||
}
|
|
||||||
is_resolve = src->info.num_samples > 1;
|
is_resolve = src->info.num_samples > 1;
|
||||||
src_info.num_samples = src->info.num_samples;
|
src_info.num_samples = src->info.num_samples;
|
||||||
src_info.size = src->info.size;
|
src_info.size = src->info.size;
|
||||||
}
|
}
|
||||||
if (dst && GetFormatType(dst->info.format) != SurfaceType::ColorTexture) {
|
|
||||||
dst_info.format = dst->info.format;
|
|
||||||
}
|
|
||||||
if (src && GetFormatType(src->info.format) != SurfaceType::ColorTexture) {
|
|
||||||
if (dst) {
|
if (dst) {
|
||||||
if (GetFormatType(dst->info.format) == SurfaceType::ColorTexture) {
|
dst_info.num_samples = dst->info.num_samples;
|
||||||
src_info.format = original_src_format;
|
dst_info.size = dst->info.size;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dst_info.format = src->info.format;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (dst && GetFormatType(dst->info.format) != SurfaceType::ColorTexture) {
|
|
||||||
if (src) {
|
|
||||||
if (GetFormatType(src->info.format) == SurfaceType::ColorTexture) {
|
|
||||||
dst_info.format = original_dst_format;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
src_info.format = dst->info.format;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ASSERT(!is_resolve || dst_info.format == src_info.format);
|
ASSERT(!is_resolve || dst_info.format == src_info.format);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue