diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 614d61db4..0932fadc2 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #include <cstring> | 4 | #include <cstring> |
| 5 | #include <optional> | 5 | #include <optional> |
| 6 | #include "common/assert.h" | 6 | #include "common/assert.h" |
| 7 | #include "common/bit_util.h" | ||
| 7 | #include "common/scope_exit.h" | 8 | #include "common/scope_exit.h" |
| 8 | #include "common/settings.h" | 9 | #include "common/settings.h" |
| 9 | #include "core/core.h" | 10 | #include "core/core.h" |
| @@ -259,12 +260,13 @@ u32 Maxwell3D::GetMaxCurrentVertices() { | |||
| 259 | size_t Maxwell3D::EstimateIndexBufferSize() { | 260 | size_t Maxwell3D::EstimateIndexBufferSize() { |
| 260 | GPUVAddr start_address = regs.index_buffer.StartAddress(); | 261 | GPUVAddr start_address = regs.index_buffer.StartAddress(); |
| 261 | GPUVAddr end_address = regs.index_buffer.EndAddress(); | 262 | GPUVAddr end_address = regs.index_buffer.EndAddress(); |
| 262 | static constexpr std::array<size_t, 4> max_sizes = { | 263 | static constexpr std::array<size_t, 3> max_sizes = {std::numeric_limits<u8>::max(), |
| 263 | std::numeric_limits<u8>::max(), std::numeric_limits<u16>::max(), | 264 | std::numeric_limits<u16>::max(), |
| 264 | std::numeric_limits<u32>::max(), std::numeric_limits<u32>::max()}; | 265 | std::numeric_limits<u32>::max()}; |
| 265 | const size_t byte_size = regs.index_buffer.FormatSizeInBytes(); | 266 | const size_t byte_size = regs.index_buffer.FormatSizeInBytes(); |
| 267 | const size_t log2_byte_size = Common::Log2Ceil64(byte_size); | ||
| 266 | return std::min<size_t>( | 268 | return std::min<size_t>( |
| 267 | memory_manager.GetMemoryLayoutSize(start_address, byte_size * max_sizes[byte_size]) / | 269 | memory_manager.GetMemoryLayoutSize(start_address, byte_size * max_sizes[log2_byte_size]) / |
| 268 | byte_size, | 270 | byte_size, |
| 269 | static_cast<size_t>(end_address - start_address)); | 271 | static_cast<size_t>(end_address - start_address)); |
| 270 | } | 272 | } |