summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/HiresTextures.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-03-27 12:37:04 -0400
committerLioncash <mathew1800@gmail.com>2018-03-27 15:39:05 -0400
commit2da8d98b2f94a33e337d37dc7153e5ba445961f3 (patch)
tree518f28e986c09058f851515ea47d6668fec5627b /Source/Core/VideoCommon/HiresTextures.cpp
parentd5a1edba09f95b868c03879a4c05ffef9a3d80d8 (diff)
HiresTextures: Use std::minmax or std::minmax_element where applicable in GenBaseName()
Minimizes repetition. std::minmax_element can be used for the 256 * 2 case, as it's only performing byte comparisons and thus, there will always be an element smaller than 0xffff, so it doesn't need to be included in the set of compared values.
Diffstat (limited to 'Source/Core/VideoCommon/HiresTextures.cpp')
-rw-r--r--Source/Core/VideoCommon/HiresTextures.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp
index 9df399365f..c74b4e617d 100644
--- a/Source/Core/VideoCommon/HiresTextures.cpp
+++ b/Source/Core/VideoCommon/HiresTextures.cpp
@@ -12,6 +12,7 @@
#include <mutex>
#include <string>
#include <thread>
+#include <tuple>
#include <unordered_map>
#include <utility>
#include <vector>
@@ -229,25 +230,23 @@ std::string HiresTexture::GenBaseName(const u8* texture, size_t texture_size, co
case 16 * 2:
for (size_t i = 0; i < texture_size; i++)
{
- min = std::min<u32>(min, texture[i] & 0xf);
- min = std::min<u32>(min, texture[i] >> 4);
- max = std::max<u32>(max, texture[i] & 0xf);
- max = std::max<u32>(max, texture[i] >> 4);
+ const u32 low_nibble = texture[i] & 0xf;
+ const u32 high_nibble = texture[i] >> 4;
+ std::tie(min, max) = std::minmax({min, max, low_nibble, high_nibble});
}
break;
case 256 * 2:
- for (size_t i = 0; i < texture_size; i++)
- {
- min = std::min<u32>(min, texture[i]);
- max = std::max<u32>(max, texture[i]);
- }
+ {
+ const auto minmax = std::minmax_element(texture, texture + texture_size);
+ min = *minmax.first;
+ max = *minmax.second;
break;
+ }
case 16384 * 2:
for (size_t i = 0; i < texture_size; i += sizeof(u16))
{
- const u16 texture_halfword = Common::swap16(texture[i]) & 0x3fff;
- min = std::min<u32>(min, texture_halfword);
- max = std::max<u32>(max, texture_halfword);
+ const u32 texture_halfword = Common::swap16(texture[i]) & 0x3fff;
+ std::tie(min, max) = std::minmax({min, max, texture_halfword});
}
break;
}