diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2015-11-30 10:02:06 +0100 |
|---|---|---|
| committer | Markus Wick <degasus@users.noreply.github.com> | 2015-11-30 10:02:06 +0100 |
| commit | 5eabbd0c1e19aa1c4be521065a0897c66ce1517c (patch) | |
| tree | ffa41fdd1f57fee329e363a02c1dba1e3097e251 /Source/Core/VideoBackends/OGL/TextureCache.cpp | |
| parent | 73c904f0d0cd4f2bffc5e0c2118530a31adf5032 (diff) | |
| parent | 21b708106c839e122a8911c06085200f399317a2 (diff) | |
Merge pull request #3298 from Sonicadvance1/max_texture_buffer_size
Make sure not to use a GL texture buffer past the max size.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/TextureCache.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/TextureCache.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index 5ffd87699b..3b07b44319 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include <algorithm> #include <cmath> #include <fstream> #include <vector> @@ -293,7 +294,17 @@ TextureCache::TextureCache() if (g_ActiveConfig.backend_info.bSupportsPaletteConversion) { - s_palette_stream_buffer = StreamBuffer::Create(GL_TEXTURE_BUFFER, 1024*1024); + s32 buffer_size = 1024 * 1024; + s32 max_buffer_size = 0; + + // The minimum MAX_TEXTURE_BUFFER_SIZE that the spec mandates + // is 65KB, we are asking for a 1MB buffer here. + // Make sure to check the maximum size and if it is below 1MB + // then use the maximum the hardware supports instead. + glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, &max_buffer_size); + buffer_size = std::min(buffer_size, max_buffer_size); + + s_palette_stream_buffer = StreamBuffer::Create(GL_TEXTURE_BUFFER, buffer_size); glGenTextures(1, &s_palette_resolv_texture); glBindTexture(GL_TEXTURE_BUFFER, s_palette_resolv_texture); glTexBuffer(GL_TEXTURE_BUFFER, GL_R16UI, s_palette_stream_buffer->m_buffer); |
