summaryrefslogtreecommitdiffstats
path: root/src/video_core/texture_cache/surface_base.h
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-05-08 02:28:31 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-06-21 02:36:12 +0200
commit03d10ea3b420c923c14a11c86b47e2f00bc30e00 (patch)
treec91e72f41edadac641a0b2609c05fbdf436ee6d5 /src/video_core/texture_cache/surface_base.h
parentCorrect Mipmaps View method in Texture Cache (diff)
downloadyuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.tar
yuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.tar.gz
yuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.tar.bz2
yuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.tar.lz
yuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.tar.xz
yuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.tar.zst
yuzu-03d10ea3b420c923c14a11c86b47e2f00bc30e00.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/texture_cache/surface_base.h53
1 files changed, 20 insertions, 33 deletions
diff --git a/src/video_core/texture_cache/surface_base.h b/src/video_core/texture_cache/surface_base.h
index 486585c9c..029cfb055 100644
--- a/src/video_core/texture_cache/surface_base.h
+++ b/src/video_core/texture_cache/surface_base.h
@@ -149,45 +149,32 @@ public:
}
std::vector<CopyParams> BreakDown(const SurfaceParams& in_params) const {
- auto set_up_copy = [](CopyParams& cp, const u32 width, const u32 height, const u32 depth,
- const u32 level) {
- cp.source_x = 0;
- cp.source_y = 0;
- cp.source_z = 0;
- cp.dest_x = 0;
- cp.dest_y = 0;
- cp.dest_z = 0;
- cp.source_level = level;
- cp.dest_level = level;
- cp.width = width;
- cp.height = height;
- cp.depth = depth;
- };
- const u32 layers = params.depth;
- const u32 mipmaps = params.num_levels;
+ std::vector<CopyParams> result;
+ const u32 layers{params.depth};
+ const u32 mipmaps{params.num_levels};
+
if (params.is_layered) {
- std::vector<CopyParams> result{layers * mipmaps};
- for (std::size_t layer = 0; layer < layers; layer++) {
- const u32 layer_offset = layer * mipmaps;
- for (std::size_t level = 0; level < mipmaps; level++) {
- CopyParams& cp = result[layer_offset + level];
- const u32 width =
- std::min(params.GetMipWidth(level), in_params.GetMipWidth(level));
- const u32 height =
- std::min(params.GetMipHeight(level), in_params.GetMipHeight(level));
- set_up_copy(cp, width, height, layer, level);
+ result.reserve(static_cast<std::size_t>(layers) * static_cast<std::size_t>(mipmaps));
+ for (u32 layer = 0; layer < layers; layer++) {
+ const u32 layer_offset{layer * mipmaps};
+ for (u32 level = 0; level < mipmaps; level++) {
+ const u32 width{
+ std::min(params.GetMipWidth(level), in_params.GetMipWidth(level))};
+ const u32 height{
+ std::min(params.GetMipHeight(level), in_params.GetMipHeight(level))};
+ result.emplace_back(width, height, layer, level);
}
}
return result;
+
} else {
- std::vector<CopyParams> result{mipmaps};
+ result.reserve(mipmaps);
for (std::size_t level = 0; level < mipmaps; level++) {
- CopyParams& cp = result[level];
- const u32 width = std::min(params.GetMipWidth(level), in_params.GetMipWidth(level));
- const u32 height =
- std::min(params.GetMipHeight(level), in_params.GetMipHeight(level));
- const u32 depth = std::min(params.GetMipDepth(level), in_params.GetMipDepth(level));
- set_up_copy(cp, width, height, depth, level);
+ const u32 width{std::min(params.GetMipWidth(level), in_params.GetMipWidth(level))};
+ const u32 height{
+ std::min(params.GetMipHeight(level), in_params.GetMipHeight(level))};
+ const u32 depth{std::min(params.GetMipDepth(level), in_params.GetMipDepth(level))};
+ result.emplace_back(width, height, depth, level);
}
return result;
}