summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrChat <arkolbed@gmail.com>2018-04-30 11:01:46 -0500
committerDrChat <arkolbed@gmail.com>2018-04-30 11:01:46 -0500
commitf7c7cc54ed3c8e8d9e0d649421a919066b899dd9 (patch)
treea2242e6f1c8b4396b1c23157f820aa0fd60f290b
parent62bee78edd105df21b3dac31fdbadce84be6608e (diff)
[GPU] TextureInfo::GetMaxMipLevels
-rw-r--r--src/xenia/gpu/texture_info.cc5
-rw-r--r--src/xenia/gpu/texture_info.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/xenia/gpu/texture_info.cc b/src/xenia/gpu/texture_info.cc
index 13cf23c81..655249304 100644
--- a/src/xenia/gpu/texture_info.cc
+++ b/src/xenia/gpu/texture_info.cc
@@ -204,6 +204,11 @@ void TextureInfo::CalculateTextureSizesCube(uint32_t width, uint32_t height,
input_length = size_cube.input_face_length * 6;
}
+uint32_t TextureInfo::GetMaxMipLevels(uint32_t width, uint32_t height,
+ uint32_t depth) {
+ return 1 + xe::log2_floor(std::max({width, height, depth}));
+}
+
bool TextureInfo::GetPackedTileOffset(const TextureInfo& texture_info,
uint32_t* out_offset_x,
uint32_t* out_offset_y) {
diff --git a/src/xenia/gpu/texture_info.h b/src/xenia/gpu/texture_info.h
index 3228a4768..821d5134b 100644
--- a/src/xenia/gpu/texture_info.h
+++ b/src/xenia/gpu/texture_info.h
@@ -304,6 +304,8 @@ struct TextureInfo {
uint32_t width, uint32_t height,
TextureInfo* out_info);
+ static uint32_t GetMaxMipLevels(uint32_t width, uint32_t height,
+ uint32_t depth);
static bool GetPackedTileOffset(const TextureInfo& texture_info,
uint32_t* out_offset_x,
uint32_t* out_offset_y);