From f7c7cc54ed3c8e8d9e0d649421a919066b899dd9 Mon Sep 17 00:00:00 2001 From: DrChat Date: Mon, 30 Apr 2018 11:01:46 -0500 Subject: [PATCH] [GPU] TextureInfo::GetMaxMipLevels --- src/xenia/gpu/texture_info.cc | 5 +++++ src/xenia/gpu/texture_info.h | 2 ++ 2 files changed, 7 insertions(+) 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);